Форум: "Основная";
Текущий архив: 2004.06.06;
Скачать: [xml.tar.bz2];
ВнизПеременная типа множества Найти похожие ветки
← →
KA_ (2004-05-22 15:58) [0]Есть тип
TChars = set of Char
и переменная такого типа. Можно ли использовать ее в качестве счетчика в цыкле for? Хотелось бы что-то вроде
var
C: Char;
CS: TChars;
begin
CS := [];
Include(CS, "a");
Include(CS, "z");
for C := Low(CS) to High(CS) do
begin
...
end;
end;
← →
default © (2004-05-22 16:22) [1]смысл-то какой?
← →
KA_ (2004-05-22 16:26) [2]Смысл такой. Есть две такие переменные, одна - подмножество другой. Строка проверяется на наличие в ней символов сначала из подмножества, затем из разницы между множествоим и подмножеством.
← →
default © (2004-05-22 16:36) [3]for C := Low(CS) to High(CS) do
begin
...
end;
видимо хотелось такое получить
for C := #0 to #255 do
begin
...
end;
или как?!или имелся ввиду цикл от "a" до "z"?
← →
jack128 © (2004-05-22 16:47) [4]
> for C := Low(CS) to High(CS) do
> begin
> ...
> end;
к множеству непременимы функции Low, High..
> Смысл такой. Есть две такие переменные, одна - подмножество
> другой. Строка проверяется на наличие в ней символов сначала
> из подмножества,
for i := 1 to Length(s) do
if s[i] in SubSet then // SubSet - твое подмножество
begin
end;
затем из разницы между множествоим и подмножеством.TempSet := BaseSet - SubSet;
for i := 1 to Length(s) do
if s[i] in TempSet then
begin
end;
← →
KA_ (2004-05-22 16:48) [5]Почти угадал.
type
TNoNameChars = set of Char;
...
const
NoNameChars: TNoNameChars = ["!", "~", """, "@", "#", "$", ";", "%", "^", ":", "&", "?",
"*", "(", ")", "_", "=", "+", "|", "<", ">"];
SmallNoNameChars: TNoNameChars = ["!", "~", "@", "#", "$", ";", "%", "^", ":", "?",
"*", "_", "=", "+", "|", "<", ">"];
...
function BadName(const Str: String; Strict: Boolean = True): Boolean;
var
I: Integer;
AddChars: TNoNameChars;
C: Char;
begin
Result := True;
for I := 1 to Length(Str) do
if Strict then
if Str[I] in NoNameChars then Exit
else
if Str[I] in SmallNoNameChars then Exit;
AddChars := NoNameChars - SmallNoNameChars;
for C := Low(TNoNameChars) to High(TNoNameChars) do
if C in AddChars then
if Pos(C + C, Str) then
Exit;
Result := False;
end;
← →
KA_ (2004-05-22 16:49) [6]Как видно из кода мне надо искать подстроки из двух недопустимых символов.
← →
KA_ (2004-05-22 16:50) [7]Код нерабочий :) Но хотелось бы такой.
← →
jack128 © (2004-05-22 16:56) [8]SmallNoNameChars - подмножество NoNameChars? Тогда какой смысл в
> if Str[I] in NoNameChars then Exit// если не выполняется это условие, то
> else
> if Str[I] in SmallNoNameChars then Exit; очевидно не выполняется и это..
> AddChars := NoNameChars - SmallNoNameChars;
> for C := Low(Char) to High(Char) do
> if C in AddChars then
> if Pos(C + C, Str) then
> Exit;
← →
default © (2004-05-22 17:47) [9]jack128 © (22.05.04 16:56) [8]
"SmallNoNameChars - подмножество NoNameChars? Тогда какой смысл в
> if Str[I] in NoNameChars then Exit// если не выполняется это условие, то
> else
> if Str[I] in SmallNoNameChars then Exit; очевидно не выполняется и это.."
там же ещё "магический" Strict есть!
код очень туманный...
← →
default © (2004-05-22 17:58) [10]хотя да ты прав
наверно, он хотел чтоб работало так как здесь
for I := 1 to Length(Str) do
if Strict then begin
if Str[I] in NoNameChars then Exit
end
else
if Str[I] in SmallNoNameChars then Exit;
← →
jack128 © (2004-05-22 17:58) [11]
> там же ещё "магический" Strict есть!
этот else к Strict отнашения не имеет, он относится именно к if Str[I] in NoNameChars then А то что автор так отступы сделал, так это его проблемы,на которые компилятору глыбоко наплевать ;-)
← →
default © (2004-05-22 18:00) [12]прикольно вышло(в одну минуту)
← →
KA_ (2004-05-23 13:16) [13]>jack128 ©
>default ©
Спасибо, что нашли ошибку в коде :) Я ее пропустил :(
Но вопрос был о другом...
← →
Юрий Зотов © (2004-05-23 13:43) [14]> KA_ (23.05.04 13:16) [13]
> Но вопрос был о другом...
Ну дык... язык Паскаль - это язык Паскаль, и его правила не объедешь. Но кто мешает сделать, например, так:
for C := #32 to #255 do
if (C in AddChars) and (Pos(C + C, Str) > 0) then Exit;
← →
KA_ (2004-05-23 13:55) [15]>Юрий Зотов ©
Спасибо. Я так уже сделал. Но подумал - вдруг есть возможность сделать это красивее :)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.06.06;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.037 c