Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi [Fehler] edit.pas(91): E2356 (https://www.delphipraxis.net/38547-%5Bfehler%5D-edit-pas-91-e2356.html)

thklingler 20. Jan 2005 18:36


[Fehler] edit.pas(91): E2356
 
Hallo, ich wollte meine in Delphi 6 geschrieben Komponenten auf Delphi 2005 installieren. das klappt aber nicht da ich immer folgen Fehler erhalte.

[Fehler] edit.pas(91): E2356 Für Eigenschaftszugriff muss ein Instanzenfeld oder eine Instanzenmethode verwendet werden.

Was muss ich ändern das es funzt ?

Dax 20. Jan 2005 18:40

Re: [Fehler] edit.pas(91): E2356
 
Meine Glaskugel enthält leider nichts, das mir deinen Code anzeigen würde ;-)

Aber nach der Fehlermeldung zu schließen, solltest du für den Zugriff auf deine Eigenschaft ein Objekt oder eine Klassenmethode verwenden.. Was die Meldung eben sagt ;)

mirage228 20. Jan 2005 19:16

Re: [Fehler] edit.pas(91): E2356
 
Hi,

poste am besten mal die betreffene Zeile.

Ich hatte diese Fehlermeldung, als ich eine virtuell-abstrakte Klassenmethode als Getter für eine Property in D2005 verwenden wollte (was aber in D7 noch ging / geht).

mfG
mirage228

thklingler 21. Jan 2005 06:34

Re: [Fehler] edit.pas(91): E2356
 
Hallo, der code sieht wie folgt aus:

Delphi-Quellcode:
procedure DeadInt(Value: integer);

public  
    class function GetId: integer; virtual;

published
    property Id      : integer read GetId       write DeadInt;
bei compilieren kommt dann der Fehler:
[Fehler] edit.pas(91): E2356 Für Eigenschaftszugriff muss ein Instanzenfeld oder eine Instanzenmethode verwendet werden

MrSpock 21. Jan 2005 07:03

Re: [Fehler] edit.pas(91): E2356
 
Hallo thklingler,

der Code benutzt die Methode GetId, die als Klassenmethode definiert ist. Die Fehlermeldung behauptet, es müsse eine Instanzmethode sein. Versuche einmal das class vor der function zu löschen.

thklingler 21. Jan 2005 08:04

Re: [Fehler] edit.pas(91): E2356
 
Hallo, das habe ich schon probiert, dann muß ich die ganze Komponete um schreiben da ich die ganzen funktionen als Klassemethoden verwende. Es erscheint dann der Fehler
[Fehler] edit.pas(353): E2076 Diese Form des Methodenaufrufs ist nur für Klassenmethoden erlaubt.

SirThornberry 21. Jan 2005 09:06

Re: [Fehler] edit.pas(91): E2356
 
ich versteh nicht ganz wozu du dann überhaupt ein Object nimmst wenn das dann alles Klassenmethoden sind, da kannst du doch auch gleich das als normale Funktionen declarieren.

Eine alternative damit du nicht alles umschreiben musst. Erstelle eine weitere Komponente wo alles nur Methoden der Klasse sind. Und in der Methode rufst du dann einfach die Klassenmethode des anderen Objectes auf.

mirage228 21. Jan 2005 14:36

Re: [Fehler] edit.pas(91): E2356
 
Hi,

wie ich das sehe ist das exakt das Problem, das ich auch habe (siehe: http://www.delphipraxis.net/internal...ct.php?t=42797).

Mich würde zugerne interessieren warum Borland das seinfach so geändert hat und ob sie es rückgängig machen könnten... :gruebel:

mfG
mirage228

Chewie 21. Jan 2005 14:47

Re: [Fehler] edit.pas(91): E2356
 
Ein Workaround sollte doch recht einfach sein:

Delphi-Quellcode:
procedure DeadInt(Value: integer);

public  
    class function CGetId: integer; virtual;
    function GetId: integer; virtual;

published
    property Id      : integer read GetId       write DeadInt;

//...

function Getid: integer;
begin
  Result := CGetId; //oder alternativ <Klassenname>.CGetId
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:23 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