![]() |
Probleme mit DWORD und Integer
Hi Leute,
ich benutze eine Funktion um zu ermitteln wie viel Tracks auf einer Audio CD sind bzw. ob eine CD eingelegt ist Die Funktion ist folgendermaßen deklariert:
Delphi-Quellcode:
Ist der Rückgabewert -1 dann ist keine CD eingelegt:
DWORD WINAPI BASS_CD_GetTracks(
DWORD drive );
Delphi-Quellcode:
Wenn jetzt keine Audio CD eingelegt ist dann müsste TrckCount -1 sein!
var
TrckCount: DWORD; begin TrckCount := BASS_CD_GetTracks(0); if TrckCount = -1 then ShowMessage('Keine CD eingelegt!'); end; Aber TrckCount ist eine riesige Zahl. -1 kommt nur zurück wenn ich TrckCount als Integer deklariere. Warum muss ich also den Typ Integer nehmen wenn die Funktion einen DWORD zurückgibt! Woran liegt das?? |
Re: Probleme mit DWORD und Integer
Zitat:
Probier mal folgendes:
Delphi-Quellcode:
DWORD und Integer haben jeweils den gleichen Speicherbedarf unter Win32 und können deshalb in C-DLL-Schnittstellen (bezüglich keine Exception-Gefahr) wahlweis ausgetausch werden.
if TrckCount = DWORD(-1) then
|
Re: Probleme mit DWORD und Integer
Ich benutze aber Delphi.
Die Funktionsdeklaration habe ich nur aus einer C-Hilfe genommen. |
Re: Probleme mit DWORD und Integer
Zitat:
|
Re: Probleme mit DWORD und Integer
Der Begriff DWORD ist nunmal historisch belegt. Auf Hardwareebene spricht man vom Doppelwort - das sind 2 Maschinenwörter á 16 bit. Was darin gespeichert ist, weiß nur der Programmierer, sonst niemand. DWORD hat dann später über den Assembler Einzug in C gehalten und steht immer noch für einen Speicherbereich von 32 bit.
Grüße vom marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:21 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