Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi KillDuplicates gibt Fehler mit CoolTrayIcon? (https://www.delphipraxis.net/58006-killduplicates-gibt-fehler-mit-cooltrayicon.html)

lucius 30. Nov 2005 11:29

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:
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
MFG, Lucius.

marabu 30. Nov 2005 11:46

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:
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;
Hoffentlich habe ich mich nicht zu oft verschrieben...

marabu

lucius 30. Nov 2005 12:00

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.

lucius 30. Nov 2005 12:35

Re: KillDuplicates gibt Fehler mit CoolTrayIcon?
 
So marabu, habe deine Function ausprobiert aber nog immer Listindex out of Bounds(2).
Delphi-Quellcode:
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;
So sieht die torrents.db vor dem laden aus.
Zitat:

2005-11-30,"Muziek - Album","Rene Froger - Pure Christmas (2005)","102.91 MB","7 seeders and 20 leechers","172.12 kB/s",http://www.liquidtorrent.org/details.php?id=8607&hit=1,"http://www.liquidtorrent.org/download.php/8607/Rene Froger - Pure Christmas.torrent" ////Doppelt muesste also raus////

2005-11-30,"Muziek - Album","Rene Froger - Pure Christmas (2005)","102.91 MB","7 seeders and 20 leechers","172.12 kB/s",http://www.liquidtorrent.org/details.php?id=8607&hit=1,"http://www.liquidtorrent.org/download.php/8607/Rene Froger - Pure Christmas.torrent"

2005-11-30,"Apps - PC","Driver Genius Professional Edition 2005, Version:6.0.1882","5.66 MB","22 seeders and no leecher","22.43 kB/s",http://www.liquidtorrent.org/details.php?id=8606&hit=1,"http://www.liquidtorrent.org/download.php/8606/Driver Genius Professional Edition 2005.rar.torrent"

2005-11-30,"Films - DVDr","End of Days","4.51 GB","no seeders and 11 leechers","51.91 kB/s",http://www.liquidtorrent.org/details.php?id=8605&hit=1,"http://www.liquidtorrent.org/download.php/8605/end of days.torrent"
Ich wuesste nicht was ich noch alles probieren muesste?

MFG, Lucius.

marabu 30. Nov 2005 12:47

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

lucius 30. Nov 2005 12:48

Re: KillDuplicates gibt Fehler mit CoolTrayIcon?
 
Ja es gibt Leerzeilen in der Datei, siehe Zitat.

marabu 30. Nov 2005 12:50

Re: KillDuplicates gibt Fehler mit CoolTrayIcon?
 
Raus damit. Wofür sollen die gut sein?

marabu

lucius 30. Nov 2005 12:52

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;

marabu 30. Nov 2005 13:06

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:
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;
marabu

lucius 30. Nov 2005 13:31

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 16:29 Uhr.
Seite 3 von 4     123 4      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz