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 Stream im Object als publisched property (https://www.delphipraxis.net/48259-stream-im-object-als-publisched-property.html)

Taladan 22. Jun 2005 22:58


Stream im Object als publisched property
 
Hallo.
Ich möchte gern einen Stream als publisched property deklarieren. Doch irgendwie sagt mir Delphi immer incompatible Typen...
Delphi-Quellcode:

  TName = class(TBaseObject)
   private
    fStream : TStream;
    procedure SetStream(aStream : TStream);
    function GetStream(aStream:TStream):TStream;
   public
    constructor Create;
   published
    property Stream : TStream read GetStream write SetStream;
   end;

procedure TName.SetStream(aStream : TStream);
begin
  fStream := aStream;
end;

function TName.GetStream(aStream:TStream):TStream;
begin
  result := fStream;
end;

constructor TName.Create;
begin
  inherited;
  fStream := TStream.Create;
end;

TStringlist 22. Jun 2005 23:27

Re: Stream im Object als publisched property
 
Hallo

1. TStream würde ich nicht nehmen, weil da TStream.Read u. TStream.Write doch nur abstrakte Methoden sind, dh.: bei dem Versuch diese zu nutzen gibt's eine Exception.

2. public ja, aber published? Angenommen die Komponente steht danach im OI, was soll man denn da bei dieser published stream-Property dann einstellen können?

3. Wozu hat denn TName.GetStream da eine Parameterliste? Das könnte event. auch die Fehlerursache sein.

dahead 22. Jun 2005 23:33

Re: Stream im Object als publisched property
 
Zitat:

3. Wozu hat denn TName.GetStream da eine Parameterliste? Das könnte event. auch die Fehlerursache sein.
das ist die fehlerursache.

beim deklarieren könntest du das nächste mal einfach "Strg-Shift-C" drücken, also z. b. hier:

Delphi-Quellcode:
TName = class(TBaseObject)
   private
    fStream: TStream;
   public
    constructor Create;
   published
    property Stream: TStream read GetStream write SetStream; <-- hier an dieser stelle
   end;
delphi vervollständigt dann deinen code autom.

SirThornberry 23. Jun 2005 06:44

Re: Stream im Object als publisched property
 
@dahead: er hat eine Personal, da ist nix mit vervollständigen durch diese Tastenkombination.

Taladan 23. Jun 2005 10:11

Re: Stream im Object als publisched property
 
Der Stream kommt aus anderen VCL. Z.b. einer ListBox. Der Inhalt soll zusmammen mit den anderen Published Propertys ausgelesen werden und dadurch kann ich sie dann speichern.

Taladan 25. Jun 2005 17:50

Re: Stream im Object als publisched property
 
*push*

Kann denn keiner helfen?

TStringlist 25. Jun 2005 18:44

Re: Stream im Object als publisched property
 
Zitat:

Zitat von Taladan
... Doch irgendwie sagt mir Delphi immer incompatible Typen...

Sofern es noch darum geht, war's doch eigentlich schon gesagt: Die Get-Routine "TName.GetStream" hat normal keine Parameterliste.

Dax 25. Jun 2005 18:47

Re: Stream im Object als publisched property
 
Und für jeden Typen, der im OI angezeigt werden soll, braucht man einen Property-Editor. Bei Stringlisten ist das diese Box, in der man die einzelnen Strings in ein Memo eingibt ;)

Für Streams gibt es sowas imho nicht, also werden sie auch nicht im OI angezeigt.

Taladan 25. Jun 2005 19:00

Re: Stream im Object als publisched property
 
Es handelt sich hier nicht um ein DesignObject sondern um ein Laufzeitobject. Jedoch muß die Eigenschaft in publisched stehen, sonnst wird sie nicht per
Delphi-Quellcode:
GetPropList(Self.ClassInfo, PropList)
angezeigt. Und das haut meine Komponente um

mirage228 25. Jun 2005 19:04

Re: Stream im Object als publisched property
 
Ja, die Deklaration des Getters von Stream sieht trotzdem so aus ;)
Delphi-Quellcode:
function GetStream: TStream; // keine PARAMETER!
mfG
mirage228


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:18 Uhr.
Seite 1 von 2  1 2      

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-2025 by Thomas Breitkreuz