![]() |
Übersetzung VB Delphi (ByRef pStatus As Any) As Long
Ich möchte eine C Funktion nutzen. Als Beispiel wurde mir ein VB Beispiel gegeben.
(ByRef pStatus As Any) As Long (var pStatus As ???) Longint Wie kann ich "Any" übersetzen? |
Re: Übersetzung VB Delphi (ByRef pStatus As Any) As Long
Schätzungsweise könnte es in Delphi ein Variant sein.
|
Re: Übersetzung VB Delphi (ByRef pStatus As Any) As Long
Danke für den Tipp. Werde das mal ausprobieren.
Offensichtlich steckt meistens nur ein Byte dahinter, aber unter Umständen kann wohl auch ein Pointer dahinter stecken. |
Re: Übersetzung VB Delphi (ByRef pStatus As Any) As Long
Zitat:
String, Integer usw.. in dem Fall denke ich ist es ein String da dieser sich mit anderen sprachen nicht verträgt. Besonders auf ByRef achten .. also "var" vor pStatus nicht vergessen. gruss Emil |
Re: Übersetzung VB Delphi (ByRef pStatus As Any) As Long
Ich komme immer noch nicht so richtig weiter. Den Aufruf
{ extern "C" BOOL WINAPI xFndFirst( char *fileName //noch andere Variablen } hatte ich so übersetzt. Nur weiß ich nicht, ob das stdcall oder eher cdecl stehen muss.
Delphi-Quellcode:
function xFndFirst( var FileName : arDataTcp; //noch andere Variablen ): Boolean; stdcall; external 'xxx.dll'; |
Re: Übersetzung VB Delphi (ByRef pStatus As Any) As Long
Versuch's mal mit PChar. Ohne var.
|
Re: Übersetzung VB Delphi (ByRef pStatus As Any) As Long
Hallo zeras,
"Char *filename" würd ich durch "FileName: PChar" übersetzen. Stdcall ist schon richtig bei WINAPI Funktionen. Ich glaub aber, dass BOOL als LongBool definiert werden sollte. Ciao Chris |
Re: Übersetzung VB Delphi (ByRef pStatus As Any) As Long
Danke für die Tipps.
Dies ist wahrscheinlich aber nicht das größere Problem. Ich komme nicht ganz klar mit den Wörtern stdcall und cdecl. In der Delphi Doku steht drin, dass bei C oder C++ DLL die Konvention "cdecl" hilfreich sein soll, aber da bekomme ich immer wieder Abstürze mit Access violation Fehlermeldung. Mit stdcall geht erst mal eine Funktion, aber bei anderen Funktion hatte ich auch irgendsolche Fehlemeldungen, wo ich nicht klarkomme. Werde mal weiter mit stdcall probieren. |
Re: Übersetzung VB Delphi (ByRef pStatus As Any) As Long
Wenn du cdecl benutzt obwohl die Funktion stdcall benutzt, zerschießt du dir den Stack und dann gibts massig AVs.
Bei cdecl muss die aufrufende Funktion den Stack aufräumen nicht die aufgerufe Funktion (wie bei stdcall), wenn du dann cdecl statt stdcall nutzt, dann wird der Stack zweimal aufgeräumt. Ciao Chris |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:35 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