Solved

# how can i search if string exist in array ?

Posted on 2016-11-21
55 Views
i have this array of string

``````function Explode(const Separator, S: string; Limit: Integer = 0): TArray;
var
SepLen       : Integer;
F, P         : PChar;
ALen, Index  : Integer;
begin
SetLength(Result, 0);
if (S = '') or (Limit < 0) then
Exit;
if Separator = '' then
begin
SetLength(Result, 1);
Result[0] := S;
Exit;
end;
SepLen := Length(Separator);
ALen := Limit;
SetLength(Result, ALen);

Index := 0;
P := PChar(S);
while P^ <> #0 do
begin
F := P;
P := StrPos(P, PChar(Separator));
if (P = nil) or ((Limit > 0) and (Index = Limit - 1)) then
P := StrEnd(F);
if Index >= ALen then
begin
Inc(ALen, 5); //
SetLength(Result, ALen);
end;
SetString(Result[Index], F, P - F);
Inc(Index);
if P^ <> #0 then
Inc(P, SepLen);
end;
if Index < ALen then
SetLength(Result, Index); //
end;

type
TArray = array of string;

.....

var
arr: TArray;
begin
arr := explode(',', 'Mark,Michel,segment,');
//so this result will become arr[0] << Mark etc..
end;
``````

as the code clearly shows that i can get arrays from arr variable
but i want to search in all arr

as example
``````if arr contain 'Mark' then

do somthing ..
``````
0
Question by:dolphin King
• 2

LVL 26

Expert Comment

ID: 41896680
I assume that Explode function is not yours. But anyway... here it is...
``````var
i: Integer;
...
arr := explode(',', 'Mark,Michel,segment,');
for i := Low(arr) to High(arr) do
begin
if arr[i] = 'Mark' then //or use common Pos function if like.... and you can compare UpperCase too...
begin
//do something....
Break; //go out of loop
end;
end;
``````
0

Author Comment

ID: 41896692
i know that i can loop , i did not want to do that i was trying to search directly inside the arrays ,

explode functions are all over google search ...
0

LVL 26

Accepted Solution

Sinisa Vuk earned 500 total points
ID: 41896713
So, you don't need explode string as an array elements...
If you use Pos function?
``````,,,
if Pos(  ',' + 'Mark' + ',' , ',' + 'Mark,Michel,segment,' + ',') > 0 then
begin
//...
end;
``````

I concatenate separator to both strings at the start and the end of strings...
0

## Featured Post

Question has a verified solution.

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

### Suggested Solutions

This article explains how to create forms/units independent of other forms/units object names in a delphi project. Have you ever created a form for user input in a Delphi project and then had the need to have that same form in a other Delphi proj…