Einzelnen Beitrag anzeigen

100nF

Registriert seit: 7. Nov 2004
639 Beiträge
 
#18

Re: Doppelte Einträge entfernen?

  Alt 5. Aug 2005, 19:38
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;
  Mit Zitat antworten Zitat