Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Wer Hilft bei einer kleinen übersetzung Delphi > C ? (https://www.delphipraxis.net/96971-wer-hilft-bei-einer-kleinen-uebersetzung-delphi-c.html)

EWeiss 2. Aug 2007 16:21

Re: Wer Hilft bei einer kleinen übersetzung Delphi > C ?
 
Zitat:

Zitat von Apollonius
Wenn du in Delphi einen Parameter als var deklarierst, macht der Compiler dass, was du in C explizit hinschreiben musst: nicht der Wert der Variablen, sondern ihre Adresse wird übergeben. Somit ist die C-Deklaration in dieser Hinsicht korrekt, wenn man mal davon absieht, dass du anscheinend _stdcall vergessen hast (hinter das void).

Hmmm wo vergessen?

Code:
void _stdCall BASSVISDEF(BASSVIS_ExecutePlugin)(BASSVIS_EXEC* Param, BASSVIS_PARAM out Base);
?? korrekt

oder
Code:
void _stdCall BASSVISDEF(BASSVIS_ExecutePlugin)(BASSVIS_EXEC* Param, BASSVIS_PARAM* Base);
gruss Emil

Apollonius 2. Aug 2007 16:30

Re: Wer Hilft bei einer kleinen übersetzung Delphi > C ?
 
Jetzt ist das _stdcall richtig.
Zur zweiten Frage: Ein Stern genau dann, wenn in Delphi ein Zeiger oder ein var.

Diese out-Schreibweise kenne ich nicht, ich weiß nicht, ob das kompatibel ist. Zur Sicherheit würde ich
BASSVIS_PARAM * Base empfehlen.

Man editierst du schnell. Da will man gerade die Lösung posten, und du schlägst sie schon vor.

EWeiss 2. Aug 2007 16:37

Re: Wer Hilft bei einer kleinen übersetzung Delphi > C ?
 
Zitat:

Zitat von Apollonius
Man editierst du schnell. Da will man gerade die Lösung posten, und du schlägst sie schon vor.

Jo sorry ;)

Nur noch zwei fragen

Code:
BASSVIS_PARAM* BASSVISDEF(BASSVIS_GetPluginHandle)(BASSVIS_KIND_T Kind, char *Pluginfile);
Richtig ?

Dann nochmal das hier!

Code:
int BASSVISDEF(BASSVIS_SetPlayState)(BASSVIS_PARAM* Param, PlayState State, int value = -1);
Playstate ist enum muss auch hier ein Stern übergeben werden?

Code:
int BASSVISDEF(BASSVIS_SetPlayState)(BASSVIS_PARAM* Param, PlayState* State, int value = -1);
gruss und danke Emil

EDIT:
Noch vergessen kennt C HWND oder besser als DWORD deklarieren?

Apollonius 2. Aug 2007 16:49

Re: Wer Hilft bei einer kleinen übersetzung Delphi > C ?
 
@1: vermute ich richtig, dass in der ersten Klammer der Name steht, wie er in der DLL definiert ist? Wenn ja - wo sagst du, woraus und dass er importieren soll?
@2:
Zitat:

Ein Stern genau dann, wenn in Delphi ein Zeiger oder ein var.
Hier also kein Stern.
@edit: ausprobieren.

EWeiss 2. Aug 2007 16:55

Re: Wer Hilft bei einer kleinen übersetzung Delphi > C ?
 
Zitat:

vermute ich richtig, dass in der ersten Klammer der Name steht, wie er in der DLL definiert ist? Wenn ja - wo sagst du, woraus und dass er importieren soll?
verstehe nicht was du jetzt meinst.
In der ersten Klammer steht die Funktion wie in Delphi Deklariert.
BASSVISDEF ist die Definition für die LIB

Delphi-Quellcode:
function BASSVIS_GetPluginHandle(Kind: TBASSVIS_KIND_T;
    Pluginfile: PChar
): PBASSVIS_PARAM; stdcall; external dllfile;
Ist der Stern dann nicht richtig?
Code:
BASSVIS_PARAM* BASSVISDEF(BASSVIS_GetPluginHandle)(BASSVIS_KIND_T Kind, char *Pluginfile);

EDIT:
Hab mal ne neue Type deklariert
Code:
typedef DWORD HWND;
Kann nicht verkehrt sein ;)
Ausprobieren kann ich nicht da ich mich in C nicht auskenne.

gruss Emil

Der_Unwissende 2. Aug 2007 17:01

Re: Wer Hilft bei einer kleinen übersetzung Delphi > C ?
 
Zitat:

Zitat von EWeiss
Ist der Stern dann nicht richtig?
Code:
BASSVIS_PARAM* BASSVISDEF(BASSVIS_GetPluginHandle)(BASSVIS_KIND_T Kind, char *Pluginfile);

Da ist der richtig!

Zitat:

Zitat von EWeiss
EDIT:
Hab mal ne neue Type deklariert
Code:
typedef DWORD HWND;
Kann nicht verkehrt sein ;)
Ausprobieren kann ich nicht da ich mich in C nicht auskenne.

Äh, warum tust Du das?! Es gibt den Typen HWND natürlich schon in C, dass der auch nur ein DWORD ist stimmt zwar, aber es sollte Dir klar sein, dass Du nicht einfach alle Windows-Standardtypen neu deklarieren solltest! Schau einfach in das Windows PSDK, da findest Du die im Windows-API angegebenen Header, die wiederum die Standardtypen enthalten!

EWeiss 2. Aug 2007 17:10

Re: Wer Hilft bei einer kleinen übersetzung Delphi > C ?
 
Zitat:

Äh, warum tust Du das?! Es gibt den Typen HWND natürlich schon in C, dass der auch nur ein DWORD ist stimmt zwar, aber es sollte Dir klar sein, dass Du nicht einfach alle Windows-Standardtypen neu deklarieren solltest! Schau einfach in das Windows PSDK, da findest Du die im Windows-API angegebenen Header, die wiederum die Standardtypen enthalten!
Gut werde sie wieder entfernen.. ;)
Bin mir nur nicht sicher ob C HWND aktzeptiert oder ob hier groß oder Kleinschreiben beachtet werden mus.

gruss Emil

EWeiss 2. Aug 2007 21:45

Re: Wer Hilft bei einer kleinen übersetzung Delphi > C ?
 
danke für eure Hilfe...
Wenn jetzt noch probleme sind müssen sich die Developer halt selber helfen.

gruss Emil


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:34 Uhr.
Seite 3 von 3     123   

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