Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: Tlistview als String speichern/laden

  Alt 27. Sep 2008, 13:11
Zitat von smallsmoker:
AnsiQuotedStr würde nicht helfen, ich habe ja geschrieben das es nicht hilft den string in "" zu setzen.
mann muss auch die leerzeichen im string ersetzen da sie beim parsen falsch erkannt werden.
Nö.
Delphi-Quellcode:
Type
  TListViewStringConverter = Class Helper For TListView
  private
    function GetAsString: String;
    procedure SetAsString(const Value: String);
  Public
    Property AsString : String Read GetAsString Write SetAsString;
  End;

{ TListViewStringReader }

function TListViewStringConverter.GetAsString: String;
Var
  sList,sRow : TStringList;
  i : Integer;

Begin
  sList := TStringList.Create;
  sRow := TStringList.Create;
  Try
  sList.Delimiter := '\';
  sRow.Delimiter := '#';
  For i := 0 To Items.Count-1 do Begin
    sRow.Clear;
    sRow.Add(Items[i].Caption);
    sRow.AddStrings(Items[i].SubItems);
    sList.Add(AnsiQuotedStr(sRow.DelimitedText,'"'));
  End;
  Finally
    sRow.Free;
    Result := SList.DelimitedText;
    sList.Free;
  End;
End;


procedure TListViewStringConverter.SetAsString(const Value: String);
Var
  sList,sRow : TStringList;
  i : Integer;
  item : TListItem;

Begin
  sList := TStringList.Create;
  sRow := TStringList.Create;
  Items.Clear;
  Try
  sList.Delimiter := '\';
  sList.DelimitedText := Value;
  sRow.Delimiter := '#';
  For i := 0 To sList.Count-1 do Begin
    sRow.DelimitedText := AnsiDequotedStr (sList[i],'"');
    Item := Items.Add;
    Item.Caption := sRow[0];
    sRow.Delete(0);
    Item.SubItems.Assign(sRow);
  End;
  Finally
    sRow.Free;
    sList.Free;
  End;
End;

procedure TForm1.Button1Click(Sender: TObject);
Var
  s : String;

begin
  s := ListView1.AsString;
  ListView1.AsString := s;
end;
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat