![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
![]() Добрый вечер. Собственно возникла проблема. Было дано куча заданий по информатике из одной книжки, где вроде бы очень неплохо расписаны все возможности Delphi, ну и книжка соответственно наполнена различными заданиями.
Вот собственно само задание Цитата:
Проблема возникла вот в чём. Вроде бы функция написана, как она работает понятно. Вот только как её использовать абсолютно не понятно. Нужно её каким-то образом для поля Edit применить, только вот в книге не написано как, а без наглядного примера воображение не работает... Помогите пожалуйста. |
#2
|
||||
|
||||
![]() В событии OnKeyPress компонента Edit вы можете проводить обработку:
Код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if not ProvInputInt(Key) then Key := #0 end; Код:
function ProvInputInt (ch: char): Boolean; begin ProvInputInt := ch in ['0'..'9',#13,#8]; end; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. Последний раз редактировалось Страдалецъ, 28.11.2010 в 16:58. |
#3
|
||||
|
||||
![]() Благодарю.
UPD: Пока тему не закрыли. Возникла ещё одна проблема со схожей задачей. Ругается: Operator no applicable to this operand type. Код:
function ProvInputDrobn (ch: char; str: string): Boolean; begin if (ch>='0') and (ch<='9') or (ch=#13) or (ch=#8) then begin ProvInputDrobn:=True; Exit; End; Case ch of '-': if Length(str)=0 then ProvInputDrobn:=True; ',': if (Pos(',',str)=0 and (str[Length(str)]>='0') and(ругается тут) (str[Length(str)]<='9') then ProvInputDrobn:=True else ProvInputDrobn:=False; end; end; procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if not ProvInputDrobn(Key) then key:=chr(0); end; end. Последний раз редактировалось Tensh, 28.11.2010 в 18:11. |
#4
|
||||
|
||||
![]() Наверное так должно быть:
Код:
if (Pos(',',str)=0) and (str[Length(str)]>='0') and (str[Length(str)]<='9') then ProvInputDrobn :=True Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#5
|
||||
|
||||
![]() А почему один пробел так всё изменил?
Теперь ругается: not enough actual parameters Код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if not ProvInputDrobn(Key)(тут) then key:=chr(0); end; |
#6
|
||||
|
||||
![]() У тебя ж функция имеет 2 параметра:
function ProvInputDrobn (ch: char; str: string): Boolean; А ты заполняешь только один: Код:
if not ProvInputDrobn(Key)(тут) then key:=chr(0); // ты должен указать еще строку: if not ProvInputDrobn(Key, s) then key:=chr(0); Помогаю за Спасибо ![]() |
#7
|
||||
|
||||
![]() Что-то не сработало.
|