Einzelnen Beitrag anzeigen

nithdi

Registriert seit: 9. Okt 2007
3 Beiträge
 
#1

C/C++ struct in Delphi Record übersetzen

  Alt 21. Sep 2010, 17:21
Hallo allerseits.
Ich habe mich jetzt entscheiden, hier ein neues Thema zu eröffnen, weil ich mich bei meinem Problem total aufgegabelt habe.

Folgendes möchte ich tun:
Per Sendmessage einen Pointer zu einem Record an die Media Library von Winamp weitergeben. Dazu muss ich ein struct in ein record übersetzen, da die Winamp Media Library API in C/C++ geschreben ist. Winamp Media Library API

In der API Doku steht, dass ein Pointer zu einem struct als WPARAM übergeben werden soll - soweit kein Problem.
Das Struct sieht folgendermaßen aus:
Code:
typedef struct { 
  size_t size; // size of this struct  
  const wchar_t *playlistName; // set to NULL (or empty string) to prompt the user for a name
  const wchar_t *filename;
  int flags; // see PL_FLAG_* above  
  // the following two items can be optionally filled in (set to -1 otherwise)  
  // if they aren't set, the playlist file will have to be opened and parsed  
  // so prepopulating is faster (assuming if you already know the data)  
  int numItems; // set to -1 if you don't know.    
  int length; // in seconds, set to -1 if you don't know
} mlAddPlaylist;
Also habe ich dieses in einen Delphi Record "übersetzt":
Delphi-Quellcode:
type
  Playlist = record
    Size: Cardinal;
    Name: PWideChar;
    Path: PWideChar;
    Flags: Integer;
    Items: Integer;
    Length: Integer;
  end;
Allerdings scheint dort ein Fehler zu sein, denn wenn ich den record übergebe...:
Delphi-Quellcode:
const
  WM_ML_IPC = WM_USER + $1000;

var
  pl : Playlist;

...

pl.Name := 'Test';
pl.Path := 'C:\test.m3u';
pl.Flags := -1;
pl.Items := -1;
pl.Length := -1;
pl.Size := SizeOf(pl);
Sendmessage(hwndMediaLibrary, WM_ML_IPC, integer(@pl), $180); //$180 ist das Kommando an die ML, dass eine neue Playlist eingefügt werden soll
..macht Winamp daraus nur Müll.

Ich habe es schon mit vielen Variationen von Casts probiert, hatte aber bisher keinen Erfolg. Manchmal erscheinen in Winamp dann japanische Zeichen (spricht doch eigentlich für ein Problem ANSI <-> Unicode, oder?), oder auch mal eine neue leere Zeile.

Habe ich das Struct falsch übersetzt?

Vielen Dank für eure Hilfe!
  Mit Zitat antworten Zitat