hi,
hab da auch mal was gecodet...
ist aber noch nicht fertig aber hab jetzt keine zeit mehr, ich denke, das kannst du auch selber noch fertig schreiben
Delphi-Quellcode:
function Split(const fText: String; const fSep: Char; fTrim: Boolean=false; fQuotes: Boolean=false):TStringList;
var vI: Integer;
vBuffer: String;
vOn: Boolean;
begin
Result:=TStringList.Create;
vBuffer:='';
vOn:=true;
for vI:=1 to Length(fText) do
begin
if (fQuotes and(fText[vI]=fSep)and vOn)or(Not(fQuotes) and (fText[vI]=fSep)) then
begin
if fTrim then vBuffer:=Trim(vBuffer);
if vBuffer='' then vBuffer:=fSep;
if vBuffer[1]=fSep then
vBuffer:=Copy(vBuffer,2,Length(vBuffer));
Result.Add(vBuffer);
vBuffer:='';
end;
if fQuotes then
begin
if fText[vI]='"' then
begin
vOn:=Not(vOn);
Continue;
end;
if (fText[vI]<>fSep)or((fText[vI]=fSep)and(vOn=false)) then
vBuffer:=vBuffer+fText[vI];
end else
if fText[vI]<>fSep then
vBuffer:=vBuffer+fText[vI];
end;
if vBuffer<>'' then
begin
if fTrim then vBuffer:=Trim(vBuffer);
Result.Add(vBuffer);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var s1: tstringlist;
i, i2: integer;
s: string;
begin
s1 := tstringlist.Create;
for i:=0 to memo1.Lines.Count-1 do
begin
s1.Clear;
s := memo1.Lines.Strings[i];
s1 := split(s, ' ', true);
s := s1.Strings[0]; // nicht sicher, falls s1.count = 0, musst du ändern
for i2:=1 to s1.Count-1 do
if pos(s1.Strings[i2], s) = 0 then // das darf man nicht mit pos() lösen, den fehler bemerkst du sicher selbst.
s := s+' '+s1.Strings[i2];
memo1.Lines.strings[i] := s;
end;
end;