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;