AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) C/C++ struct in Delphi Record übersetzen
Thema durchsuchen
Ansicht
Themen-Optionen

C/C++ struct in Delphi Record übersetzen

Ein Thema von nithdi · begonnen am 21. Sep 2010 · letzter Beitrag vom 24. Sep 2010
 
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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:26 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