![]() |
Übersetzen C nach Delphi
Wer könnte das kleine Schnipsel übersetzen?
Code:
gruß
{
static char szAnsiFilename[ 2000 ] = "\0"; Playlist::GetFilename( ( int )wp, szAnsiFilename, 1999 ); return ( LRESULT )szAnsiFilename; } |
Re: Übersetzen C nach Delphi
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. |
Re: Übersetzen C nach Delphi
Zitat:
Das oben gezeigte Schnipsel soll den String zurückgeben welcher mit dieser Funktion angefordert wurde.
Delphi-Quellcode:
Mit dem Übersetzen wollte ich dieses Problem lösen.
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; ![]() Leider werden mir hier nur 5 Buchstaben zurückgegeben. gruß und Danke |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:46 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 by Thomas Breitkreuz