Wer kann C++ Source in Delphi übersetzen



  • Hallo,

    Wer kann mir diesen Source von C++ in den Source von Delphi übersetzen?
    Danke.

    Headermaker EnlargeHeader(PE_INFO *pe)
    {
        Headermaker             ret = LPE_HANDLEDERROR;
        HWND                    hErrDlg = GetActiveWindow();
        DWORD                   dwHSize, dwBuff, i;
        IMAGE_SECTION_HEADER    *pS;
        HANDLE                  hFile;
        void                    *pMem;
        DWORD                   dwMemSize;
    
        if ( GetRealSizeOfHeaders( pe->pMap ) >= 0x1000 )
        {
            ShowError(hErrDlg, "Error");
            goto Exit;
        }
    
        dwHSize = GetRealSizeOfHeaders(pe->pMap);
        dwMemSize = pe->dwFileSize - dwHSize;
        pMem = m(dwMemSize);
        if (!pMem)
        {
            ret = LPE_NOMEMORY;
            goto Exit;
        }
        memcpy(pMem, (void*)((DWORD)pe->pMap + dwHSize), dwMemSize);
        pe->pNTh->OptionalHeader.SizeOfHeaders = dwHSize + 0x200;
        pS = pe->pSech;
        for (i = 0; i < pe->pNTh->FileHeader.NumberOfSections; i++)
        {
            if (pS->PointerToRawData)
                pS->PointerToRawData += 0x200;
            ++pS;
        }
        UnloadPEFile(pe);
    
        hFile = GetFileHandle(pe->cPath, GFH_OPENEXISTING_RW);
        SetFilePointer(hFile, dwHSize + 0x200, 0, FILE_BEGIN);
        WriteFile(
            hFile,
            pMem,
            dwMemSize,
            &dwBuff,
            NULL);
        CloseHandle(hFile);
        f(pMem);
        if (LoadPEFile(pe) != LPEF_SUCCESS)
        {
            HandleRemapError(hErrDlg);
            goto Exit;
        }
        ShowPEBaseInfo(hPEEditor);
    
        ret = LPE_OK;
    
    Exit:
        return ret;
    }
    

    [ Dieser Beitrag wurde am 04.03.2003 um 19:16 Uhr von Dimah editiert. ]



  • Das ist WinApi Code.
    Thread verschoben ins WinApi Forum. WinAPI



  • Das ist nur ein Teil eines Codes ohne zu Wiesen welcher Record PE_INFO ist und
    was die Funktion GetRealSizeOfHeaders macht ist es nur Teilweise möglich.
    zb.
    DWORD dwMemSize; Gleich dwMemSize: DWORD;
    IMAGE_SECTION_HEADER *pS; Gleich
    ps : PIMAGE_SECTION_HEADER; // oder TIMAGE_SECTION_HEADER;

    if ( GetRealSizeOfHeaders( pe->pMap ) >= 0x1000 )
    {
    ShowError(hErrDlg, "Error");
    goto Exit;
    }
    Gleich
    If GetRealSizeOfHeaders(pe.pMap) >= 0x1000 then
    begin
    ShowError(hErrDlg, 'Error');
    Exit; // oder Break;
    end;

    for (i = 0; i < pe->pNTh->FileHeader.NumberOfSections; i++)
    Gleich
    for i := 0 to pe.pNTh.FileHeader.NumberOfSections do
    begin
    // pS->PointerToRawData += 0x200;
    pS.PointerToRawData := pS.PointerToRawData + 0x200;
    end;

    if (LoadPEFile(pe) != LPEF_SUCCESS)
    Gleich
    if LoadPEFile(pe) not(LPEF_SUCCESS) then
    begin

    end;
    * Gleich ^
    == Gleich =
    ! Gleich Not
    -> Gleich .
    ++ Gleich Inc(n)
    = Gleich :=
    Ok Ich hoffe das konte dir einwenig weiter Helfen.
    Tip:
    Mit Strg u. linker Maustaste auf Funktions-Name oder Record usw. Klicken
    erscheint der Delphi-Code!


Anmelden zum Antworten