下記のようにInsert を使用しても格納したデータが消えてしまいます。
Var
buf: Tstrings
Begin
buf:=Tstringlist.create
buf.insert (0, ``)
buf.insert (1, ``)
buf.insert (1, `abc`)
buf.insert (0, `def`)
End
最終的にbufの[1]にはabc が格納されて欲しいのです。
[1]にデータを格納した後[0]にデータを格納したのが駄目だと思ったのですが、なぜデータが消えてしまうのでしょうか?
なにか代価案はありますでしょうか?
せめて動くコードを書こう
var
buf:TStrings;
Begin
buf:=TStringList.Create;
try
buf.Insert(0,'');//一行目に空行挿入
buf.Insert(1,'');//二行目に空行挿入 - 現在空行が二行
buf.Insert(1,'abc');//二行目に「abc」 - 現在空行+abc+空行
buf.Insert(0,'def');//一行目に「def」 - 現在def+空行+abc+空行
Memo1.Text:=buf.Text;
finally
buf.Free;
end;
end;
>なぜデータが消えてしまうのでしょうか?
消えたデータなんか無いよ
どんな結果が欲しいのかな?
insertは挿入で最初のパラメータは挿入位置なので、そのコードだとデータの変更はされずに追加だけされてます。
単に buf[1]:= 'abc';
とやれば 1 に abc が入ります。
buf:= TStringList.Create;
while buf.Count<2 do buf.Add('');
buf[0]:='def';
buf[1]:='abc';
TStringListの中身見た方が早いかもね
Memoを1こ置いて
処理終わった後に
Memo1.Lines.Assign(buf);
で、中身が表示されます。
buf[1] ←の中だけ見て、消えたと言われているだけでは無いでしょうか?
ツイート | ![]() |