![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проверка стринги [D5, Win95/98]
Кастуся © (2004-07-05 22:26:00)Мастаки! Нужно быстро проверить, состоит ли 32-х символьная строка из ['0'..'9','A'..'F']! Плиз, хелп!
jack128 (2004-07-06 19:14:00) [21]
> Шустрее будет, если просто проверять положение ord(S[i])
> между ord('0') и ord('9'), а также между ord('A') и ord('F')
а это тоже медленно?
Кастуся (2004-07-06 19:09:00) [22]
> Palladin © (06.07.04 01:29) [4]
> :)
> StrToInt('$'+s);
медленно
> Rouse_ © (05.07.04 22:38) [1]
> function A(const S: String[32]): boolean;
> var
> I: Byte;
> begin
> Result := True;
> for I := 1 to 32 do
> if not (S[I] in ['0'..'9','A'..'F']) then
> begin
> Result := False;
> Exit;
> end;
> end;
тоже медленно
фишка такая: в большинстве случаев строка состоит из этих символов, изредка встречается такое, что 1 или 2 символа не "те"
KilkennyCat (2004-07-06 01:34:00) [23]
> Palladin © (06.07.04 01:29) [4]
блин... когда я начну видеть очевидное? :))
Palladin (2004-07-06 01:29:00) [24]:)
StrToInt('$'+s);
KilkennyCat (2004-07-06 01:25:00) [25]Шустрее будет, если просто проверять положение ord(S[i]) между ord('0') и ord('9'), а также между ord('A') и ord('F')
3APA3A (2004-07-05 23:19:00) [26]Мне кажется такой вариант пошустрее будет... Хотя до тестирования руки не дошли...
{$B-}
function B(const Str : string[32]) : boolean;
var i : Integer;
code : Byte;
begin
Result := True;
for i := 1 to 32 do
begin
code := ord(Str[i]);
if (code = 0) or (code = 1) and ... then
begin
Result := False;
Exit;
end;
end;
end;
Rouse_ (2004-07-05 22:38:00) [27]function A(const S: String[32]): boolean;
var
I: Byte;
begin
Result := True;
for I := 1 to 32 do
if not (S[I] in ['0'..'9','A'..'F']) then
begin
Result := False;
Exit;
end;
end;
:)