Einzelnen Beitrag anzeigen

Karsten

Registriert seit: 5. Sep 2003
56 Beiträge
 
Delphi 6 Personal
 
#1

TStringList und Add-/InsertObject (Verständnisprobleme)

  Alt 5. Sep 2003, 14:58
Verständnisprobleme
-------------------

Ähnlich wie in 'TStringList-Objekte auslesen' möchte ich zum speichern von Daten eine StringList benutzen.

Delphi-Quellcode:
type
  TDataSet = class(TObject)
  public
     Data1 : String;
     Data2 : String;
     u.s.w.
  end;


var
  DataSetList : TStringList;
Bisher war TDataSet als record definiert und beim schreiben in die String-List musste jedesmal die Startposition berechnet werden.
In der Hoffnung dieses verhindern zu können versuche ich die Datenstruktur auf 'Object' umzustellen (siehe oben) und die InsertObject und AddObject Eigenschaften der String-List zunutzen.

Daten in string-list speichern:
-------------------------------
Delphi-Quellcode:
procedure DataSetSpeichern;
var
  Position : Integer;
  TempDataSet: TDataSet;
begin
  TempDataSet := TDataSet.Create;

  <...Daten von Eingabe-Form lesen, Rückgabe ist TempDataSet...>

  <...Position bestimmen...>

  DataSetList.InsertObject(Position, '<text>', TempDataSet);

  TempDataSet.Free;
end;
Ich habe mir während des speicherns in die String Liste die Daten angesehen die gespeichert wurden und musste feststellen daß eigentlich nur der '<text>' in der liste auftauchte.
Frage: Was wird hier eigendlich gespeichert und wo ist der Rest der Daten die sich in TempDataSet (TDataSet) befanden ?

Daten aus string-list lesen:
----------------------------
Delphi-Quellcode:
function DataSetLesen(Position: Integer): TDataSet;
begin
  TempDataSet := DataSetList.Objects[Position] as TDataSet;
end;
Beim auslesen der Daten klappt es gar nicht. Die procedure die 'DataSetLesen' aufruft beinhaltet natürlich auch 'TempDataSet := TDataSet.Create;' und 'TempDataSet.Free;' wird erst dann aufgerufen
wenn die Daten komplett abgearbeitet sind.

Kann aber genau das mein Problem sein ('TempDataSet.Free;') ? Meine Vermutung ist daß möglicherweise nur ein Pointer in der String List gespeichert wird und ich beim aufrufen des '.Free' statements das ziel des Pointers vernichte.

Desweiteren würde ich mich über Informationen über Speichern und Lesen solcher daten in files freuen.

Danke und schönes Wochenende,

Karsten

[edit=Daniel B]Delphi-Tags korrigiert. Mfg, Daniel B[/edit]
  Mit Zitat antworten Zitat