![]() |
Array-Parameterübergabe
Hallo zusammen,
um ein Array (of Single) zu übergeben habe ich folgendes versucht:
Delphi-Quellcode:
Die Fehlermeldung: "E2001 Ordinaltyp erforderlich" - Daraus schließe ich, dass ich nur Arrays irgendeines Ordinaltyps auf diese Weise übergeben kann. Ist dem so :gruebel:? Wenn ja, wäre das doch eine ziemlich hässliche Einschränkung...obj.func([0.3, 1.0], [0.0]); Danke und Gruß, Lucas |
Re: Array-Parameterübergabe
Du mußt ne Variable übergeben.
|
Re: Array-Parameterübergabe
okay...und warum?
|
Re: Array-Parameterübergabe
Bei der Übergabe eines Arrays wird ein Zeiger auf diesen Übergeben.
|
Re: Array-Parameterübergabe
Hallo Lucas,
siehe auch ![]() Die Lösung wäre ein konstantes Array oder (ab Delphi 2005/6) das hier:
Delphi-Quellcode:
Gruß Hawkeye
type
TDynSingleArray = array of single; begin obj.func (TDynSingleArray.Create(0.3, 0.1), TDynSingleArray.Create(0.0)); end; |
Re: Array-Parameterübergabe
Seit wann hat ein Array ein Constructor :gruebel:
|
Re: Array-Parameterübergabe
Ich könnte mir gut vorstellen, dass das in den neueren Delphi-Versionen geht.
|
Re: Array-Parameterübergabe
Zitat:
Zitat:
|
Re: Array-Parameterübergabe
Du sagst du willst ein Array übergeben.
Du schreibst aber:
Delphi-Quellcode:
Das sind zwei Arrays für mich. Hast du eventuell die Klammern falsch gesetzt?
obj.func([0.3, 1.0], [0.0]);
Delphi-Quellcode:
obj.func([0.3, 1.0, 0.0]);
|
Re: Array-Parameterübergabe
Ne... ich dacht mir im Code-Beispiel nur "wieso so geizig"... ;)
|
Re: Array-Parameterübergabe
Delphi-Quellcode:
Bei mir kompiliert das und das Array enthält auch die richtigen Werte.
{$O-}
procedure TForm1.test(a: array of Single); begin asm nop end; end; procedure TForm1.FormCreate(Sender: TObject); begin test([4.2, 13.37]); end; EDIT: Mit zwei Arrays gehts genauso. Wie hast du deine Methode deklariert? EDIT2: Unter Delphi 7. |
Re: Array-Parameterübergabe
Manuel, du hast Recht. Es hängt einzig und allein von der Signatur der aufgerufenen Routine ab. Bei dem von mir verlinkten Thread wurde die Funktion CreatePolygonRgn verwendet, die einen typenlosen CONST-Parameter erwartet. Hier funktioniert nur die von mir vorgestellte Lösung mit dem Konstruktor-Aufruf (und auch nur ab Delphi 2005/6). Wenn (wie in deinem Beispiel) der Parameter mit Typ vereinbart wird, funktionieren beide Lösungen - auch in früheren Delphi-Versionen.
Gruß Hawkeye |
Re: Array-Parameterübergabe
Stimmt, es funktioniert. Folgendes kompiliert jedoch nicht (und so habe ich es gemacht):
Delphi-Quellcode:
type
TInput = array of Single; procedure proc(Input: TInput); asm nop; end; begin proc([0.0, 1.0]); end; |
Re: Array-Parameterübergabe
Hallo Lucas,
du mußt deine Routine ein wenig abändern:
Delphi-Quellcode:
Gruß Hawkeye
procedure proc(const Input: array of Single);
asm nop; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:43 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