Главная страница
    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.47 MB
Время: 0.042 c
15-1179147002
Руслан
2007-05-14 16:50
2007.06.10
ошибка mysql 2013


15-1179245045
mr1Andersen
2007-05-15 20:04
2007.06.10
Подскажите где Вы, программисты, достаете библиотеки, компоненты


1-1176810767
Dima63
2007-04-17 15:52
2007.06.10
Как развернуть окно без анимации


2-1179854765
Prasal
2007-05-22 21:26
2007.06.10
Поиск


2-1179754764
Bad_B
2007-05-21 17:39
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский