سؤال

I am parsing a dataset and assigning values to TStringList i want to avoid the duplicates. I use the following code but still duplicates are inserted.

  channelList := TStringList.Create;
  channelList.Duplicates := dupIgnore;
  try
    dataset.First;
    while not dataset.EOF do
    begin
        channelList.Add(dataset.FieldByName('CHANNEL_INT').AsString)  ;
        dataset.Next;
    end;

why does the duplicates added?

هل كانت مفيدة؟

المحلول

You did read http://docwiki.embarcadero.com/Libraries/XE2/en/System.Classes.TStringList.Duplicates , didn't you ?

Then you missed the most repeated word there - "sorted"

channelList.Sorted := true

var F: TField;

channelList := TStringList.Create;
channelList.Sorted := True;
channelList.Duplicates := dupIgnore;

try
   dataset.First;
   F := dataset.FieldByName('CHANNEL_INT');
   while not dataset.EOF do
   begin
      channelList.Add(F.AsString);
      dataset.Next;
   end;

نصائح أخرى

Think out of the box and avoid the duplicates up front?

I don't know what DB you are using but for example on SQL server it is just a matter of querying:

'SELECT DISTINCT CHANNEL_INT FROM MYTABLE';

and then you can add the results to your TStringList without being worried about duplicates.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top