AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

kompoenenten Eigenschaft speichern

Ein Thema von arturx · begonnen am 4. Mai 2005 · letzter Beitrag vom 7. Mai 2005
Antwort Antwort
arturx

Registriert seit: 4. Mai 2005
Ort: Beckum
2 Beiträge
 
#1

kompoenenten Eigenschaft speichern

  Alt 4. Mai 2005, 17:43
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:
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;
//===================================================================
Hat einer eine Idee ?

arturx

[edit=Sharky]Delphi-Tags gesetzt. Mfg, Sharky[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.840 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

Re: kompoenenten Eigenschaft speichern

  Alt 4. Mai 2005, 18:20
Zuerst ein mal Herzlich willkommen in der Delphi Praxis

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 von arturx:
...Wo liegt der Fehler ?? ...
Dein Fehler liegt in der falschen Gruppe.

Du hast den Beitrag in die Gruppe Freeware geposted.
  • Freeware
    Freeware-Programme (mit oder ohne Sourcecode) zum Testen und Diskutieren
Dein Beitrag wäre in folgender Gruppe besser aufgehoben:
  • VCL / WinForms / Controls
    Fragen rund um VCL- und WinForms-Komponenten einschließlich der Common Controls
    (z.B. deren Benutzung und/oder Weiterentwicklung)
Diese Gruppe wird von mehr Leuten gelesen, die mit Deiner Frage aus was anzufangen wissen
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: Verhaltenskodex & FAQ
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
4. Mai 2005, 18:51
Dieses Thema wurde von "Daniel" von "Freeware" nach "VCL / WinForms / Controls" verschoben.
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: kompoenenten Eigenschaft speichern

  Alt 4. Mai 2005, 19:55
benutze anstelle von
filer.defineproperty('Backupval',Readpropsyncarr,writepropSyncarr,true); einfach
AFiler.DefineBinaryProperty('Backupval', Readpropsyncarr,writepropSyncarr, true); deine read und write procedure musst du dann wie folgt abändern
Delphi-Quellcode:
procedure tkomponente.Readpropsyncarr(AStream : TStream);
[...]
procedure tkomponente.writepropSyncarr(AStream : TStream);
und in den Übergabestream kannst du dann beliebige Daten schreiben bzw. lesen

zum schreiben deines stirngs
Delphi-Quellcode:
var LInt: Integer;
begin
  LInt := length(fbackstr);
  AStream.Write(LInt, SizeOf(Integer));
  AStream.Write(fbackstr[1], LInt);
zum lesen deines strings
Delphi-Quellcode:
var LInt: Integer;
begin
  AStream.Read(LInt, SizeOf(Integer));
  SetLength(fBackStr, LInt);
  AStream.Read(fbackstr[1], LInt);
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
arturx

Registriert seit: 4. Mai 2005
Ort: Beckum
2 Beiträge
 
#5

Re: kompoenenten Eigenschaft speichern

  Alt 7. Mai 2005, 09:12
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz