Einzelnen Beitrag anzeigen

Michael80

Registriert seit: 20. Nov 2003
Ort: Treuchtlingen
72 Beiträge
 
Delphi 10.3 Rio
 
#1

TStringList - Listenindex überschreitet maximum

  Alt 18. Jun 2004, 11:28
Hallo Leute, ich krieg noch die krise mit dem einlesen meiner datei

also mit folgender funktion liest er mir ca 1600 zeilen ein und meldet dann
Listenindex überschreitet maximum(10). so auf anhieb würd ich sagen er hat zuviele "" und
bringt mir zuviel indizes bin aber die datei ab zeile 1585 durchgegangen und mir is nix auser
gewöhnliches aufgefallen. Seltsam ist, wenn ich ca. 150 zeilen (zwischen 1530 und 1698) rauslösch dann lauft er ganz durch

die ganze datei hat 2398 zeilen. an was könnte das sonst noch liegen?

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  masterSL : TStringList;
  detailSL : TStringList;
  ndx : Integer; // Laufvariable für Master
begin
  masterSL := TStringList.Create; // Master StringList
  detailSL := TStringList.Create; // Detail StringList
  try
    detailSL.Delimiter := ';'; // Trennzeichen der Einträge pro Zeile
    detailSL.QuoteChar := '"'; // Quoting Zeichen.
    masterSL.LoadFromFile('C:\KUNDENSTAMM.txt');
    for ndx := 0 to Pred (mastersl.Count) do
    begin
      detailsl.Clear;
      detailsl.DelimitedText := '"' + StringReplace(mastersl.Strings[ndx],';','";"',[rfReplaceAll]);
      //detailsl.savetofile('c:\test.txt');
      with IBQuery1 do
      begin
        Close;
        SQL.Text := 'INSERT INTO KUNDENSTAMM(KDNR, ANREDE, VORNAME, NACHNAME, ZUSATZ, STRASSE,ORTSTEIL,PLZ,ORT,TELEFON,TELEFAX) VALUES (:wert1,:wert2,:wert3,:wert4,:wert5,:wert6,:wert7,:wert8,:wert9,:wert10,:wert11)';
        ParamCheck := True;
        ParamByName('wert1').AsInteger := strtoint(detailsl.Strings[0]);
        ParamByName('wert2').AsString := detailsl.Strings[1];
        ParamByName('wert3').AsString := detailsl.Strings[2];
        ParamByName('wert4').AsString := detailsl.Strings[3];
        ParamByName('wert5').AsString := detailsl.Strings[4];
        ParamByName('wert6').AsString := detailsl.Strings[5];
        ParamByName('wert7').AsString := detailsl.Strings[6];
        ParamByName('wert8').AsString := detailsl.Strings[7];
        ParamByName('wert9').AsString := detailsl.Strings[8];
        ParamByName('wert10').AsString := detailsl.Strings[9];
        ParamByName('wert11').AsString := detailsl.Strings[10];
        ExecSQL;
        end;
        IBTransaction1.Commit;
    end;
  finally
    FreeAndNil (mastersl);
    FreeAndNil (detailsl);
  end;
end;
  Mit Zitat antworten Zitat