Solved

stringlist

Posted on 2001-07-18
8
334 Views
Last Modified: 2012-05-04
I am trying to ensure that a list of string i am dealing with are unique.  I decided to use a stringlist as i know it is supposed to handle duplicates but can't get my idea to work.

Does anyone know how i can use the stringlist so that if the text i am about to add is already in the stringlist it will not add it and will notify me that the string is a duplicate without causing any errors through windows, etc?

0
Comment
Question by:mantra246
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
8 Comments
 
LVL 13

Accepted Solution

by:
Epsylon earned 150 total points
ID: 6293207
Try something like this:

If sl.IndexOf(thestring) = -1 then
  sl.Add(thestring)
else
  ShowMessage(thestring + ' is already in the list');
0
 
LVL 4

Expert Comment

by:jsweby
ID: 6293213
That is exactly it; if the method property returns a value of more than -1 then the item already exists in the stringlist.

J.
0
 
LVL 27

Expert Comment

by:kretzschmar
ID: 6293251
there is another method also,
but didn't have it in mind correctly

you can set the sorted property to true,
and set the duplcate bahaviour to this what you need like
dupIgnore, dupAccept, dupAbort,..

just set this before you add the items

sorry, have not the correct property-names in mind

meikl ;-)
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 9

Expert Comment

by:ITugay
ID: 6293296
meikl :-)

yes, it doesn't work if list is not sorted.
0
 
LVL 27

Expert Comment

by:kretzschmar
ID: 6293315
hi, igor,

its really hard to give
advice just from head :-(

meikl ;-)
0
 
LVL 17

Expert Comment

by:geobul
ID: 6293407
Hi,
From Delphi help:

TStringList.Duplicates

Specifies whether duplicate strings can be added to sorted lists.

type TDuplicates = (dupIgnore, dupAccept, dupError);
property Duplicates: TDuplicates;

Description

Set Duplicates to specify what should happen when an attempt is made to add a duplicate string to a sorted list. The value of Duplicates should be one of the following.

Value     Meaning

dupIgnore     Ignore attempts to add duplicate strings to the sorted list.
dupError     Raise an EStringListError exception when an attempt is made to add duplicate strings to the sorted list.
dupAccept     Permit duplicate strings in the sorted list.

Set Duplicates before adding any strings to the list. Setting Duplicates to dupIgnore or dupError does nothing about duplicate strings that are already in the list.

Note:     Duplicates does nothing if the list is not sorted.

Regards, Geo
0
 
LVL 1

Expert Comment

by:Oli2
ID: 6293759
procedure AddToStrings(s: String var sl: TStringList);
begin
  if not sl.Sorted then
     sl.Sorted := True;
  if not sl.Duplicates = duError then
     sl.Duplicates := dupError;
  try
    sl.Append(s);
  except
    ShowMessage('This string is already in the list');
  end;
end;
//---------------------------------------------------------
Hope this helps.
I typed it here, so no checking, but it should work and give you an idea.

Cheers,
Oli
0
 

Author Comment

by:mantra246
ID: 6296121
epsylon:  ouch!  when i saw the code you gave it really hurt because it was so simple and i never thought of it till i saw it.

everyone:  Thanks so much for your input it was really appreciated - as is the time and effort you guys put in.
0

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

A lot of questions regard threads in Delphi.   One of the more specific questions is how to show progress of the thread.   Updating a progressbar from inside a thread is a mistake. A solution to this would be to send a synchronized message to the…
In this tutorial I will show you how to use the Windows Speech API in Delphi. I will only cover basic functions such as text to speech and controlling the speed of the speech. SAPI Installation First you need to install the SAPI type library, th…
This video Micro Tutorial shows how to password-protect PDF files with free software. Many software products can do this, such as Adobe Acrobat (but not Adobe Reader), Nuance PaperPort, and Nuance Power PDF, but they are not free products. This vide…
If you're a developer or IT admin, you’re probably tasked with managing multiple websites, servers, applications, and levels of security on a daily basis. While this can be extremely time consuming, it can also be frustrating when systems aren't wor…

726 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question