Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi AllocHGlobal <> GlobalAlloc ? (https://www.delphipraxis.net/91939-allochglobal-globalalloc.html)

EWeiss 12. Mai 2007 04:58


AllocHGlobal <> GlobalAlloc ?
 
Hi

Ist AllocHGlobal mit GlobalAlloc gleichzusetzen ? oder besser GetMem verwenden.

Code:
IntPtr pTimedLevel = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(WMPInterop.TimedLevel)));
Marshal.StructureToPtr(TimedLvl, pTimedLevel, false);
Kommt das hin?

Delphi-Quellcode:
pTimedLvl := GlobalAlloc(GMEM_MOVEABLE, sizeof(TimedLevel));
Für die zweite zeile habe ich keine lösung.
Wie müßte ich das übersetzen ?

Dann noch ein Problem!

Delphi-Quellcode:
function BASS_WMPVIS_Render(Data: PChar; pRect: TRect): Integer; stdcall; external 'bassWmp_vis.dll';

pRect.left  := 0;
pRect.top   := 0;
pRect.right := Image1.Width;
pRect.bottom := Image1.Height;

Result := BASS_WMPVIS_Render(pTimedLvl, pRect);
kann machen was ich will, pRect.right und pRect.bottom kommt immer als 0 in der DLL an
obwohl der wert mit 300, 240 übergeben wird.
Selbst als übergabe anstelle von pRect (w,h: DWORD) genau das gleiche!

gruss Emil

EWeiss 13. Mai 2007 12:42

Re: AllocHGlobal <> GlobalAlloc ?
 
Push.

keiner ne Idee ?

gruss Emil

marabu 24. Mai 2007 06:58

Re: AllocHGlobal <> GlobalAlloc ?
 
Hi Emil,

für das Übersetzungsproblem bräuchte ich die vollständige C-Quelle der Klasse mit der Methode AllocHGlobal.

Auch zu dem Problem mit der Parameterübergabe fällt mir so gar nichts ein. Stammt die Funktion BASS_WMPVIS_Render() von dir?

Freundliche Grüße

SirThornberry 24. Mai 2007 07:38

Re: AllocHGlobal <> GlobalAlloc ?
 
GetMem verwendet den Memorymanager, GlobalAlloc hingegen ist eine Windowsfunktion welche direkt Speicher anfordert. Intern verwendet GetMem sicher irgendwo GlobalAlloc aber eben besser organisiert als wie du es normaler Weise verwendest weil eben ein durchdachter Memorymanager dahinter steckt.

EWeiss 24. Mai 2007 07:42

Re: AllocHGlobal <> GlobalAlloc ?
 
Zitat:

Zitat von marabu
Hi Emil,

für das Übersetzungsproblem bräuchte ich die vollständige C-Quelle der Klasse mit der Methode AllocHGlobal.

Auch zu dem Problem mit der Parameterübergabe fällt mir so gar nichts ein. Stammt die Funktion BASS_WMPVIS_Render() von dir?

Freundliche Grüße

Ja ..
Die ist von mir und funktioniert auch ;) halbwegs.
Bin von dem C# Quelltext ganz weg und habe meine RenderMethode von Winamp für WMP verändert.
Allerdings mit mäßigen erfolg.

Mit fehlen ein paar Samples beim FFTSpectrum 1024 werden übergeben habe es aber noch nicht geschaft
diese für den rechten Kanal richtig zu übergeben also von 1024 -> 2048 welche beim WMP
für die Visualisierung des rechten Kanals zuständig sind.

Na ja .. mit dem Osci bin ich auch noch nicht zufrieden.

gruss Emil


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