Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как организовать работу 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];


Наверх

Титульная страница Поиск, карта сайта Написать письмо