![]() |
kompoenenten Eigenschaft speichern
Delphi 7
Ich möchte eine Komponente schreiben und eine nicht-published Eigenschaft in der Formular Datei speichern. Folgender Code funktioniert nur, wenn ich einen integer Wert abspeichere (dieses Beispiel findet man in allen Büchern). Ersetzt man writeint durch writestr, bricht das Ganze ab beim Laden des Formulars, welches diese komponente nutzen soll. Wo liegt der Fehler ??
Delphi-Quellcode:
Hat einer eine Idee ?
type tkomponente = class(tpersistent)
private fbackstr : string; fbackint : integer; ..... end //================================================================= //================================================================= procedure tkomponente.defineproperties(filer: tfiler); begin inherited; filer.defineproperty('Backupval',Readpropsyncarr,writepropSyncarr,true); end; //=================================================================== procedure tkomponente.Readpropsyncarr(reader: treader); begin fbackstr := reader.ReadString; // :wall: löst den Fehler aus.. !!!!!! { fbackint := reader.ReadInteger; // geht end; //=================================================================== procedure tkomponente.writepropSyncarr(writer: twriter); begin writer.WriteString('Hallo'); // Fehler behaftet { writer.writeinteger(22); // geht } end; //=================================================================== arturx [edit=Sharky]Delphi-Tags gesetzt. Mfg, Sharky[/edit] |
Re: kompoenenten Eigenschaft speichern
Zuerst ein mal Herzlich willkommen in der Delphi Praxis :dp:
Zu Deinem Problem kann ich leider nicht viel Produktives beitragen. Ich kenne nur den Weg mit stored, aber das funktioniert ja nicht im protected. (Hab ich gerade ausprobiert) Aber zu Deiner Frage: Zitat:
Du hast den Beitrag in die Gruppe Freeware geposted.
Jetzt aber bitte nicht das Selbe noch mal in die "richtige" Gruppe posten, das wäre ein Crossposting und die sind ebenfalls nicht gern gesehen. Ein Moderator wird Deinen Beitrag schon in die richtige Gruppe verschieben ;) Dei Regeln zum glücklichen Zusammenleben kannst Du hier nachlesen: ![]() |
DP-Maintenance
Dieses Thema wurde von "Daniel" von "Freeware" nach "VCL / WinForms / Controls" verschoben.
|
Re: kompoenenten Eigenschaft speichern
benutze anstelle von
Delphi-Quellcode:
einfach
filer.defineproperty('Backupval',Readpropsyncarr,writepropSyncarr,true);
Delphi-Quellcode:
deine read und write procedure musst du dann wie folgt abändern
AFiler.DefineBinaryProperty('Backupval', Readpropsyncarr,writepropSyncarr, true);
Delphi-Quellcode:
und in den Übergabestream kannst du dann beliebige Daten schreiben bzw. lesen
procedure tkomponente.Readpropsyncarr(AStream : TStream);
[...] procedure tkomponente.writepropSyncarr(AStream : TStream); zum schreiben deines stirngs
Delphi-Quellcode:
zum lesen deines strings
var LInt: Integer;
begin LInt := length(fbackstr); AStream.Write(LInt, SizeOf(Integer)); AStream.Write(fbackstr[1], LInt);
Delphi-Quellcode:
var LInt: Integer;
begin AStream.Read(LInt, SizeOf(Integer)); SetLength(fBackStr, LInt); AStream.Read(fbackstr[1], LInt); |
Re: kompoenenten Eigenschaft speichern
Danke für die Idee. Ich frage mich nur, wie geht die direkte Lösung ?
(Einen String zu speichern ist doch offensichtlich Standard in allen Formularen. siehe Caption usw.) Irgendwie muss da noch ein Verständnisfehler bei mir vorliegen. Kennt Ihr ein Buch oder einen Link für Komponenten Entwicklung auf der Basis von Delphi 6 oder 7 ? Alles was ich so an tiefergehender Literatur kenne (Ray conopka usw.) stammt aus der Zeit von Delphi 3 od. max. Delphi 5. Danke im Voraus :roll: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz