Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.07.25;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.005 c
1-81267
programmerts
2002-07-10 20:12
2002.07.25
Как написать программу без формы.


14-81469
igorr
2002-06-28 12:25
2002.07.25
Программисты


1-81258
Alex_win
2002-07-15 09:19
2002.07.25
версия фала


14-81449
arbiter
2002-06-27 21:59
2002.07.25
ISO 9660


1-81321
BAY
2002-07-12 08:28
2002.07.25
Буфер обмена





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский