Einzelnen Beitrag anzeigen

Nelphin

Registriert seit: 2. Feb 2009
Ort: Kaiserslautern
71 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Daten auf Einzigartigkeit überprüfen...

  Alt 13. Dez 2009, 17:21
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;
  Mit Zitat antworten Zitat