Hallo,
Das mit dem Trennen das auftrennen in ButtonClick und Funktion gemeint ist, ist mir dann heute Morgen eingefallen.
Anbei mein noch ziemlich unreifer erster Versuch:
Delphi-Quellcode:
function Testfunktion(SL:TStringlist):Tstrings;
var a,b :integer;
SList : TStringlist;
SG: TStringgrid;
begin
a := 0;
// StringGrid auf die maximal mögliche Zeilenanzahl setzen
SG.RowCount := SList.Count;
for b := 0 to SList.Count - 1 do
begin
SG.Rows[ a ].BeginUpdate;
try
if b > 0 then
begin
if SList.strings[ b ] = SList.strings[ b - 1 ] then
begin
SG.cells[ 1, a ] := inttostr( strtoint( SG.cells[ 1, a ] ) + 1 )
end
else
begin
inc( a );
SG.cells[ 1, a ] := '1';
SG.cells[ 0, a ] := SList.strings[ b ];
end;
end
else
begin
SG.cells[ 0, a ] := SL.strings[ b ];
SG.cells[ 1, a ] := '1';
end;
finally
SG.Rows[ a ].EndUpdate;
end;
end;
// Jetzt setzen wir die korrekte Anzahl der Zeilen
SG.RowCount := a;
Result := SG.Rows[a];
end;
procedure TForm1.Button2Click(Sender: TObject);
var
startzeit,stopzeit:TDateTime;
SL : TStringlist;
begin
Screen.Cursor := crHourGlass;
startZeit := now;
SL := TStringlist.Create;
SL.LoadFromFile( 'DatenTest.tmp' );
SL.Text := StringReplace( SL.Text, 'ß', 'SSSSSSS', [ rfReplaceAll ] );
SL.Sort;
SL.Text := StringReplace( SL.Text, 'SSSSSSS', 'ß', [ rfReplaceAll ] );
SL.SaveToFile( 'sortiert.txt' );
Testfunktion(SL) ;
SL.Free;
StopZeit := now;
Label1.Caption := FormatDateTime( 'nn:ss:zzz', StopZeit - startZeit );
Screen.Cursor := crDefault;
end;
Es gibt einen Zugriffsfehler innerhalb der Funktion aber warum?