Hmmm du könntest dich vielleicht mit Bucketsort beschäftigen?
Dafür würde ich dann ein zweidimensionales Array nehmen und vorher einen Record typisieren, in der du Zeichen/Position speicherst.
Delphi-Quellcode:
type
TCharPosArr = record
CharPosArr : array of TCharPos;
CharSet : TSysCharSet; // Darin kann man mehrere Zeichen speichern die du dann mit "in" überprüfen kannst
end;
TCharPos = record
C : Char; // Zeichen
P : Integer; // Position
end;
var
CharPos : array [0..25] of TCharPosArr;
Und jetzt musst du zuerst dein Array initialisieren:
Delphi-Quellcode:
CharPos[0].CharSet := ['aAäÄ']; // d.h. alle a/A/ä/Ä werden darein sortiert
CharPos[1].CharSet := ['...'];
Das kannst du natürlich auch in eine Schleife packen (wobei du dann die Umlaute (evtl.) mit beachten musst!).
Und dann gehst du jetzt jedes Zeichen durch und testest, ob das Zeichen zu den erstem zum zweiten etc. passt:
Delphi-Quellcode:
if Str[i] in CharPos[j].CharSet then
begin
// Einen neuen Eintrag anfügen
SetLength(...);
CharPos[High(CharPos)]....
// Und dann das Gesuche des richtigen "Korbes" abbrechen
Break;
end;
Ich hoffe das war einigermaßen verständlich.
MfG
xZise