私はVirtualStringTreeコンポーネントを使用して簡単な連絡先マネージャを実装しようとしています。データ構造についてsvTreeデータ構造を保存して読み込むにはどうしたらいいですか?
、私は別のスタックで言及されたリナ、によってsvTreeを使用しています:私はそれがすべてのテキストが含まれています唯一の3つの列とリストビューコンポーネントのように見えるように設定していますオーバーフローの質問。
私はこのようなレコードを宣言している:私はこのようなTEditsからデータを追加してい
procedure TForm1.FormCreate(Sender: TObject);
begin
MyTree := TSVTree<TMainData>.Create(False);
MyTree.VirtualTree := vst1;
end;
:
procedure TForm1.BuildStructure;
var
svNode: TSVTreeNode<TMainData>;
Data: TMainData;
begin
MyTree.BeginUpdate;
try
Data.Name := edtname.Text;
Data.Email := edtEmail.Text;
Data.Password := edtPassword.Text;
svNode := MyTree.AddChild(nil, Data);
finally
MyTree.EndUpdate;
end;
Label1.Caption := 'Count: '+IntToStr(MyTree.TotalCount);
end;
を私はこれを持っているフォームのOnCreateイベントで
type
TMainData = record
Name, Email, Password: string;
end;
を
これをストリームまたはロードするファイルに保存するにはどうすればよいですか?私はMyTree.SaveToFile('C:/Test.dat')
とMyTree.LoadFromFile('C:/Test.dat')
を使用しようとしましたが、ロードされたときにツリービューにデータが含まれず、空の行のみが含まれています。
procedure TForm.VTLoadNode(Sender: TBaseVirtualTree;
Node: PVirtualNode; Stream: TStream);
begin
// Load Node Data record from the stream
end;
procedure TForm.VTSaveNode(Sender: TBaseVirtualTree;
Node: PVirtualNode; Stream: TStream);
begin
// Save Node Data record to the stream
end;
ありがとうございました、私は今働いており、私は何が欠けていたかを見ています。私はそれを "親切"にしようとしていましたが、 'Stream.WriteString'の部分で+演算子を使ってそれらをすべて組み合わせました!ドゥー! - 私があなたの答えを使用していた唯一の問題は、互換性のない型: 'Assigned(Node.FValue)then'ですが、この部分を削除するとコンパイルされて動作します。これが必要なのですか、省略された場合はさらに問題を引き起こしますか? – Shambhala
データ構造を入力した場合やレコードを使用している場合は、この行は必要ありません。基本的には、VirtualStringTreeを使って作業するときにこれを書いています。 – Linas
ご協力いただきありがとうございます。 – Shambhala