掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
型なしファイルでデータを書き込むには (ID:11082)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> ソートさせたりテキストファイルで配布するというのを考えた場合 TComment=record Bamei:string;//馬名 Comment:string;//コメント end; こんなデータなら、2行のテキストですから簡単です。レコード型ではなく クラスにします。 TComment = class(TObject) Bamei:string;//馬名 Comment:string;//コメント end; そして、TObjectList で管理します。追加。挿入、削除が簡単です。全リストを 示します。 unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Contnrs, StdCtrls; type TForm1 = class(TForm) Memo1: TMemo; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); private { Private 宣言 } public ol:TObjectList; end; TComment = class(TObject) Bamei:string;//馬名 Comment:string;//コメント end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); begin ol := TObjectList.Create(true); end; procedure TForm1.FormDestroy(Sender: TObject); begin ol.Free; end; // データ4つ追加 procedure TForm1.Button1Click(Sender: TObject); var cm:TComment; begin cm := TComment.Create; cm.Bamei := 'はるうらら'; cm.Comment := 'はるが好き'; ol.Add(cm); cm := TComment.Create; cm.Bamei := 'はいせいこー'; cm.Comment := 'わからん'; ol.Add(cm); cm := TComment.Create; cm.Bamei := 'とうしょうぼーい'; cm.Comment := 'よくわからん'; ol.Add(cm); cm := TComment.Create; cm.Bamei := 'あきうらら'; cm.Comment := '秋がすき'; ol.Add(cm); end; // 一覧表示 procedure TForm1.Button2Click(Sender: TObject); var i:integer; begin Memo1.Clear; for i := 0 to ol.Count-1 do with TComment(ol[i]) do Memo1.Lines.Add(Format(' 馬名 : %s コメント : %s',[Bamei,Comment])); end; // 馬名でソート function BameiSort(Item1, Item2: Pointer): integer; begin result := AnsiCompareStr(TComment(Item1).Bamei,TComment(Item2).Bamei); end; procedure TForm1.Button3Click(Sender: TObject); begin ol.Sort(BameiSort); Button2Click(Sender); end; // ファイルにセーブ procedure TForm1.Button4Click(Sender: TObject); var sl:TStringList; i:integer; begin sl := TStringList.Create; try for i := 0 to ol.Count-1 do begin sl.Add(TComment(ol[i]).Bamei); sl.Add(TComment(ol[i]).Comment); end; sl.SaveToFile('c:TestBamei.txt'); finally sl.Free; end; end; // ファイルからロード procedure TForm1.Button5Click(Sender: TObject); var sl:TStringList; i:integer; cm:TComment; begin ol.Clear; sl := TStringList.Create; try sl.LoadFromFile('c:TestBamei.txt'); for i := 0 to (sl.Count div 2) -1 do begin cm := TComment.Create; cm.Bamei := sl[i*2]; cm.Comment := sl[i*2+1]; ol.Add(cm); end; finally sl.Free; end; Button2Click(Sender); end; end.
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.