Forum: Object-Pascal / Delphi-Language
by Bjoerk,
12. Jan 2015
Ich glaub, ich werd für Listen überhaupt keine Records mehr verwenden.
procedure TDiceEncryptionSortKey.SetKey(const Value: string);
var
I, J: integer;
begin
FKey := Value;
FItems.Clear;
for I := 1 to Length(FKey) do
begin
Forum: Object-Pascal / Delphi-Language
by Bjoerk,
11. Jan 2015
Gut, das geht natürlich. Auf die Idee bin ich nicht gekommen. Bin mit Uwes Algo aber eigentlich zufrieden und die Keys sind nicht sooo lang.
BTW, wie kriegt man den TSortRec in eine TList ohne New und Dispose zu verwenden?
TSortRec = record
C: Char;
Pos: Integer;
end;
Forum: Object-Pascal / Delphi-Language
by Bjoerk,
11. Jan 2015
Ja. Sorry. Dann stimmt's. Thanx! Hatte ich übersehen. Brauch die Inidces später string kompatibel.
procedure SortKey(const Key: string; Dest: TIntegerList);
var
Ch: Char;
I: Integer;
LastKey: Char;
MinKey: Char;
MinPos: Integer;
Forum: Object-Pascal / Delphi-Language
by Bjoerk,
11. Jan 2015
Uwe, dein Code ist nicht korrekt. :oops:
Forum: Object-Pascal / Delphi-Language
by Bjoerk,
11. Jan 2015
So isses. Weil nacher weitere strings der gleichen Länge danach sortiert werden. So geht’s z.B. eben nicht.
for I := 1 to Length(TempKey) - 1 do
for J := I + 1 to Length(TempKey) do
if TempKey > TempKey then
begin
C := TempKey;
TempKey := TempKey;
TempKey := C;
Dest.Exchange(I, J);
Forum: Object-Pascal / Delphi-Language
by Bjoerk,
11. Jan 2015
Ja. Sorry.
NOTEBOOK
12345678
BEKNOOOT
54812673
Forum: Object-Pascal / Delphi-Language
by Bjoerk,
11. Jan 2015
Ich muß zum Beispiel das Wort NOTEBOOK so sortieren, daß die Reihenfolge doppelt vorkommender Buchstaben erhalten bleibt. Hier also 54812673. Ein herkömmliches stabiles Sortierverfahren berücksichtigt das nicht (weil O eben O). Ich brech mir dabei grad einen ab. :oops: Hat jemand eine bessere Idee? (Die Indices (Dest) brauch ich im Programm später).
function MinCharPos(const S: string; const...