Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#21

Re: TStringlist, THashedStringlist gibts nichts schnelleres?

  Alt 24. Mär 2010, 15:01
Dann versuch es mal so:
Delphi-Quellcode:
begin
  Screen.Cursor := crHourGlass;
  startZeit := now;
  x := tstringlist.Create;
  x.LoadFromFile( 'C:\DB\DatenTest.tmp' );

  x.Text := StringReplace( x.Text, 'ß', 'SSSSSSS', [ rfReplaceAll ] );
  x.Sort;
  x.Text := StringReplace( x.Text, 'SSSSSSS', 'ß', [ rfReplaceAll ] );

  x.SaveToFile( 'sortiert.txt' );


  // ab hier wird es extrem langsam

  a := 0;
  // StringGrid auf die maximal mögliche Zeilenanzahl setzen
  stringgrid1.RowCount := x.Count;

  for b := 0 to x.Count - 1 do
    begin
      stringgrid1.Row[ a ].BeginUpdate;
      try

        if b > 0 then
          begin
            if x.strings[ b ] = x.strings[ b - 1 ] then
              begin
                stringgrid1.cells[ 1, a ] := inttostr( strtoint( stringgrid1.cells[ 1, a ] ) + 1 )
              end
            else
              begin
                inc( a );
                stringgrid1.cells[ 1, a ] := '1';
                stringgrid1.cells[ 0, a ] := x.strings[ b ];
              end;
          end
        else
          begin
            stringgrid1.cells[ 0, a ] := x.strings[ b ];
            stringgrid1.cells[ 1, a ] := '1';
          end;

      finally
        stringgrid1.Row[ a ].EndUpdate;
      end;
    end;
  // Jetzt setzen wir die korrekte Anzahl der Zeilen
  stringgrid1.RowCount := a;

  x.Destroy;
  StopZeit := now;
  StatusBar6.Panels[ 1 ].Text := 'SuchZeit : ' + FormatDateTime( 'nn:ss:zzz', StopZeit - startZeit );
  Screen.Cursor := crDefault;
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat