Obecnie dodaję przedmiot tworząc to lubią:Czy mogę bezpośrednio dodać rekord jako obiekt do listy napisów?
type
TRecord = class
private
str: string;
num: Integer;
public
constructor Create;
end;
...
procedure TForm1.Button2Click(Sender: TObject);
var
i: Integer;
rec: TRecord;
Alist: TStringList;
begin
Alist := TStringList.create;
Alist.Clear;
for i := 0 to 9 do
begin
rec := Trecord.Create; //create instance of class
rec.str := 'rec' + IntToStr(i);
rec.num := i * 2;
Alist.AddObject(IntToStr(i), rec);
end;
end;
Czy ta metoda prawidłowa lub nieskuteczne? Czy mogę dodać obiekt bezpośrednio, nie tworząc go tak, jak przy użyciu rekordu?
type
PRec = ^TRec;
TRec = record
str: string;
num: Integer;
end;
...
var
rec: TRec;
...
for i := 0 to 9 do
begin
//how to write here to have a new record,
//can i directly Create record in delphi 7 ?
rec.str := 'rec' + IntToStr(i);
rec.num := i*2;
Alist.AddObject(IntToStr(i), ???); // how to write here?
end;
Lub inny szybki i prosty sposób?
Używam Delphi 7.
Z góry dziękuję.
Nie jestem pewien, czy lista ciągów jest najlepsza. Prawdopodobnie wybrałbym TObjectList, ustaw OwnsObjects na true i przeniesie ciąg do klasy używanej jako element listy. –
@DavidHefferman: Aby to działało poprawnie, typ rekordu musi zostać zmieniony na klasę wywodzącą się z 'TObject'. –
@Remy Pierwszy wyciąg z kodu jest dokładnie taki, jak –