オブジェクトプロパティに文字列を格納するにはどうすればよいですか?
なんで ?
上手、
sizeof(TObject) = sizeof(Pointer)
String
は参照カウントタイプであるため、StringRec
クラッカータイプを使用してすべての組み込み関数を管理するか、compielr組み込みカウンターを使用します。効果が低く、間接レベルが追加されているにもかかわらず、2番目のアプローチを試してみます。
。
type StringContainer = record Data: String; end;
PStringContainer = ^StringContainer;
var p: PStringContainer;
for Record in DataSet do begin
New(P);
P^.Data := Record['id'];
Pointer(AddComponent.Data) := P;
end;
Dispose(...)
コンポーネントでこれらのポインタが不要になったときに呼び出すことを忘れないでください。
procedure TMyComponent.BeforeDestruction;
var P: PStringContainer;
begin
P := Pointer(Data);
Data := nil;
Dispose(P); // should free the string, since P type was given
inherited;
end;
メモリ管理の問題を避けたい。
正確にどのような種類の問題があり、プログラムのどの部分にありますか?