Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi OVERLOAD (Überladen) ? (https://www.delphipraxis.net/270-overload-ueberladen.html)

Gast 27. Jun 2002 11:01


OVERLOAD (Überladen) ?
 
Hallo, 8)

Wer kann mir sagen wo ich einen Fehler mache?

Dieses Beispiel kann man Compieleren:

[code:1:08206b0fbd]
var

jbg 27. Jun 2002 11:07

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.

Daniel B 27. Jun 2002 11:08

Er sagt doch das man es Komplizieren kann. Ich denke das er eine Warnung bekommt und kein Fehler.

Gast 27. Jun 2002 11:28

Ich meine ... man kann es compilieren...

ABER man bekommt eine FehlerMeldung

also es läuft NICHT...bei mir

Gruß

Paul Jr.

Christian Seehase 27. Jun 2002 11:52

Moin Paul,

bei mir tritt der Fehler auch auf (D5 Pro)
Wenn Du bei der ersten Deklaration das var weglässt geht's.

sakura 27. Jun 2002 11:53

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!!!

jbg 27. Jun 2002 11:54

Wieder ein Unterschied zwischen D6 und D5 gefunden. :)

Gast 27. Jun 2002 12:09

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.

jbg 27. Jun 2002 12:16

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:
type
  TStringArray = array of string;
kannst du dieses Problem umgehen.
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;

Gast 27. Jun 2002 12:28

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