![]() |
C --> Delphi übersetzen
Ich versuche mit Delphi eine DLL anzusprechen. Die entsprechende Header-Datei enthält u.a. folgenden Code:
Code:
Kann mir jemand hier helfen?
#if defined(_WIN32) && !defined(_XBOX)
/* _OPENAL32LIB is deprecated */ #if defined(AL_BUILD_LIBRARY) || defined (_OPENAL32LIB) #define AL_API __declspec(dllexport) #else #define AL_API __declspec(dllimport) #endif #else #define AL_API extern #endif #if defined(_WIN32) #define AL_APIENTRY __cdecl #else #define AL_APIENTRY #endif typedef int ALenum; typedef float ALfloat; AL_API void AL_APIENTRY alGetListenerf( ALenum param, ALfloat* value ); AL_API void AL_APIENTRY alGetListener3f( ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3 ); AL_API void AL_APIENTRY alGetListenerfv( ALenum param, ALfloat* values ); Mich verwirrt hier vor allem ALfloat* value und ALfloat *value. Was ist der Unterschied? |
Re: C --> Delphi übersetzen
Es gibt keinen Unterschied. Es ist eigentlich Geschmackssache wo man das Sternchen hinpackt. Solange wie sich die Anzahl der Sternchen nicht ändert ... willst du es
Delphi-Quellcode:
Statt PALfloat könntest du auch einen Arraytyp 0..0 deklarieren. So wie es in C aussieht, dürfte es sich um die Übergabe eines Arrays von mehreren Floats handeln ...
type ALfloat = Float;
type PALfloat = ^ALfloat; type ALenum = Integer; procedure alGetListenerf(param:ALenum; var value:ALfloat); cdecl; procedure alGetListener3f(param: ALenum; var value1, value2, value3: ALfloat); cdecl; procedure alGetListenerfv(param: ALenum; values: PALfloat); cdecl; |
Re: C --> Delphi übersetzen
Aller klar. Danke. :)
|
Re: C --> Delphi übersetzen
Hi Mystic.
Zitat:
Grob:
Delphi-Quellcode:
Edit: Roten Kasten such...
type
PFloat = ^float; AFloat = array of float; procedure alGetListenerf(Param : Integer; Value : PFloat ); cdecl; procedure alGetListener3f(Param : Integer; value1, value2, value3 : PFloat ); cdecl; procedure alGetListenerfv(Param : Integer; Values : AFloat ); cdecl; |
Re: C --> Delphi übersetzen
Zitat:
|
Re: C --> Delphi übersetzen
Ob "ALfloat *Value" zu "Value: PALfloat" oder zu "var Value: ALfloat" zu uebersetzen ist, kann nur geraten werden.
In diesem Fall geben die Parameternamen einen recht sicheren Hinweis was verwendet werden soll.
Delphi-Quellcode:
type
ALenum = Integer; PALfloat = ^ALfloat; ALfloat = Single; procedure alGetListenerf(param: ALenum; var value: ALfloat); cdecl; procedure alGetListener3f(param: ALenum; var value1: ALfloat; var value2: ALfloat; var value3: ALfloat); cdecl; procedure alGetListenerfv(param: ALenum; values: PALfloat); cdecl; |
Re: C --> Delphi übersetzen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:00 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