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;