Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.06.10;
Скачать: [xml.tar.bz2];

Вниз

Как организовать работу 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.036 c
15-1179229189
Layner
2007-05-15 15:39
2007.06.10
Фокус со звонками из Молдовы, в чем секрет


2-1179826215
pohil
2007-05-22 13:30
2007.06.10
Flash и Dephi


15-1178957569
Алхимик
2007-05-12 12:12
2007.06.10
МВД Москвы: Linux - порнография


6-1164471298
NeyroSpace
2006-11-25 19:14
2007.06.10
Как обработать ошибку при отключении клиента?


2-1179592485
Rafik
2007-05-19 20:34
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский