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

Вниз

Незнаю как сделать!!!!   Найти похожие ветки 

 
Andy BitOff   (2002-07-04 19:24) [0]

Как правильно оформить условие типа:
если srt[i] неравно "0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F" то ...


 
SkyQuake ©   (2002-07-04 19:28) [1]

Тебе надо определить неравно всем одновременно или дной из них?


 
Volj ©   (2002-07-04 19:31) [2]

if not (srt[i] in ["0".."Z"]) ...
если в ряду нет перерывов


 
Юрий Зотов ©   (2002-07-04 19:35) [3]

const
HexDigits = ["0".."9", "a".."f", "A".."F"];
...
if not (Str[i] in HexDigits) then ...


 
Work_LEON   (2002-07-10 09:00) [4]

Volj +


if not (srt[i] in ["0".."Z"])

, или так:

if not (srt[i] in ["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"])

:)



 
AlexanderVasjuk ©   (2002-07-10 09:55) [5]

if pos(srt[i], "0123456789abcdefghABCDEFGH") = 0 then


 
bander_log   (2002-07-13 20:53) [6]

Можно сделать просто через массивы:
сначала объяви массивы по группам например

const
LettersRus: set of Char = ["А".."я"];
LettersEng: set of Char = ["A".."z"];
LettersDigit: set of Char = ["0".."9"];

а потом условия вхождения или невхождения в массив:
//------- вхождение -----------
if Data[i] in LettersDigit then
begin
// операции
end;

//------- не вхождение -----------
if Data[i] not in LettersDigit then
begin
// операции
end;

если нужно совместное через and
if (Data[i] not in LettersDigit) and (Data[i] not in LettersLettersRus) then
begin
// операции
end;

Попробуй ...


 
TTCustomDelphiMaster ©   (2002-07-13 21:59) [7]

Помоему AlexanderVasjuk © (10.07.02 09:55) сделал просто и гениально. Улучшать уже нечего.


 
Юрий Зотов ©   (2002-07-13 22:32) [8]

> TTCustomDelphiMaster © (13.07.02 21:59)

Нет. Использование строк для данной задачи ОЧЕНЬ неоптимально, а Pos вообще довольно медленная штука. Использование множества-константы и IN сработает, как минимум, на порядок быстрее, а по простоте кода - то же самое.


 
TTCustomDelphiMaster ©   (2002-07-13 23:23) [9]

А Юрий Зотов оказался прав

const
HexDigits = ["0".."9", "a".."h", "A".."H"];
var
st,en, en1: tdatetime;
i: integer;
begin
st := now();
for i := 1 to 10000000 do
if pos("H","0123456789abcdefghABCDEFGH") = 0 then
begin
end;
en := now();
for i := 1 to 10000000 do
if not ("H" in HexDigits) then
begin
end;
en1 := now();
Edit1.Text := formatdatetime(""AlexanderVasjuk " ss:zzz", en-st)+" - "+
formatdatetime(""Юрий Зотов " ss:zzz", en1-en);
end;

AlexanderVasjuk 04:450 - Юрий Зотов 00:050

Ну тчож признаю Юрий Зотов он и в Африке Юрий Зотов. Молодец!!!


 
Юрий Зотов ©   (2002-07-13 23:36) [10]

Это было очевидно. Операции с множествами - это побитовые логические операции, одна из самых быстрых вещей. А операции со строками - наоборот, одна из самых медленных. Тем более, что Pos реализует, наверное, самый медленный из известных алгоритмов поиска подстрок - простую посимвольную проверку со сдвигом.


 
MARcoDEN ©   (2002-07-14 10:54) [11]

if not (s[i] in ["a".."z", "A".."Z", "0".."9", "_", "-", "."]) then ...



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

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

Наверх




Память: 0.49 MB
Время: 0.012 c
1-81342
Src_Crab
2002-07-12 20:52
2002.07.25
Преобразование String в Integer.


1-81230
Greenvich
2002-07-13 20:51
2002.07.25
Загрузить 8-ую строку из INI-файла.


1-81227
lensky
2002-07-14 12:31
2002.07.25
Функция вызывающая метод и ждущая событие


1-81303
Андрусь
2002-07-12 12:35
2002.07.25
закрытие главной формы MDI приложения


1-81287
vixic
2002-07-12 07:47
2002.07.25
MainMenu