Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi C++ "..." ins Delphi Übersetzten (https://www.delphipraxis.net/98500-c-ins-delphi-uebersetzten.html)

nitschchedu 28. Aug 2007 10:45


C++ "..." ins Delphi Übersetzten
 
Hallo Leute,
ich übersetzte gerade wieder mal was ins Delphi.
Und dabei bin ich auf vollgende Funktion gestossen:
Code:
VixError Vix_GetProperties(VixHandle handle,
                           VixPropertyID firstPropertyID, ...);
Wie übersetzte ich das "..." ins Delphi ? *ratlos*

PS: VixError, VixHandle, VixPropertyID sind Integer <--

SirThornberry 28. Aug 2007 10:56

Re: C++ "..." ins Delphi Übersetzten
 
für mich sieht das nach offenem parameter aus wo man noch mehrere weitere parameter angeben kann.

Torpedo 28. Aug 2007 11:00

Re: C++ "..." ins Delphi Übersetzten
 
SirThornberry hat recht. So wird das auch bei printf gemacht.

printf("Test");
printf("Zahl: %d",i);
printf("Zahl: %d, noch eine: %d",i,j);
usw.

Natürlich kann man nicht für jede Anzahl an Parametern eine neue Funktion schreiben, deshalb gibt es "...".

nitschchedu 28. Aug 2007 11:12

Re: C++ "..." ins Delphi Übersetzten
 
Stimmt vom printf kenne ich das auch aber wie schreibe ich das in Delphi ?

Delphi-Quellcode:
function Vix_GetProperties(handle: VixHandle; firstPropertyID: VixPropertyID; ....): VixError;
die Punkte gehen ja in Delphi nicht !? :(

Dezipaitor 28. Aug 2007 11:13

Re: C++ "..." ins Delphi Übersetzten
 
nennt sich va_list (so auch der typ)

siehe http://www.c-plusplus.de/forum/viewt...is-284500.html

Ich glaube aber nicht, dass man es nach Delphi so einfach portieren kann.
Das muss man erstmal an einer eigenen C++ Fkt testen.

Denke mal, dass "..." entweder ein Array von irgendwas(bester Fall) oder ein Pointer ist.

Du müsstest also den Aufruf kapseln in einer eigenen Funktion die den Aufruf übernimmt.

zum test kannste mal folgendes verwenden

procedure xy(<deine Parameter>; const XY : array of const)

OregonGhost 28. Aug 2007 11:19

Re: C++ "..." ins Delphi Übersetzten
 
Willst du die Signatur übersetzen, damit du die C++-Funktion in deinem Delphiprogramm aufrufen kannst, oder willst du die komplette Funktion übersetzen?

nitschchedu 28. Aug 2007 11:24

Re: C++ "..." ins Delphi Übersetzten
 
Zitat:

Zitat von Dezipaitor
..
procedure xy(<deine Parameter>; const XY : array of const)

Das habe ich auch gerade in ne Anderen Projekt gefunden ^^ .. das würde dann so aussehen

Delphi-Quellcode:
function Vix_GetProperties(handle: VixHandle; firstPropertyID: VixPropertyID; Args:array of const): VixError;
...

Zitat:

Zitat von OregonGhost
Willst du die Signatur übersetzen, damit du die C++-Funktion in deinem Delphiprogramm aufrufen kannst, oder willst du die komplette Funktion übersetzen?

Das ist ne Export Funktion einer DLL, ich will eine DLL benutzten und in C++ steht die Funktion so da.

Dezipaitor 28. Aug 2007 12:21

Re: C++ "..." ins Delphi Übersetzten
 
lass es uns wissen, wenn das Array of Const kompatibel mit dem C++ ist.

Robert Marquardt 28. Aug 2007 12:31

Re: C++ "..." ins Delphi Übersetzten
 
Ich weiss jetzt gerade die Syntax nicht, aber eine variable Anzahl von Parametern laesst sich in neueren Delphi-Versionen deklarieren. Die Funktion ist dann uebrigens zwingend cdecl.
va_list ist nicht die richtige Deklaration. Das ist der Mechanismus mit dem in C eine variable Anzahl Parameter implementiert wird. Dieser Mechanismus ist seinerseits in C benutzbar und ueblicherweise gibt es Funktionsfamilien mit allen Parametervarianten (namentlich printf).

Apollonius 28. Aug 2007 15:36

Re: C++ "..." ins Delphi Übersetzten
 
Zitat:

Ich weiss jetzt gerade die Syntax nicht, aber eine variable Anzahl von Parametern laesst sich in neueren Delphi-Versionen deklarieren.
Wo? Ab wann? Will haben!


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:16 Uhr.
Seite 1 von 4  1 23     Letzte »    

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