Wenn Sie wissen, dass Sie Delphi-7 für den Rest Ihres Lebens mit dem TObject (i) Cast verwenden werden. Andernfalls beginnen Sie mit den richtigen Objekten, dies erspart Ihnen Kopfschmerzen beim Upgrade auf 64 Bit.
Unit uSimpleObjects;
Interface
type
TIntObj = class
private
FI: Integer;
public
property I: Integer Read FI;
constructor Create(IValue: Integer);
end;
type
TDateTimeObject = class(TObject)
private
FDT: TDateTime;
public
property DT: TDateTime Read FDT;
constructor Create(DTValue: TDateTime);
end;
Implementation
{ TIntObj }
constructor TIntObj.Create(IValue: Integer);
begin
Inherited Create;
FI := IValue;
end;
{ TDateTimeObject }
constructor TDateTimeObject.Create(DTValue: TDateTime);
begin
Inherited Create;
FDT := DTValue;
end;
end.
Verbrauch:
var
IO: TIntObj;
SL: TStringList;
Lagerung:
SL := TStringList.Create(true); // 'OwnsObjects' for recent Delphi versions
IO := TIntObj.Create(123);
SL.AddObjects(IO);
Retrieval:
IO := TIntObj(SL.Objects[4]);
ShowMessage('Integer value: '+ IntToStr(IO.I));
Für Delphi-7
TIntObj := TStringList.Create;
und muss man sich die Objekte freizugeben:
for i := 0 to Sl.Count-1 do
begin
IO := TIntObj(SL.Objects[i]);
IO.Free;
end;
SL.Free;
Um welche Art von Objekt ist es? Es gibt keine generische TObject-To-String-Funktion. – Blorgbeard
als eine Notiz, aber keine Antwort, würde ich empfehlen, erstellen Sie Ihr eigenes Objekt in diesem Feld zu speichern. Schließlich ist dies das Ziel. Ihr Objekt könnte nach Bedarf mehr Informationen enthalten. Zum Beispiel, Sie erwähnen, dass es eine Liste von Sprachen ist. Ein Objekt (d. H. "TLanguage") könnte Eigenschaften wie "Name: String", "ID: Integer" und mehr aufweisen. –
Übrigens, Sie fragen immer noch, wie Sie es in eine Zeichenfolge umwandeln, aber die Frage erwähnt Ganzzahl. Behalten Sie die Frage über Integer, die in einem TObject-Feld gespeichert sind, und String/Integer-Konvertierung ist der einfache Teil ("IntToStr", "StrToIntDef" usw.). Der Titel sollte also eher lauten wie "Wie speichere ich eine ganze Zahl in einem TObject-Feld?" –