Einzelnen Beitrag anzeigen

klebe7

Registriert seit: 2. Okt 2008
19 Beiträge
 
#1

Param. einer URL ändern: Listenindex überschreitet das Max.

  Alt 20. Jan 2009, 23:57
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?
//
  Mit Zitat antworten Zitat