Перейти к содержанию

Вопросы по Delphi


Рекомендуемые сообщения

Константин Артурыч
Опубликовано

Случилась необходимость написать програмулину на сием прекрасном языке.

Возникли вопросы, на которые даже как оказывается препод не знает ответов :lol: Или не хочет их рассказывать.

1) Не могу запретить клик правой кнопкой мыши. Оставил только ввод цифр через массив, а через ПКМ-вставить , можно ввести текст :lol: В итоге ошибка.

2) Внутри есть код аля b:=strtofloat .Проблема заключается в том что если значения не заданы, и производиться расчет програмулина вылетает. Опять как же ответ препода: можно вместо strtofloat юзать VAL ( ой забыл, сильно не пинайте :) , вроде его) .

Как это переменить не представляю...

Опубликовано
1) Не могу запретить клик правой кнопкой мыши. Оставил только ввод цифр через массив, а через ПКМ-вставить , можно ввести текст mad.gif В итоге ошибка.

А что, если попробовать так?

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
 if Key = VK_RIGHT then Key := 0;
end;

По идее - отлавливается нажатие правой клавиши мыши, и присваивается результат 0, то есть будто на ПКМ и не нажимали.

 

2) Внутри есть код аля b:=strtofloat .Проблема заключается в том что если значения не заданы, и производиться расчет програмулина вылетает.

А где пользователь задаёт значения? Откуда они берутся? Хотя можно сделать так:

try
 {здесь используем strtofloat}
except
 {здесь как-нибудь обрабатываем ошибку. Например, так (см.ниже):}
 Showmessage('Вероятно, вы неправильно задали значения.' + #13#10 + 'В результате при рассчётах произошла ошибка.');
end;

Константин Артурыч
Опубликовано
А что, если попробовать так?

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
 if Key = VK_RIGHT then Key := 0;
end;

По идее - отлавливается нажатие правой клавиши мыши, и присваивается результат 0, то есть будто на ПКМ и не нажимали.

 

 

А где пользователь задаёт значения? Откуда они берутся? Хотя можно сделать так:

try
 {здесь используем strtofloat}
except
 {здесь как-нибудь обрабатываем ошибку. Например, так (см.ниже):}
 Showmessage('Вероятно, вы неправильно задали значения.' + #13#10 + 'В результате при рассчётах произошла ошибка.');
end;

 

1) Я так примерно в голове и представляю )

Это параметры OnMouseDown?

 

2) Пользователь задает значения в Edit, берет из головы. Прога аналогична калькулятору :)

Опубликовано

Константин Артурыч,

1) В обработчик OnMouseDown компонента попробовать написать такой код:

if button=VK_RIGHT then button:=#0

2) В обработчик события OnKeyPress компонента вписать вот это:

if not (key in ['0'..'9']) then key:=#0

Если нужны еще и минусы, запятые или точки, то в квадратные скобки добавить эти символы в кавычках через запятую, например ['-', '.', '0'..'9']

 

Либо попробуйте как Ta2i4 посоветовал.

Константин Артурыч
Опубликовано
Константин Артурыч,

1) В обработчик OnMouseDown компонента попробовать написать такой код:

if button=VK_RIGHT then button:=#0

2) В обработчик события OnKeyPress компонента вписать вот это:

if not (key in ['0'..'9']) then key:=#0

Если нужны еще и минусы, запятые или точки, то в квадратные скобки добавить эти символы в кавычках через запятую, например ['-', '.', '0'..'9']

 

Либо попробуйте как Ta2i4 посоветовал.

 

Второе давно уже прикручено :lol:

А вот с первым чет ругается на then :)

if button=VK_RIGHT then[b]|[/b] button:=#0

 

try ... except всегда и везде.

А теперь просьба как бухгалтеру объяснить :lol:

Опубликовано
А теперь просьба как бухгалтеру объяснить laugh.gif

Как бухгалтер бухгалтеру - когда программа взаимодействует с пользователем, нужно всегда предусматривать исключения на все, что может быть хоть как-то с этим пользователем связано. Конструкция

try

...

....

...

except

вместо тупого вываливания ошибки даст возможность исправить проблему. Когда я делал приложение с использованием TMaskEdit, то не лочил ПКМ, а просто проверял, что ввел пользователь. Если это была фигня, то сообщал, что вводить можно только вот это.

Опубликовано
А теперь просьба как бухгалтеру объяснить :lol:

 

 

Желательно для начала прочитать об обработке исключений try ... except -гугля в помошь .На русском языке есть море описаний и примеры программ.

 

А по поводу

Проблема заключается в том что если значения не заданы

Так задай эти значения по умолчанию и будет тебе счастье .В Edit.text установи значения по умолчанию.

Константин Артурыч
Опубликовано

Задачу решил, но немного по другому.

Значения onmousedown и up

edit6.Text:='';
:)

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
×
×
  • Создать...