![]() |
Re: KillDuplicates gibt Fehler mit CoolTrayIcon?
Marabu, list index out of bounds(2)
wobei ich die Anzahl neu definieren muss denke ich mal? dan ist das Problem geloesst, hoffe ich, oder?
Delphi-Quellcode:
MFG, Lucius.
try
sl.LoadFromFile(label2.caption + '\torrents.db'); //anzahl lesen KillDuplicatesEx(sl, 2); anzahl:=strtoint(sl[0]); <---- list index out of bounds(2) for i:=0 to anzahl do begin listitem:=listview.Items.add; //caption des items lesen listitem.Caption := sl[i*2+1]; //alle subitems des items mit einmal lesen listitem.SubItems.CommaText := sl[i*2+2]; end; finally |
Re: KillDuplicates gibt Fehler mit CoolTrayIcon?
Lucius, du hast doch gar keine Anzahl in der ersten Zeile von torrents.db stehen - oder? Und deine Indexberechnung in der Schleife kann nicht funktionieren. Wenn der Aufbau der Datei so ist, wie du es weiter oben behauptest, dann musst du es so probieren:
Delphi-Quellcode:
Hoffentlich habe ich mich nicht zu oft verschrieben...
var
FieldList: TStringList; begin FieldList := TStringList.Create; // ... try sl.LoadFromFile(label2.caption + '\torrents.db'); KillDuplicatesEx(sl, 2); for i := 0 to Pred(sl.Count) do begin FieldList.CommaText := sl[i]; with ListView.Items.Add do begin Caption := FieldList[0]; FieldList.Delete(0); SubItems.Assign(FieldList); end; end; finally FieldList.Free; // ... end; // ... end; marabu |
Re: KillDuplicates gibt Fehler mit CoolTrayIcon?
So ich werde mich erstmal ein Sueppchen essen und dann deine Function ausprobieren marabu, denn ich brauche erstmal ne kleine Pauze mir kwalmt schon der Kopf. :wall:
MFG, Lucius. |
Re: KillDuplicates gibt Fehler mit CoolTrayIcon?
So marabu, habe deine Function ausprobiert aber nog immer Listindex out of Bounds(2).
Delphi-Quellcode:
So sieht die torrents.db vor dem laden aus.
try
sl.LoadFromFile(label2.caption + '\torrents.db'); //anzahl lesen KillDuplicatesEx(sl, 2); for i := 0 to Pred(sl.Count) do <------ out of bounds(2) begin FieldList.CommaText := sl[i]; with ListView.Items.Add do begin Caption := FieldList[0]; FieldList.Delete(0); SubItems.Assign(FieldList); end; end; finally FieldList.Free; Zitat:
MFG, Lucius. |
Re: KillDuplicates gibt Fehler mit CoolTrayIcon?
Jetzt wo du satt bist, solltest du mal nachsehen, ob da Leerzeilen zwischen den Datenzeilen in der Textdatei sind.
marabu |
Re: KillDuplicates gibt Fehler mit CoolTrayIcon?
Ja es gibt Leerzeilen in der Datei, siehe Zitat.
|
Re: KillDuplicates gibt Fehler mit CoolTrayIcon?
Raus damit. Wofür sollen die gut sein?
marabu |
Re: KillDuplicates gibt Fehler mit CoolTrayIcon?
Das ist die Speicher Function die verursacht die Leerzeilen.
Delphi-Quellcode:
Var Sl:Tstringlist;
i:integer; begin sl:=TStringList.Create; try //anzahl schreiben sl.Add(inttostr(ListView.Items.count-1)); for i:=0 to ListView.Items.count-1 do begin //caption des items schreiben sl.Add(ListView.Items[i].Caption); //alle subitems des items mit einmal reinschreiben sl.Add(ListView.Items[i].SubItems.CommaText) end; sl.SaveToFile(label2.caption + '\torrents.db'); finally sl.free; end; |
Re: KillDuplicates gibt Fehler mit CoolTrayIcon?
Lucius, du darfst die Anzahl nicht mit rausschreiben - es ist dann keine CSV-Datei mehr und du bekommst die Zahl ja später problemlos wieder, wenn du die Datei mit LoadFromFile() einliest. Außerdem müssen alle Spaltenwerte in einer Zeile stehen, damit der Code zum Einlesen funktioniert, den ich dir weiter oben (#22) gegeben habe.
Delphi-Quellcode:
marabu
var
slLines, slFields: TStringList; i: integer; begin slFields := TStringList.Create; slLines := TStringList.Create; try with ListView do for i := 0 to Pred(Items.Count) do begin slFieldsl.Assign(Items[i].SubItems); slFields.Insert(0, Items[i].Caption); slLines.Add(sfFields.CommaText); slFields.Clear; end; slLines.SaveToFile(label2.caption + '\torrents.db'); finally slLines.Free; slFields.Free; end; end; |
Re: KillDuplicates gibt Fehler mit CoolTrayIcon?
Na marabu,
Nachdem ich alles eingebaut habe wie du es sagtest funktioniert es, aber er laedt die Daten nicht mehr so schnell dan die andere Function in der Listview, eigentlich Schade. Das war ne schwere Geburt aber es klappt. Herzlichen Dank an alle die geholfen haben insbesondere marabu. MFG, Lucius. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz