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.