1
Lowlevel-Coding / Re: delphi, array und cpuid
« am: 10. April 2009, 20:02 »
Hi,
Vor allem wegen der internen Verwaltung durch den Compiler sollten Strings nie per Hand/Inline Assembler erstellt werden. Hier empfieht es sich, einfach einen null-terminierten String (PChar/Char-Array) zu verwenden und dann umwandeln zu lassen:
(Falls Delphi 2009+ verwendet wird, muss man direkt AnsiChar und PAnsiChar verwenden)
Grüße,
Stefan
Vor allem wegen der internen Verwaltung durch den Compiler sollten Strings nie per Hand/Inline Assembler erstellt werden. Hier empfieht es sich, einfach einen null-terminierten String (PChar/Char-Array) zu verwenden und dann umwandeln zu lassen:
(Falls Delphi 2009+ verwendet wird, muss man direkt AnsiChar und PAnsiChar verwenden)
Code: [Auswählen]
program Project1;
{$APPTYPE CONSOLE}
var str : Array[0..12] of Char;
VendorStr : String;
begin
asm
mov eax,0
cpuid
mov dword[str],ebx
mov dword[str+4],edx
mov dword[str+8],ecx
mov byte[str+12],0
end;
VendorStr := str; // Delphi sollte erkennen, dass es sich um ein Array[..] of Char fester Größe handelt und es dementsprechend umwandeln, alternativ als PChar beschreiben: "PChar(@str)"
Writeln('Vendor-String: ',VendorStr);
Readln;
end.
Grüße,
Stefan