Ich habe den Code mittlerweile geändert, aber den Fehler gerade rekonstruiert:
Delphi-Quellcode:
type
Pfoo = ^foo;
foo = record
other: Word;
buf: Array of Char;
end;
procedure test(buf: PChar);
var
bar: Pfoo;
lol: string;
begin
bar := Pfoo(buf);
lol := String(@bar.buf);
lol := Parse(':', lol, 2);
if Parse(' ', lol, 1) = 'hello' then
MessageBox(0,0,0,0);
MessageBox(0,PChar(lol), PChar(Parse(' ', lol, 1)),0);
end;
Wenn buf gleich 'x:hello' ist, erscheint die erste MessageBox nicht (die zweite zeigt 'hello' und '' im Title an), da Parse '' zurückgibt, wobei es eigentlich 'hello' sein sollte. Und wenn buf gleich 'x:hello 3' ist, stürzt das Programm ab.
Parse ist von hier:
http://www.delphipraxis.net/151836-s...r-zaehlen.html