Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.11.01;
Скачать: CL | DM;

Вниз

проверить содержится ли значение в массиве   Найти похожие ветки 

 
Ak47   (2009-09-03 15:43) [0]

емеется статический массив:

 arr_index_Headers: array [0..7] of Integer = (0, 8, 12, 18, 21, 28, 31, 38);

можно ли без цикла проверить содержится ли значение в массиве, пробовал использовать IN не получилось.


 
Romkin ©   (2009-09-03 15:46) [1]

Можно!
Result := False;
if arr_index_Headers[0] = A then
begin
 Result := True;
 Exit;
end;
if arr_index_Headers[1] = A then
begin
 Result := True;
 Exit;
end;
if arr_index_Headers[2] = A then
begin
 Result := True;
 Exit;
end;
if arr_index_Headers[3] = A then
begin
 Result := True;
 Exit;
end;
if arr_index_Headers[4] = A then
begin
 Result := True;
 Exit;
end;
if arr_index_Headers[5] = A then
begin
 Result := True;
 Exit;
end;
if arr_index_Headers[6] = A then
begin
 Result := True;
 Exit;
end;if arr_index_Headers[7] = A then
begin
 Result := True;
 Exit;
end;


 
Ak47   (2009-09-03 15:48) [2]

круто, а если серьезно


 
cwl ©   (2009-09-03 15:48) [3]

создать массив, каждый элемент A[i] которого будет показывать - содержится ли i в вышеприведенном массиве
// размер массива - по обстоятельствам %>


 
Leonid Troyanovsky ©   (2009-09-03 15:49) [4]


> Ak47   (03.09.09 15:43)  
> емеется статический массив:

See Set.

Если в жизни это дейс-но Integer, то
http://delphimaster.net/view/2-1251711913/
and TBits class.

--
Regards, LVT.


 
Romkin ©   (2009-09-03 15:49) [5]

Но можно проще:
const
 index_Headers: set of byte = [0, 8, 12, 18, 21, 28, 31, 38];

и юзать in


 
Anatoly Podgoretsky ©   (2009-09-03 15:51) [6]

> Ak47  (03.09.2009 15:43:00)  [0]

IN это для множеств.


 
Ak47   (2009-09-03 15:51) [7]


> Но можно проще:const  index_Headers: set of byte = [0, 8,
>  12, 18, 21, 28, 31, 38];и юзать in


вот то что
> Leonid Troyanovsky ©   (03.09.09 15:49) [4]
> > Ak47   (03.09.09 15:43)  > емеется статический массив:
> See Set


то что надо. про set совсем забыл. Спасибо.


 
Дмитрий С ©   (2009-09-03 16:18) [8]

А IN для сета не использует циклы?


 
Leonid Troyanovsky ©   (2009-09-03 16:32) [9]


> Дмитрий С ©   (03.09.09 16:18) [8]

> А IN для сета не использует циклы?

Циклы бывают разные. Тут, видимо, имелось ввиду ЯВУ.
Возможно, для конкретного 0..7 может что и есть проще.

--
Regards, LVT.


 
Romkin ©   (2009-09-03 18:02) [10]


> А IN для сета не использует циклы?

Да вообще-то не должен.


 
Sha ©   (2009-09-03 18:38) [11]

//имеется статический массив:
//arr_index_Headers: array [0..7] of Integer = (0, 8, 12, 18, 21, 28, 31, 38);
//можно ли без цикла проверить, содержится ли значение в массиве?
procedure TForm1.Button1Click(Sender: TObject);
const
 //0100 0000 1001 0000 0010 0100 0001 0001 0000 0001
 ArrIndex= $4090241101;
 Captions: array[boolean] of string= ("нет", "да");
var
 i: integer;
begin;
 i:=StrToIntDef(Edit1.Text,-1);
 Edit2.Text:=Captions[(dword(i)<=63) and odd(ArrIndex shr i)];
 end;


 
Anatoly Podgoretsky ©   (2009-09-03 19:04) [12]

> Дмитрий С  (03.09.2009 16:18:08)  [8]

Не использует, только DIV и MOD и всего один раз.
IN хорошо оптимизирован



Страницы: 1 вся ветка

Текущий архив: 2009.11.01;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.02 c
15-1251978221
Ak47
2009-09-03 15:43
2009.11.01
проверить содержится ли значение в массиве


4-1221071670
тимохов
2008-09-10 22:34
2009.11.01
Надо ли инициализировать Offset у структуры OVERLAPPED?


2-1251884776
kyn66
2009-09-02 13:46
2009.11.01
Нарушение полосатости грида при SQL-запросах


15-1251654107
Когда
2009-08-30 21:41
2009.11.01
Когда Вы в последний раз...


2-1252654969
eu1bc
2009-09-11 11:42
2009.11.01
Обработка ошибок