AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Übersetzen C nach Delphi

Ein Thema von BassFan · begonnen am 20. Jul 2006 · letzter Beitrag vom 20. Jul 2006
Antwort Antwort
BassFan
(Gast)

n/a Beiträge
 
#1

Übersetzen C nach Delphi

  Alt 20. Jul 2006, 03:38
Wer könnte das kleine Schnipsel übersetzen?

Code:
         {
            static char szAnsiFilename[ 2000 ] = "\0";
            Playlist::GetFilename( ( int )wp, szAnsiFilename, 1999 );
            return ( LRESULT )szAnsiFilename;
         }
gruß
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#2

Re: Übersetzen C nach Delphi

  Alt 20. Jul 2006, 05:30
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.
  Mit Zitat antworten Zitat
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
Antwort Antwort


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 23:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz