![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Люди, нужна срочно Ваша помощь! [D7, WinXP]
FreeZ © (2007-03-12 18:27:00)Люди, нужна срочно Ваша помощь! Не могу разобраться с элементарной задачей!
У меня естьS: stringв который я записую данные считанные с сом-порта!
Получается чтоS = 'abcdefghijklmn'
Но регистр букв может меняться, т.е. может быть что S = 'ABCdefghijklmn'
Мне нужно сделать чтобы если у меня в S есть 'A' значит делаю то, если 'a' значит то...
RASkov (2007-03-13 14:08:00) [1]> Включи "Range Checking" и увидешь, что произойдет. Без "Range
> Checking" может ничего не произойти, а можно налететь и
> на AV.
С включенным "Range Checking" "вылетает" не AV, а "Range check error".
У автора повсей видимости(из [8]) Range Checking выключен.... :(
Loginov Dmitry (2007-03-13 07:39:00) [2]> Т.е. в данном случае если 12-й символ <> J или в строке
> менее 12 символов но более 0 то ничего не должно произойти.
Включи "Range Checking" и увидешь, что произойдет. Без "Range Checking" может ничего не произойти, а можно налететь и на AV.
Германн (2007-03-13 02:09:00) [3]
> FreeZ © (12.03.07 18:27)
>
> Люди, нужна срочно Ваша помощь! Не могу разобраться с элементарной
> задачей!
> У меня есть S: string в который я записую данные считанные
> с сом-порта!
>
Не надо записывать в стринг "данные считанные из ком-порта"! Если нет полного понимания Что Как Откуда и Куда. Лучше данные считанные из ком-порта записывать в некий буфер типаarray [] of Byte. А уж после принятия - анализировать принятое.
RASkov (2007-03-13 02:08:00) [4]> Возможно, потому, что в строке менее 12 символов.
Скорее всего не просто менее а строка вообще ничего не содержит = '' (она равна nil)....
> [8] FreeZ © (13.03.07 01:24)
попробуй так:
procedure TForm1.Timer2Timer(Sender: TObject);
begin
if (s<>'') adn (s[12]='J') then q:='1';
end;
Т.е. в данном случае если 12-й символ <> J или в строке менее 12 символов но более 0 то ничего не должно произойти.
Или... что вернее нужно наверное так:
if (Length(s)>=12) adn (s[12]='J') then q:='1';
Джо (2007-03-13 01:49:00) [5]> Почему когда я
Возможно, потому, что в строке менее 12 символов.
Длина строки определяется функцией Length.
FreeZ (2007-03-13 01:24:00) [6]Почему когда я
procedure TForm1.Timer2Timer(Sender: TObject);
begin
if s[12]='J' then q:='1';
end;
мне выдаёт ошибку!
http://freez.pp.net.ua/_ph/1/176988475.jpg
Чапаев (2007-03-12 22:48:00) [7]> [0] FreeZ © (12.03.07 18:27)
Это довольно забавно, друже. А ты знаешь, что такое WinAPI? Или упоминание коммуникационного порта автоматически делает вопрос апишным?
homm (2007-03-12 22:06:00) [8]> Люди, нужна срочно Ваша помощь!
> [0] FreeZ © (12.03.07 18:27)
> Люди, нужна срочно Ваша помощь!
Ну не делай так больше. Нужно что-бы пробегая взгялдом по темам и перврй строке в конференции, помогающие тебе люди моглаи хотя-бы примерно очертить для себя область твоего вопроса, тогда и помогут скорее.
FreeZ (2007-03-12 20:51:00) [9]Большое спасибо!!! С меня могорычь!!!
Eraser (2007-03-12 20:08:00) [10]> [2] FreeZ © (12.03.07 19:48)
if Pos('a', 'abc') <> 0 then
ShowMessage('"a" найдена!!!!!!!!!!!!!!!!');
примерно так )
Джо (2007-03-12 19:49:00) [11]При чем сдесь конфа WinAPI?
По сабжу — к символам строки можно обращаться по индексу, напр.: S[1] — первый символ строки.
FreeZ (2007-03-12 19:48:00) [12]
> см. функцию pos.
Покажи пожалуйста пример! Буду очень благодарен! Просто я в этом деле самоучка, и много чего не знаю! Пожалуйста, помоги!
Eraser (2007-03-12 19:37:00) [13]> [0] FreeZ © (12.03.07 18:27)
> Мне нужно сделать чтобы если у меня в S есть 'A' значит
> делаю то, если 'a' значит то...
см. функцию pos.