![]() |
Delphi in C++ Konvertieren - Strukturen
Hallo, ich habe da ein kleines großes Problem :-D :
Ich möchte gerne ein DelphiProgramm in ein C++-Programm umwandeln. Das klappt auch ganz gut, bis ich zu Klassen und Strukturen gekommen bin. ich habe in Delphi dieses hier: type PImageDosHeader = ^TImageDosHeader; TImageDosHeader = packed record // DOS .EXE header e_magic : Word; // Magic number e_cblp : Word; // Bytes on last page of file e_cp : Word; // Pages in file e_crlc : Word; // Relocations e_cparhdr : Word; // Size of header in paragraphs e_minalloc: Word; // Minimum extra paragraphs needed e_maxalloc: Word; // Maximum extra paragraphs needed e_ss : Word; // Initial (relative) SS value e_sp : Word; // Initial SP value e_csum : Word; // Checksum e_ip : Word; // Initial IP value e_cs : Word; // Initial (relative) CS value e_lfarlc : Word; // File address of relocation table e_ovno : Word; // Overlay number e_res : array [0..3] of Word; // Reserved words e_oemid : Word; // OEM identifier (for e_oeminfo) e_oeminfo : Word; // OEM information; e_oemid specific e_res2 : array [0..9] of Word; // Reserved words _lfanew : Longint; // File address of new exe header end; PImageNtHeaders = ^TImageNtHeaders; TImageNtHeaders = record Signature : DWORD; FileHeader : TImageFileHeader; OptionalHeader: TImageOptionalHeader; end; In der Hauptfunktion: Resource: Pointer; Resource := LockResource(LoadResource(0, FindResource(0, 'Image', 'EXE'))); NtHeaders: PImageNtHeaders; NtHeaders := PImageNtHeaders(Cardinal(Resource) + Cardinal(PImageDosHeader(Resource)._lfanew)); Wie kann ich das jetzt in C++ bringen? Die Strukturen ahbe ich schon übernommen mit: struct TImageDosHeader { WORD e_magic; WORD e_cblp; WORD e_cp; WORD e_crlc; WORD e_cparhdr; WORD e_minalloc; WORD e_maxalloc; WORD e_ss; WORD e_sp; WORD e_csum; WORD e_ip; WORD e_cs; WORD e_lfarlc; WORD e_ovno; WORD e_res[3]; WORD e_oemid ; WORD e_oeminfo; WORD e_res2[9]; long int _lfanew; }; struct TImageNtHeaders { DWORD Signature; TImageFileHeader FileHeader; TImageOptionalHeader OptionalHeader; }; Die Resource habe ich auch hinbekommen, aber wie kann ich jetzt dieses Pointerstrukturen in C++ bringen, ich bin echt am verzweifeln! Danke schon mal an alle, die sich bemühen. |
Re: Delphi in C++ Konvertieren - Strukturen
Für die Lesbarkeit wären die Delphi-Tags sehr hilfreich...
|
Re: Delphi in C++ Konvertieren - Strukturen
Hat sich alles erledigt, mit Punkten und Pfeilen
also X->Y.Z und ganz viel OllyDebug XD. |
Re: Delphi in C++ Konvertieren - Strukturen
also einen Pointer in C definierst du so :
Delphi : PImageDosHeader = ^TImageDosHeader C: PtrDosHdr *TImageDosHeader; /* Pointer auf Struktur TImageDosHeader hat Eigenschaft int_lfanew */ PtrDosHdr=null; /* Impl. nicht vergessen */ PtrDosHdr=malloc(iGroesse); // Speicher reservieren //Zugriff erfolgt dann so : PtrDosHdr->int_lfanew=0; //oder identisch für C-Spez.s : (*PtrDosHdr).int_lfanew=0; // . Operator hat in C Vorrang vor * Operator |
Re: Delphi in C++ Konvertieren - Strukturen
Zitat:
"0..3" sind 4 Elemente. "0..9" sind 10 Elemente. Bei C/C++ gibt man die Gesamtanzahl der Elemente an. ALso müsste es so heissen:
Code:
- edit -
WORD e_res[4];
WORD e_res2[10]; Bsp.:
Code:
Die Struktur kann als "MYSTRUCT" angesprochen werden.
typedef struct _MYSTRUCT
{ DWORD a; DWORD b; DWORD c; } MYSTRUCT, *PMYSTRUCT; Pointer auf diese Struktur ist vom Typ "PMYSTRUCT". |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:34 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-2025 by Thomas Breitkreuz