Einzelnen Beitrag anzeigen

BassFan
(Gast)

n/a Beiträge
 
#3

Re: Übersetzen C nach Delphi

  Alt 20. Jul 2006, 13:46
Zitat von Robert Marquardt:
Das ist so beschissener Code das man ihn besser nicht nach Delphi uebersetzt.
Es fehlt auch zu viel Kontext als das man eine halbwegs sichere Uebersetzung wagen koennte.

Die C Funktion liefert die Adresse eines statischen Puffers, die einen C String enthaelt (PChar).
Dieser Pointer wird auch noch zu einem generischen LRESULT umgetypt. Boeser geht es fast nicht.
Trotzdem wird auch noch mit wp herumgespielt.

Der beste Weg ist direkt Playlist::GetFilename aufzurufen das ja den Puffer mit dem Filenamen fuellt.
Sorry hab für 1 Problem zwei Threads geöffnet.
Das oben gezeigte Schnipsel soll den String zurückgeben welcher mit dieser Funktion angefordert wurde.

Delphi-Quellcode:
function GetWinampFilename(data:Integer): String;
var hwndWinamp, TempHandle : THandle;
    dat2: array[0..500] of Char;
    TrackPos: Integer;
    temp, MPointer: Cardinal;
begin
    hwndWinamp:= FindWindow('Winamp v1.x',nil);
    if hwndWinamp= 0 then
    begin
        result:=''  
    end else
    begin
        if data<0 then
          TrackPos:= SendMessage(hwndWinamp,WM_USER,0 , IPC_GETLISTPOS)
        else
          TrackPos:=data;

 
        MPointer:= SendMessage(hwndWinamp,WM_USER,TrackPos , IPC_GETPLAYLISTFILE);
        GetWindowThreadProcessId(hwndWinamp,TempHandle);
        hwndWinamp:= OpenProcess(PROCESS_ALL_ACCESS,False,TempHandle);
        ReadProcessMemory(hwndWinamp, Pointer(MPointer), @dat2,500,temp);
        CloseHandle(hwndWinamp);
        Result:= string(dat2);
    end;
end;
Mit dem Übersetzen wollte ich dieses Problem lösen.
Plugin Problem
Leider werden mir hier nur 5 Buchstaben zurückgegeben.

gruß und Danke
  Mit Zitat antworten Zitat