Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi WriteComponentRes und eigene Komponente (https://www.delphipraxis.net/28937-writecomponentres-und-eigene-komponente.html)

Snakeye 1. Sep 2004 13:46


WriteComponentRes und eigene Komponente
 
Hallo zusammen!

Ich habe mir eine Klasse namens TAlert von TComponent abgeleitet und möchte jetzt zur Laufzeit ein Objekt dieser neuen Klasse mit der Methode WriteComponentRes von TFileStream in eine Datei speichern.
Delphi-Quellcode:
[...]
MyAlert: TAlert;
[...]

var
  S: TFileStream;
begin
  S := TFileStream.Create('C:\Test.dfm', fmCreate);
  try
    S.WriteComponentRes(MyAlert.Classame, MyAlert);
  finally
    S.Free
  end;
end;
Eigentlich müssten ja dann alle Eigenschaften meiner Klasse dann in dieser Datei stehen.
Die Eigenschaften habe ich in der Klasse so definiert:
(Sie wurde an den Konstruktor übergeben und dort in FTestText eingetragen);

Delphi-Quellcode:
private
  FTestText: string;

public
  property TestText: string read FTestText;
Nur leider steht dann in der Datei (wenn ich sie mit Delphi geöffnet habe) nur folgendes:

Delphi-Quellcode:
object TAlert
end
Was amche ich falsch?
Wenn ich das ganze statt mit meiner Komponente mit dem einem TButton mache, klappt alles wunderbar...


Danke schonmal!

Dax 1. Sep 2004 13:50

Re: WriteComponentRes und eigene Komponente
 
Soweit ich weiss, ist WriteComponentRes auch nur für die IDE gedacht...
Frag mal bei den Borländern nach, vielleicht sagen die dir ja was. ;)

mirage228 1. Sep 2004 13:56

Re: WriteComponentRes und eigene Komponente
 
Hi,

mach die property mal nicht public, sondern published.

mfG
mirage228

Snakeye 1. Sep 2004 17:44

Re: WriteComponentRes und eigene Komponente
 
Das hilft leider auch nicht... habs schon ausprobiert...
published sagt ja nur, dass die Eigenschaft im Objekt-Inspektor verfügbar ist.

Nothine 1. Sep 2004 18:44

Re: WriteComponentRes und eigene Komponente
 
also bei mir funktionierts, allerdings nur unter der bedingung dass du noch die property nich als nur lesen sondern als read und write deklarierst, weiß aber nich inwieweit dir das hilft weil du die property wahrscheinlich absichtlich als nur-lesen deklariert hast...

Fossibaer58809 1. Sep 2004 19:22

Re: WriteComponentRes und eigene Komponente
 
Hallo zusammen,

[oh]Die Methode DefineProperties legt Methoden fest, mit denen die nicht als published deklarierten Daten eines Objekts in einem Stream (z.B. in einer Formulardatei) gespeichert werden können.[/oh]


Gruß
Michael

maximov 2. Sep 2004 09:32

Re: WriteComponentRes und eigene Komponente
 
Zitat:

Zitat von Nothine
also bei mir funktionierts, allerdings nur unter der bedingung dass du noch die property nich als nur lesen sondern als read und write deklarierst, weiß aber nich inwieweit dir das hilft weil du die property wahrscheinlich absichtlich als nur-lesen deklariert hast...

Die property muss zwingend...

a) als published deklariert sein
b) read and writebar sein (macht auch sonst keinen sinn)
c) vom defaultwert abweichen (hast du aber nicht - also erstmal egal)

..damit sie gestreamed werden kann.

Nothine 2. Sep 2004 10:18

Re: WriteComponentRes und eigene Komponente
 
Zitat:

Zitat von maximov
c) vom defaultwert abweichen (hast du aber nicht - also erstmal egal)

Zitat:

Reelle Zahlen, Zeiger und Strings besitzen den impliziten default-Wert von 0, nil bzw. '' (einen leeren String).
er hat einen :roll:

mirage228 2. Sep 2004 10:33

Re: WriteComponentRes und eigene Komponente
 
Zitat:

Zitat von Nothine
Zitat:

Zitat von maximov
c) vom defaultwert abweichen (hast du aber nicht - also erstmal egal)

Zitat:

Reelle Zahlen, Zeiger und Strings besitzen den impliziten default-Wert von 0, nil bzw. '' (einen leeren String).
er hat einen :roll:

Ich denke, maximov meinte einen selbst angegebenen default-Wert (die anderen sind ja nur indirekte default-Werte)...

mfG
mirage228

Nothine 2. Sep 2004 10:39

Re: WriteComponentRes und eigene Komponente
 
ich weiß :roll: ich will ihm ja auch eigentlich nur rechtgeben, weil
Zitat:

Zitat von snakeeye
Die Eigenschaften habe ich in der Klasse so definiert:
(Sie wurde an den Konstruktor übergeben und dort in FTestText eingetragen)

da er die indirekte default-eigenschaft eh auf jeden fall ändert isses uninteressant :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:54 Uhr.
Seite 1 von 2  1 2      

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