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;