Zitat von
Uwe Raabe:
Du sagst leider nicht, um was für Daten es sich bei A, B, C, ... handelt. Falls es Strings sind oder etwas, das man als String darstellen kann, bietet sich eine TStringlist an:
Delphi-Quellcode:
var
daten: TStringlist;
idx: Integer;
begin
...
daten := TStringList.Create;
{ dupIgnore sorgt dafür, daß bei Add für bereits vorhandene Einträge der alte Index zurückgegeben wird }
daten.Duplicates := dupIgnore;
for x in <Eingangsdaten> do begin // Schleife über Datenmenge
idx := daten.Add(x);
<add Index (idx)> // wie auch immer das aussehen soll
end;
...
end;
erstmal vielen dank für die antwort(en)...
da meine daten ursprünglich aus einer stringlist kommen und ich sie erst später in vektoren umbaue würde das funktionieren...
aber...
dupIgnore funktioniert irgendwie nur, wenn die stringlist vorher sorted wird und damit würfel ich die daten komplett durcheinander, ich brauche sie aber in der urpsrungsreihenfolge....
und das mit dem index rausschreiben habe ich nicht verstanden... denn wenn das funzen würde, könnte es sein das mir die reihenfolge egal sein kann... hauptsache in der indexliste stimmt sie wieder.
denn das hier
idx := daten.Add(x);
bringt mir nur den fehler Inkompatible Typen string und Integer...
zur zeit habe ich folgendes:
Delphi-Quellcode:
procedure TForm1.Button19Click(Sender: TObject);
var i:integer;
var idx:integer;
begin
slopt.clear;
slopt.Sorted:=true; // ohne das geht es nicht, aber mit kann ichs nicht gebrauchen.... oder doch??
slopt.duplicates:=dupignore;
for i := 0 to sl.count - 1 do
slopt.Add(sl[i]);
// idx := (slopt.Add(i)); // auskommentiert, weils nicht funktioniert...
end;