Главная страница
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.019 c
14-81424
VDen
2002-06-27 09:50
2002.07.25
16 советов программисту, работающему в коллективе.


1-81351
Pavel_Man
2002-07-12 00:09
2002.07.25
Различие выполнения dll в Win95/98 и Win2000/NT


7-81501
ses1
2002-05-03 01:49
2002.07.25
Как определить тип монитора? Объем памяти видеоадаптера?


1-81313
Loco
2002-07-12 15:29
2002.07.25
НУ БЛИН!!!!!!!!! Locate


3-81139
muhin-av
2002-07-03 16:11
2002.07.25
Ну нет у пацана хорошей книги