Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#1

D2009 ein Ratespiel mit UNICODE ?

  Alt 26. Mai 2009, 13:28
Diverse probleme mit D2009.

D2006 funktioniert!
Aus DLL!

Delphi-Quellcode:
  // added song to Playlist
  for i := 0 to fAlbumList.Count - 1 do
    WAAddFile(Module1.hWNDParent, fFilePath + fAlbumList.Strings[i]);
Delphi-Quellcode:
function int_cds(mainwawnd: HWND; text: string; msg: Integer): Integer;
var
  cds: COPYDATASTRUCT;
begin
 cds.dwData := msg;
 cds.lpData := PChar(text);
 cds.cbData := lstrlen(cds.lpData)+1; {include space for null char}
 result := SendMessage(mainwawnd, WM_COPYDATA, 0, LPARAM(@cds));
end;

function WAAddFile(mainwawnd: HWND; FilePath: string): Integer;
begin
  result := int_cds(mainwawnd, FilePath, IPC_PLAYFILE);
end;
cds.lpData := PChar(text); wird in der Anwendung wie folgt ausgewertet.

Delphi-Quellcode:
    // Plugin send new Playlist entry
    psAddPlaylistTitle:
    begin
       copyDataStruct := Pointer(BASSVIS_SetPlayState(@mVisParam, psAddPlaylistTitle));
       Title := string(copyDataStruct.lpData);
       frmMain.Plist.Add(Title);
       frmMain.playlist.Items.add(ExtractFileName(AnsiLeftStr(Title, Length(Title) - 4)));
    end;
kann hier übergeben in D2009 was ich will .. PwideChar oder PAnsiChar
cds.lpData := PChar(text); in der Anwendung kommt immer ein falscher oder kein String an.

Auf was muss ich achten damit die Daten richtig ausgewertet werden.
Das problem ist das ich mit verschiedenen sprachen arbeite VB,NET,C usw..

Wie kann ich garantieren das in allen sprachen das richtige Ergebnis übergeben wird ?

gruss Emil
  Mit Zitat antworten Zitat