Einzelnen Beitrag anzeigen

Benutzerbild von milos
milos

Registriert seit: 14. Jul 2008
Ort: Bern (CH)
508 Beiträge
 
Delphi 11 Alexandria
 
#1

ListView - Mache ich was Falsch?

  Alt 9. Apr 2015, 15:16
edit: bild hinzugefügt

Hallo,

ich muss zum testen mehrere Personen aus zufallsnamen generieren und diese dann darstellen.
Ich habe 2 Funktionen.
Die 1. zum generieren und die 2. zum Laden.

Beim Generieren wird die Liste richtig dargestellt, aber beim Laden werden fälschlicherweise immer die vorherigen Werte aus der Liste übernommen.

Meine Frage ist, mache ich hier was falsch und sehe es nach 10 minuten immer noch nicht oder muss das Problem in der TBinObject klasse liegen?
Delphi-Quellcode:
procedure TForm1.btn2Click(Sender: TObject);
var
  bin : TBinObject;
  c: Integer;

  LListItem : TListItem;

  LBinItem : TBinItem;
  x: Integer;

  StartTime : TDateTime;
begin
  bin := TBinObject.Create;
  bin.LoadFromFile('personen.txt');
  lv1.Clear;

  StartTime := Now;
  for c := 0 to bin.Count-1 do
  begin
    LBinItem := bin[c];

    LListItem := lv1.Items.Add;
    LListItem.Caption := ByteListToString(LBinItem[0]);

    for x := 1 to LBinItem.Count-1 do
    begin
      LListItem.SubItems.Add(ByteListToString(bin[c][x]))
    end;
  end;

  lbl2.Caption := FloatToStr(MilliSecondsBetween(now,starttime)/1000)+'s';
end;
Im vergleich dazu, das generieren.

Delphi-Quellcode:
procedure TForm1.btn1Click(Sender: TObject);
var
  c: Integer;
  x: Integer;
  StartTime : TDateTime;
  Bin : TBinObject;

  AListItem : TListItem;

  LVorname, LNachname : string;
begin
  Bin := TBinObject.Create;
  StartTime := Now;
  lv1.Clear;
  for c := 0 to StrToInt(lbledt1.Text)-1 do
  begin
    LVorname := mmo1.Lines[Random(mmo1.Lines.Count)];
    LNachname := mmo2.Lines[Random(mmo2.Lines.Count)];


    Bin.Add(TBinItem.Create);

    Bin[c].Add(StringToByteList(c.ToString()));
    Bin[c].Add(StringToByteList(LVorname));
    Bin[c].Add(StringToByteList(LNachname));


    AListItem := lv1.Items.Add;
    AListItem.Caption := c.ToString();
    AListItem.SubItems.Add(LVorname);
    AListItem.SubItems.Add(LNachname);

    Caption := c.ToString();
  end;

  Bin.SaveToFile('personen.txt');


  lbl2.Caption := FloatToStr(MilliSecondsBetween(now,starttime)/1000)+'s';
end;
Einzelne Werte funktionieren ohne probleme und ich wüsste wirklich nicht mehr wo suchen.

Freundliche Grüsse
Miniaturansicht angehängter Grafiken
y0oi.jpg  
Milos
  Mit Zitat antworten Zitat