Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Функция Pos? [Win2k]


tolstiak ©   (2005-02-08 17:30:00) 

Проблема такая функция Pos всегда равна "0"...

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if Pos ('1',Edit1.Text)>0 then Key:=#0;
end;

поидее при нажатии "1" дожно блокироваться нажатие любой другой клавиши, а этого не произходит... :((
на Delphi 6 этот код работает нормально а на Delphi 8 for the Microsoft .NET Framework не работает...


tolstiak   (2005-02-09 16:53:00) [1]

> Defunct
гыггыгг... :))))  а так работает...
спасибо!!!


Defunct   (2005-02-08 21:22:00) [2]

> а есть ли методы борьбы с этим?

Например так:

var
 S: String;

begin
 S := TEdit(Sender).Text;
 if Pos( '1', S) <> 0 then ...
end;

Поидее Delphi должен нормально приравнивать WideString к String.


tolstiak   (2005-02-08 18:42:00) [3]

>Dmitry_04
в Вашем коде на нажатие "1" не будет реагировать а на остальные сколько угодно... весь смысл. если один раз клавиша была нажата то блокируется все... а "1" это как пример...

> Defunct
а есть ли методы борьбы с этим?


Defunct   (2005-02-08 18:22:00) [4]

tolstiak   (08.02.05 18:07) [3]
> почему?...

вариантов не так много. кодировка.
NET любит unicode, '1' в unicode <> '1'

нет под рукой D8 чтобы проверить.


Dmitry_04   (2005-02-08 18:08:00) [5]

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if Key='1' then Key := #0;
end;


tolstiak   (2005-02-08 18:07:00) [6]

> Anatoly Podgoretsky
ну-да... опечалка вкралась... конечно ПОСЛЕ нажатия "1" в поле Edit1

> Defunct
почему?... если есть фунция она не работает... на D6 этот же код работает...


Defunct   (2005-02-08 17:58:00) [7]

на VB for Microsoft .NET Framework такой код тоже работать не будет.


Anatoly Podgoretsky   (2005-02-08 17:57:00) [8]

Идея неверная, все равно нажимать какую клавишу, блокироваться будет если в Edit1.Text есть единица, хоть нажимай 9


Наверх

Титульная страница Поиск, карта сайта Написать письмо