Форум: "Основная";
Текущий архив: 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.006 c