Forum: Object-Pascal / Delphi-Language
by DrUArn,
28. Nov 2011
Nochmal zum Thema:
nachdem ich in einem abgleiteten tpersistent eine Schreib- und Leseroutine (ähnlich s.oben) erfolgreich eingefügt habe, sehe ich, dass in von tcomponent abgeleiteten Objecten möglich ist, eine Eigenschaft für stringlisten zu definieren mit entsprechenden schon vorhandenen Lese- und Schreibroutinen:
TStoreComponent_UA = class(TComponent)
private
{...
Forum: Object-Pascal / Delphi-Language
by DrUArn,
28. Nov 2011
Hi,
@alle Diskutanten: Danke für Eure Beiträge, hat mir wieder ein (kleines) Stück geholfen, Delphi zu verstehen. Gelernt, dass man manchmal auch probieren muss, was eine Routine tut (@Bummi's letzter Beitrag). - Bloß habe ich dieses Verhalten von load/save..stream mehr zufällig bemerkt - sonst hätte ich wohl noch ein Stück weiter programmiert und mich später sehr gewundert.
Als nochmal...
Forum: Object-Pascal / Delphi-Language
by DrUArn,
28. Nov 2011
hi,
@Bummi: ... verstehe Ich nicht. Nebenher, wenn man als unbedarfter eine Info über die Arbeitsweise von tStringlist.save/load...fromstream haben will (eben gerade die wichtige: liest immer bis zum Ende des Streams), findet man die nicht in der Delphi-Hilfe. Wo könnte man so detailierte Info's herbekommen?
Grüße
Uwe
Forum: Object-Pascal / Delphi-Language
by DrUArn,
27. Nov 2011
@Bummi: Wie am Start gesagt - 'ne Fingerübung - wollte nur ein allg. Object probieren, welches Daten in eine Stream speichert - also etwa ein Integer, einen String, ein Byte-Array und eben falls nötig - eine Stringliste.
procedure tstorepersistent_UA.writeotherdata(astream: tstream);
var i:integer;
a:char;
begin
astringlist.SaveToStream(astream);
a:=#0;
astream.Write(a,sizeof(a));
Forum: Object-Pascal / Delphi-Language
by DrUArn,
27. Nov 2011
Hi,
@himitsu: Hatte mich in meinen eigenen Routinen verheddert. Du hast recht! #0 beendet den Lesevorgang. Sicherheitshalber noch mal die Frage: Wird dieses zusätzlich gespeichert #0 (a:=#0; astream.Write(a,sizeof(a))) beim Lesen (tstringlist.LoadFromStream(astream))mit einbezogen - also astream.position hinter dem #0 oder muß man beim Lesen nochmal astream.read(a, sizeof(a) nutzen, um...
Forum: Object-Pascal / Delphi-Language
by DrUArn,
27. Nov 2011
@himitsu
heisst, tstringlist.LoadFromStream(astream) liest definitiv nur bis #0?
Probiere ich aus.
danke Uwe
//daten schreiben
procedure tstorepersistent_UA.writeotherdata(astream: tstream);
Forum: Object-Pascal / Delphi-Language
by DrUArn,
27. Nov 2011
Hallo community,
@Bummi: o.k., das ist die Antwort. In den Hilfen findet der Laie die Funktionsbeschreibung eben nicht. Ich hatte die Vorstellung, dass man am Anfang des Schreibprozesses die Anzahl der strings (count) speichern könnte.
@jaenicke: stimmt.
Schade, dass tstringllist dieses Verhalten nicht kann.
Meine Lösung wäre dann zwar umständlich, aber möglich:
procedure...
Forum: Object-Pascal / Delphi-Language
by DrUArn,
26. Nov 2011
Hallo, community
als Fingerübung habe ich mal eine tpersistent abgeleitet, welches in streams Daten schreiben und lesen kann:
//Zuordnung von lesen und schreiben
procedure TStoreComponent_UA.defineproperties(filer: tfiler);
begin
inherited;