Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Übersetzung VB Delphi (ByRef pStatus As Any) As Long (https://www.delphipraxis.net/137355-uebersetzung-vbulletin-delphi-byref-pstatus-any-long.html)

zeras 19. Jul 2009 11:21


Ü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?

Die Muhkuh 19. Jul 2009 11:25

Re: Übersetzung VB Delphi (ByRef pStatus As Any) As Long
 
Schätzungsweise könnte es in Delphi ein Variant sein.

zeras 19. Jul 2009 18:42

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.

EWeiss 19. Jul 2009 19:02

Re: Übersetzung VB Delphi (ByRef pStatus As Any) As Long
 
Zitat:

Zitat von zeras
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.

Kann alles sein!
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

zeras 13. Sep 2009 13:16

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';

Sprint 13. Sep 2009 14:22

Re: Übersetzung VB Delphi (ByRef pStatus As Any) As Long
 
Versuch's mal mit PChar. Ohne var.

Chris.R 13. Sep 2009 14:24

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

zeras 13. Sep 2009 14:35

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.

Chris.R 13. Sep 2009 14:53

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 21:19 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