p := PChar(Text);
Bei einem leeren Text '' ist p an dieser Stelle nil.
Jeder Zugriff auf p^ würde jetzt zu einer Zugriffsverletzung führen.
In deinen Schleifen wird nie überprüft ob das Ende des Textes erreicht wurde (z.B. p^ = #0).
Dann müsste abgebrochen werden.
Delphi-Quellcode:
...
Inc(p);
until p^ = ':';
Diese Stelle wird nur erreicht wenn p^ = ':' ist.
Durch Inc(P) ist die nachfolgende Bedingung nie erfüllt, es sei denn, es stehen zwei Doppelpunkte nacheinander.
Delphi-Quellcode:
function Extract(Text:
string; WordPos: Word):
string;
var
p: PChar;
begin
p := PChar(Text);
if Assigned(p)
then
begin
while (p^ <> #0)
and (WordPos > 0)
do
begin
if p^ = '
:'
then
Dec(WordPos)
else if WordPos = 1
then
Result := Result + p^;
Inc(p);
end;
end;
end;
Na da war jemand bereits schneller...