![]() |
Spezielle Konstruktion funktioniert in D2005 nicht mehr
Hallo,
ich hatte unter Delphi 7 diese Konstruktion (bzw. Klasse), die ohne Probleme funktionierte:
Delphi-Quellcode:
Unter Delphi 2005 bekomme ich jedoch diese Fehlermeldungen:
type
TCipher = class(TObject) protected class function GetGUID(): TGUID; virtual; abstract; class function GetName(): WideString; virtual; abstract; class function GetShortDesc(): WideString; virtual; abstract; class function GetAdvDesc(): WideString; virtual; abstract; class function GetDevelopers(): WideString; virtual; abstract; class function GetSecurity(): Integer; virtual; abstract; class function GetSpeed(): Integer; virtual; abstract; public property Name : WideString read GetName; property ID : TGUID read GetGUID; property ShortDesc : WideString read GetShortDesc; property AdvDesc : WideString read GetAdvDesc; property Developers : WideString read GetDevelopers; property Security : Integer read GetSecurity; property Speed : Integer read GetSpeed; procedure WriteInformationToStream(F: TStream); virtual; abstract; procedure ReadInformationFromStream(F: TStream); virtual; abstract; procedure EnCryptText(const InPut, Password: WideString; var Result: WideString); virtual; abstract; procedure EnCryptFile(InPut, OutPut: TStream; const Password: WideString); virtual; abstract; procedure DeCryptText(const InPut, Password: WideString; var Result: WideString); virtual; abstract; procedure DeCryptFile(InPut, OutPut: TStream; const Password: WideString); virtual; abstract; end; Zitat:
Was mache ich falsch und wieso ist solch ein Konstrukt nicht mehr in Delphi Win32 in Delphi 2005 erlaubt? mfG mirage228 |
Re: Spezielle Konstruktion funktioniert in D2005 nicht mehr
Moin David,
sieht für mich so aus, als akzeptiere D2005 keine Klassenmethoden als Get-/Setmethoden für Eigenschaften. |
Re: Spezielle Konstruktion funktioniert in D2005 nicht mehr
Hi Christian,
ja das erscheint mir auch so :? . Nur: Wieso sollte es denn nicht mehr gehen? :gruebel: mfG mirage228 Edit: P.S.: Unter Windows.Forms geht es auch nicht. |
Re: Spezielle Konstruktion funktioniert in D2005 nicht mehr
Eine virtuelle abstrakte Klassen-Methode? Das ist doch ein bischen widersinnig. Auf jeden Fall etwas ueberdesignt.
Entweder hat man Klassenmethoden, dann ist die Property zuviel, oder umgekehrt. |
Re: Spezielle Konstruktion funktioniert in D2005 nicht mehr
Ich denke mal der neue Compiler ist hier etwas strenger.
Evtl. kannst Du vor den Property auch noch das Schlüsselwort class setzen, damit der Compiler weiß das wirklich alles sich auf die Klasse und nicht auf Instanzen bezieht. (Klassen-Member sollten mit D2005 jetzt erlaubt sein). So ist er überfordert. Ist das Property nun Klassen- oder Instanzabhängig. Was hat den der alte Compiler gemacht? Wurden die Properties der Klasse zugeodnet (Alle Instanzen hatten den selben Wert) oder den Instanzen (Die class-Angaben wurden ignoriert). |
Re: Spezielle Konstruktion funktioniert in D2005 nicht mehr
Was erreiche ich mit diesem class vor der Methode?
Beispiel:
Delphi-Quellcode:
Danke :-D
class function GetGUID(): TGUID; virtual; abstract;
|
Re: Spezielle Konstruktion funktioniert in D2005 nicht mehr
Das die Methode der Klasse zugeordnet ist und nicht einer Instanz davon.
Du kannst Die Methode anwenden ohne eine Instanz der Klasse zu haben. Du darfst in einer solchen Methode nicht auf Member von Variablen zugreifen. Der Konstruktor Create ist eine Klassenmethode.
Delphi-Quellcode:
TMyClass.Create(Owner);
TMyClass.MyClassMethode(...); |
Re: Spezielle Konstruktion funktioniert in D2005 nicht mehr
Wieso sollte ich eine Klassenmethode aufrufen wollen,
bevor ich sie instanziert habe? :-D Danke |
Re: Spezielle Konstruktion funktioniert in D2005 nicht mehr
Zitat:
Alles was keiner einzelnen Instanz zugeordnet werden kann sondern für alle Instanzen der Klasse gilt/gelten soll. |
Re: Spezielle Konstruktion funktioniert in D2005 nicht mehr
Zitat:
Zitat:
Zitat:
Zitat:
mfG mirage228 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:40 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-2025 by Thomas Breitkreuz