Hallo,
Ich habe nach langen suchen endlich den Fehler in meiner Anwendung gefunden und habe hier mal eine Prozedur, die den Fehler veranschaulicht.
Delphi-Quellcode:
procedure testfunc(const s: string; sl: TStrings);
var
i: Integer;
t: string;
begin
sl.Clear;
with TStringList.Create do
try
Delimiter := '&';
StrictDelimiter := True;
DelimitedText := s;
for i := 0 to Pred(Count) do
begin
t := ValueFromIndex[i];
//showmessage(t);
ValueFromIndex[i] := ValueFromIndex[i] + '!test!';
sl.Add(DelimitedText);
ValueFromIndex[i] := t;
end;
finally
Free;
end;
end;
Folgender Aufruf klappt ohne Probleme:
Delphi-Quellcode:
var sl:tstringlist;
begin
sl:=tstringlist.create;
testfunc('http://test.de/index.php?id=5&s=abc&leer=',sl);
showmessage(sl.text);
end;
Aber folgender Aufruf erzeugt den Fehler:
Delphi-Quellcode:
var sl:tstringlist;
begin
sl:=tstringlist.create;
testfunc('http://test.de/index.php?id=5&s=&leer=',sl);
showmessage(sl.text);
end;
Kann mir jemand sagen, wieso das so ist und wie man das verhindern kann?
Eigentlich hätte ich diese Ausgabe erwartet:
Zitat:
http://test.de/index.php?id=5!test!&s=&leer=
http://test.de/index.php?id=5&s=!test!&leer=
http://test.de/index.php?id=5&s=&leer=!test!
//
Ich habe herausgefunden, dass der Fehler nur auftritt, wenn 2 mal hintereinander ein leerer Parameter in der
URL vorkommt.
Wieso ist das so, etwa ein Bug?
//