Auf den ersten Blick sieht deine Schleife nicht so aus, als wenn sie nicht gehen sollte.
Ein Problem mit
ANSI <->
Unicode hast du nicht zufällig?
Per se:
ein #0 = String-Ende
zwei #0#0 = Listen-Ende
bzw. ist eigentlich ein leerer String '' ist das Ende (nichts zwischen zwei #0) und natürlich auch ein NIL (komplett leere Liste)
noch ein paar mögliche Varianten:
Delphi-Quellcode:
while P^ <> #0 do begin
Strings.Add(P);
P := StrEnd(P) + 1;
end;
while P <> '' do begin
S := P;
Strings.Add(S);
Inc(P, Length(S) + 1);
end;
while True do begin
S := P;
if S = '' then
Break;
Strings.Add(S);
Inc(P, Length(S) + 1);
end;