Einzelnen Beitrag anzeigen

Franzelchen

Registriert seit: 22. Mär 2007
82 Beiträge
 
#37

Re: TStringlist, THashedStringlist gibts nichts schnelleres?

  Alt 10. Apr 2010, 14:46
Ok, nach der Neuinstallation meines Rechners hab ich eine Lösung:
Delphi-Quellcode:
function VerabeiteDatenAusDatei( const FileName : string; const Ergebnis : TStringList ) : boolean;
var
  sL : TStringList;
  i,Zahl: integer;
begin
  // Erstmal ist das Ergebnis noch nicht in Ordnung
  Result := False;

  if FileExists( FileName ) then
    begin
      sL := TStringList.Create;
      try
        sL.LoadFromFile( FileName );
        // Jetzt machen wir was ganz Tolles mit den Daten und schreiben das in die TStringList Ergebnis
// sL.Text:= StringReplace(sL.Text,'ß','SSSSSSS', [rfReplaceAll]);
// sL.Sort;
// sL.Text:= StringReplace(sL.Text,'SSSSSSS','ß',[rfReplaceAll]);
// sL.SaveToFile('sortiert.txt');
          Zahl := 1;
          for i:=0 to sL.count-1 do
          begin
            if i>0 then
             begin
             if sl.Strings[i]<>sL.Strings[i-1] then
              begin
              Zahl := 1;
              end;

             if sL.strings[i]=sL.Strings[i-1] then
              begin
              Zahl := Zahl+1;
              end;
             end;

             Ergebnis.Add(sl.Strings[i]+#9+IntToStr(Zahl)) ;

          end;

   // Ergebnis.Add( sl[ 0 ] );
        // Ist alles korrekt durchlaufen und sind die Ergebnisse so korrekt dann
        Result := True;
      finally
        sL.Free;
      end;
    end;
end;
Das Ergebnis dieser Funktion ist zB.

NameA ---> 1
NameA ---> 2
NameA ---> 3
NameB ---> 1
NameB ---> 2 usw.

Ziel der Funktion

NameA ---> 3
NameB ---> 2 usw.

Irgendwie muß ich bei dem Vergleich if sl[i] = sl[i-1] etwas einfügen welches mehrere i einliest und zählt. Anschließend den maximalen Zahlenwert ausgibt der dann mit einem sl[i] in die Ergebnisstringliste geschrieben wird.

Ich habe auch andere Funktionen und Prozeduren aus DP versucht, aber keine wirklich schnellen gefunden.

Ich hoffe auf Eure weitere Unterstützung.
  Mit Zitat antworten Zitat