Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Typumwandlung LPWaveFormatEx (https://www.delphipraxis.net/105732-typumwandlung-lpwaveformatex.html)

DIET3RIX 28. Dez 2007 16:46


Typumwandlung LPWaveFormatEx
 
Hallo Leute,
ich versuche gerade C oder C++ Code in Delphi zu übersetzen.
Habe einige Probleme gehabt, konnte die aber alleine lösen. Jetzt bin ich an einem Punkt angelangt, wo ich nciht mehr weiter komme.
Und zwar möchte ich folgendes übersetzen:
Code:
...
LPMPEGLAYER3WAVEFORMAT mp3Format = (LPMPEGLAYERWAVEFORMAT) LocalAlloc(LPTR, maxFormatSize); //maxFormatSize ist eine Variable und hat den Wert 0
...
mmr = acmStreamOpen(&g_mp3stream,, NULL, (LPWAVEFORMATEX) mp3Format, waveFormat, NULL, 0, 0, 0);
...
Die acmStreamOpen Funktion: http://msdn2.microsoft.com/en-us/library/ms705215.aspx
Der komplette Code, welchen ich versuche zu übersetzen: http://david.weekly.org/code/mp3acm.html

Leider kennt mein Delphi den LPWAVEFORMATEX nicht, sondern nur PWAVEFORMATEX und TWAVEFORMATEX.
Genausowenig den LPMPEGLAYERWAVEFORMAT Format, sondern nur PMPEGLAYERWAVEFORMAT und TMPEGLAYERWAVEFORMAT
Ich benutze MMSystem, MSAcm und MMReg Units dafür.

Kann mir einer sagen, was ich falsch gemacht habe oder wie ich das Typenproblem lösen kann?

PS: Ich kann kein C/C++

Flocke 28. Dez 2007 19:19

Re: Typumwandlung LPWaveFormatEx
 
Das sind einfach Namenskonventionen. Im C++-Windows-Header ist "LPMPEGLAYERWAVEFORMAT" ein Zeiger auf "MPEGLAYERWAVEFORMAT", unter Delphi zeigt ein "PMPEGLAYERWAVEFORMAT" auf ein "TMPEGLAYERWAVEFORMAT".

Allgemeiner: ein "LPxyz" in C++ ist meist einfach ein "Pxyz" in Delphi und die Struktur "xyz" selbst heißt in Delphi dann "Txyz".

DIET3RIX 30. Dez 2007 11:54

Re: Typumwandlung LPWaveFormatEx
 
Vielen Dank für die Info (die Antwort erst jetzt, da ich bis jetzt noch keine Zeit hatte).
Hab dann nur noch eine Frage und zwar:
mp3Format ist von dem Typ: PMPEGLAYER3WAVEFORMAT und soll ich PWAVEFORMATEX umgewandelt werden. Habe ich das so richtig verstanden?
Wenn dies der Fall ist, wie wandle PMPEGLAYER3WAVEFORMAT in PWAVEFORMATEX?

Vielen Dank, vorraus.

DIET3RIX 31. Dez 2007 16:42

Re: Typumwandlung LPWaveFormatEx
 
Ich weiss, dass die Frage nicht so toll ist.
Naja, hab das Problem lösen können und will euch die Lösung nicht vorenthalten.
Delphi-Quellcode:
...
var
  waveFormat: TWaveFormatEx;
  mp3Format: TMPEGLAYER3WAVEFORMAT;
...
MMStatus := acmStreamOpen(@mp3Stream, 0, mp3Format.wfx,
             waveFormat, nil, 0, 0, 0);


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:30 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