Zitat von
himitsu:
nein, ist er nicht.
Delphi-Quellcode:
var str:
String;
begin
str:='
wuppdi';
showmessage(inttostr(PByte(Cardinal(@str[6])+1)^));
end;
Oder, als Assembler-Version:
Delphi-Quellcode:
function blubb(s:
String): Byte;
asm
mov al, byte ptr eax+6
end;
procedure TForm1.FormCreate(Sender: TObject);
var str:
String;
begin
str:='
wuppdi';
showmessage(inttostr(blubb(str)));
end;
Wie du siehst, kommt immer 0 raus. Warum? Damit Strings sich schnell und leicht in PChars konvertieren lassen und man nicht jedesmal Speicher neu reservieren muss, wenn man mal schnell nen String an die
WinAPI schickt.
Allerdings ist der String 'wup'#0'di' für Delphi tatsächlich 'wup'#0'di' und nicht 'wup'. Da habe ich mich getäuscht. Sobald man jedoch versucht, in per showmessage o.ä. auszugeben, bleibt nur noch ein 'wup' übrig.