OVERLOAD (Überladen) ?
Hallo, 8)
Wer kann mir sagen wo ich einen Fehler mache? Dieses Beispiel kann man Compieleren: [code:1:08206b0fbd] var |
Compiliert es jetzt oder nicht?
Also bei mir funktioniert es bis auf die Warnung, das ABC nicht initialisiert ist (ist eben nur ein Beispiel), ohne Fehlermeldung. |
Er sagt doch das man es Komplizieren kann. Ich denke das er eine Warnung bekommt und kein Fehler.
|
Ich meine ... man kann es compilieren...
ABER man bekommt eine FehlerMeldung also es läuft NICHT...bei mir Gruß Paul Jr. |
Moin Paul,
bei mir tritt der Fehler auch auf (D5 Pro) Wenn Du bei der ersten Deklaration das var weglässt geht's. |
Dein Problem liegt hier
Code:
PROCEDURE TForm1.Button1Click(Sender: TObject);
VAR ABC : ARRAY OF STRING; BEGIN SetObject([Button1],>>>>>>>>ABC<<<<<<<<); END; Du hast folgende Methoden deklariert: PROCEDURE SetObject(MainObject : ARRAY OF TObject; VAR MainVariable : ARRAY OF STRING); OVERLOAD; und PROCEDURE SetObject(MainObject : ARRAY OF TObject); OVERLOAD; Dein Aufruf setzt jedoch eine Prozedur mit folgenden Parametern voraus: PROCEDURE SetObject(MainObject : ARRAY OF TObject; VAR MainVariable : STRING); OVERLOAD; oder Du änderst den Aufruf zu: SetObject([Button1],[ABC]); Du musst noch das var aus der Parameterliste entfernen!!! |
Wieder ein Unterschied zwischen D6 und D5 gefunden. :)
|
Danke Sakura,
ich probiere es aus...vielleicht wird das klappen...und den ARRAY OF STRING wird seine Werte via Prozedur dauerhaft ändern... Gruß Paul Jr. |
Das Problem unter D5 ist, dass array of string in einer Prozedurdeklaration als "OpenArray" genutzt wird. Eine Variabel vom Typ array of string jedoch als dynamisches Array. Diese beiden Typen sind nicht vereinbar.
Über die deklaration eines neuen Typs:
Code:
kannst du dieses Problem umgehen.
type
TStringArray = array of string;
Code:
procedure SetObject(MainObject: array of TObject;
out MainVariable: TStringArray); overload; begin // end; ... procedure TForm1.Button1Click(Sender: TObject); var ABC: TStringArray; begin SetObject([Button1], ABC); end; |
Hallo jbg,
natürlich...hast recht...Danke Gruß Paul Jr. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:32 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