Einzelnen Beitrag anzeigen

Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Einträge aus listview speichern und öffnen

  Alt 11. Nov 2004, 19:43
dann wird es daran liegen das du Delphi 5 hast (ich hab delphi 7 und das mit dem delimiter gibt es erst seit delphi 6) Ich bastel das ganze mal mit anderen funktionen zusammen.

[...]
Hier der Source (Laden Methode abgeändert)
Delphi-Quellcode:
procedure splitString(const Source: String; const Delimiter: String; var Dest: TStringlist);
var count: Integer;
      LStartpos, LEndepos, LSourcelength: Integer;
      LDelimiterLength : Integer;
begin
   Dest.Clear;
   count := 1;
   LStartpos := 0;
   LEndepos := 0;
   LSourcelength := length(Source);
   LDelimiterLength := Length(Delimiter);
   while count <= LSourcelength do begin
      if copy(Source, count, LDelimiterLength) = Delimiter then begin
         LEndepos := count;
         dest.Add(copy(Source, LStartpos + 1, LEndepos - LStartpos - 1));
         LStartpos := count + LDelimiterLength - 1;
         inc(count,LDelimiterLength);
      end
      else begin
         inc(count);
      end;
   end;
   if LEndePos <> Count - LDelimiterLength then
         dest.Add(copy(Source, LStartpos + 1, count - LStartpos - 1));
end;

//laden
procedure TForm1.BtnLoadClick(Sender: TObject);
var LListe1, LListe2: TStringlist;
    LCount1, LCount2: Integer;
    LItem: TListItem;
begin
  LListe1 := TStringList.Create;
  LListe2 := TStringList.Create;
  LListe1.LoadFromFile('YourFilename');
  ListView1.Clear;
  for LCount1 := 0 to LListe1.Count - 1 do
  begin
    LItem := ListView1.Items.Add;
    splitString(LListe1.Strings[LCount1], '|', LListe2);
    for LCount2 := 0 to LListe2.Count - 1 do
    begin
      if LCount2 = 0 then
        LItem.Caption := LListe2.Strings[LCount2]
      else
        LItem.SubItems.Add(LListe2.Strings[LCount2]);
    end;
  end;
  LListe2.Free;
  LListe1.Free;
end;
Beim speichern und/oder laden wandert bei mir nix weiter nach links. Oder meinst du die spaltenbreite? Das wird daran liegen das beim laden kurzzeitig die ganze liste geleert wird. Setzt einfach mal die Spaltenbreite auf "-2" dann passt diese sich automatich auf die optimale Breite an. Anstelle von "|" kannst du auch "|||" oder irgend welche anderen trennzeichen verwenden. Zu empfehlen wäre zum Beispiel "µµµµ" da es seeeehr unwahrscheinlich ist das "µ" 4 mal hintereinander in irgend einer Spalte vorkommt.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat