Вниз
Скачать: CL | DM;

Как организовать работу case   Найти похожие ветки 

← →
ambhtr   (2007-05-18 15:08) [0]

Из строки выбираются поочередно символы и должны проверятся на разрешенные символы. Пытаюсь отработать это таким кодом:
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.
Или если можно проверять отдельный строковые символы по другому, подскажите, пожалуйста.


← →
Сергей М. ©   (2007-05-18 15:10) [1]

valChar := S[I];


← →
ambhtr   (2007-05-18 15:40) [2]

Спасибо :о)! Все сработало. Только теперь другая "проблема":
В "допустимые" символы надо добавить и русские буквы.
          case valChar of
              "0".."9",
              "a".."z",
              "A".."Z",
              "а".."я",
              "А".."Я",

А текст ДОСовский, и кодировка ДОСовская. Как сделать, чтобы учитывать русские "ДОСовские" буквы?


← →
clickmaker ©   (2007-05-18 15:46) [3]


> Как сделать, чтобы учитывать русские "ДОСовские" буквы?

OemToChar()


← →
Сергей М. ©   (2007-05-18 15:48) [4]

Тогда сначала приведи оригинальную кодировку символов с строке к ANSI-стандарту:

OEMToChar(PChar(s), PChar(s));

А далее все точно так же как сейчас


← →
ambhtr   (2007-05-18 16:58) [5]

Вставил строчку:
OEMToChar(PChar(s), PChar(s));
но теперь на какой-то строчке выдает ошибку:
"Access violation at address 77D5ED16 in module "user32.dll". Write of address ..."
И никак не могу пока ни выловить на какой линии, ни почему появляется эта ошибка.
Подскажите, что может быть.


← →
clickmaker ©   (2007-05-18 16:59) [6]

терзают смутные сомнения, а выделил ли ты память под s?


← →
ambhtr   (2007-05-18 17:06) [7]

Спасибо всем! Удалось выловить пустую строку на которой и происходила ошибка.
Поставил:
      if S<>"" then OEMToChar(PChar(S), PChar(S));
и все пошло.
Еще раз всем СПАСИБО!!! :о)))


← →
Anatoly Podgoretsky ©   (2007-05-18 21:01) [8]

if Char in [..] then else


← →
Anatoly Podgoretsky ©   (2007-05-18 21:02) [9]


> ambhtr   (18.05.07 17:06) [7]

Про это много писали большевики.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.022 c
15-1179225601
7555545
2007-05-15 14:40
2007.06.10
Комп не включаеться!


5-1155109571
Vaitek__
2006-08-09 11:46
2007.06.10
Прозрачный TCustomPanel


1-1176453885
Reaktor
2007-04-13 12:44
2007.06.10
Есть ли альтернатива у Sleep и Exit?


3-1174373459
RomanH
2007-03-20 09:50
2007.06.10
Загрузка меню из таблицы


2-1179488279
RokyB
2007-05-18 15:37
2007.06.10
Привязка компонентов к размере формы




   Наверх