Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.06.10;
Скачать: 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 вся ветка

Текущий архив: 2007.06.10;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.042 c
5-1155721962
vodvorezlaya
2006-08-16 13:52
2007.06.10
помогите найти компоненты для пработы с USB


15-1179483530
Эй
2007-05-18 14:18
2007.06.10
Кто угадает


3-1174498152
olevacho_
2007-03-21 20:29
2007.06.10
Определение пользователя и компьютера


2-1179396741
Accel
2007-05-17 14:12
2007.06.10
русский язык в Html и Delphi


2-1179476690
Tanya_d
2007-05-18 12:24
2007.06.10
помогите сделать простенький модуль с базами парадокс





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский