![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как организовать работу case [D7, WinXP]
ambhtr © (2007-05-18 15:08:00)Из строки выбираются поочередно символы и должны проверятся на разрешенные символы. Пытаюсь отработать это таким кодом:
var
valChar : Char;
...
for I:=1 to lenS do
begin
valChar := Char(copy(S,I,1));
case valChar of
'0'..'9',
'a'..'z',
'A'..'Z',
'|',';' : ; //Допустимые символы.
else
lst_ErrTXT.Add('В файле ' + nmFile +
' на линии '+ IntToStr(nnRec) +
' в колонке под номером ' + IntToStr(I) +
' имеется недопустимый символ');
end;
Но не получается в строке:
valChar := Char(copy(S,I,1));
перевести string -> Char.
Или если можно проверять отдельный строковые символы по другому, подскажите, пожалуйста.
Anatoly Podgoretsky (2007-05-18 21:02:00) [1]
> ambhtr (18.05.07 17:06) [7]
Про это много писали большевики.
Anatoly Podgoretsky (2007-05-18 21:01:00) [2]if Char in [..] then else
ambhtr (2007-05-18 17:06:00) [3]Спасибо всем! Удалось выловить пустую строку на которой и происходила ошибка.
Поставил:
if S<>'' then OEMToChar(PChar(S), PChar(S));
и все пошло.
Еще раз всем СПАСИБО!!! :о)))
clickmaker (2007-05-18 16:59:00) [4]терзают смутные сомнения, а выделил ли ты память под s?
ambhtr (2007-05-18 16:58:00) [5]Вставил строчку:
OEMToChar(PChar(s), PChar(s));
но теперь на какой-то строчке выдает ошибку:
"Access violation at address 77D5ED16 in module 'user32.dll'. Write of address ..."
И никак не могу пока ни выловить на какой линии, ни почему появляется эта ошибка.
Подскажите, что может быть.
Сергей М. (2007-05-18 15:48:00) [6]Тогда сначала приведи оригинальную кодировку символов с строке к ANSI-стандарту:
OEMToChar(PChar(s), PChar(s));
А далее все точно так же как сейчас
clickmaker (2007-05-18 15:46:00) [7]
> Как сделать, чтобы учитывать русские "ДОСовские" буквы?
OemToChar()
ambhtr (2007-05-18 15:40:00) [8]Спасибо :о)! Все сработало. Только теперь другая "проблема":
В "допустимые" символы надо добавить и русские буквы.
case valChar of
'0'..'9',
'a'..'z',
'A'..'Z',
'а'..'я',
'А'..'Я',
А текст ДОСовский, и кодировка ДОСовская. Как сделать, чтобы учитывать русские "ДОСовские" буквы?
Сергей М. (2007-05-18 15:10:00) [9]valChar := S[I];