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

Вопросы по 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 установи значения по умолчанию.

Ссылка на комментарий
Поделиться на другие сайты

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

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



Войти
  • Похожий контент

    • Elly
      От Elly
      Вопросы по работе форума следует писать сюда. Вопросы по модерированию, согласно правилам, сюда писать не следует.
      Ответ можно получить только на вопрос, который грамотно сформулирован и не нарушает правил\устава форума.
    • igrok52
      От igrok52
      Подскажите пожалуйста. Антивирусом касперского пользуюсь много лет с 3.0 версии как все работает понимаю на пк. Подскажите пожалуйста кто знает по поводу Антивируса для Android устройств, не разу не ставил и вообще в экосистеме андроида не очень разбираюсь. Купил планшет дочке, загрузчик разблокирован, что там поставили понятия не имею, все работает но боюсь что есть какие то закладки от "китайцев" и пока не проверю не успокоюсь. Поможет антивирус касперского для андроида найти закладки или что то что может быть типа как в телефонах в китайских были закладки от китайцев которые смс отправляли на странные номера (лет 5 назад была эпидемия что и кнопочные и смартфоны дешевые слали смс по ночам в неизвестном направлении, оказалось что прошивка была с вирусами). Или для андроида версия может проверять только apk и не сможет увидеть что в системе есть вредоносы? Если что планшет из нашего ретейла, подумать не мог что у нас в солидных магазинах будут продавать планшеты с китайской прошивкой с разблокированным загрузчиком (Lenovo Xiaoxin Pad Pro 12.7).
    • MiStr
      От MiStr
      Цикл интервью с экспертами "Лаборатории Касперского" сезона 2024 года возобновляется
       
      На прошедшей в стенах "Лаборатории Касперского"  встрече , приуроченной к 18-летию Kaspersky Club, участники клуба пообщались с Еленой Лесных, старшим продуктовым маркетологом в подразделении мобильных продуктов в продуктовом маркетинге B2C. Елена рассказала о том, как была усилена защита от киберугроз и мошенников в последних обновлениях мобильной версии Kaspersky и Kaspersky Who Calls.
       
      Выступление Елены и её коллеги Никиты вызвало большой интерес у участников клуба. Не все присутствующие на встрече смогли задать свои вопросы, не говоря уже про тех, кто не смог посетить офис "Лаборатории Касперского". Именно поэтому мы пригласили Елену ещё раз пообщаться с участниками клуба, на этот раз в формате онлайн
       
      @Lena_Lesnykh готова отвечать на вопросы участников клуба по 18 октября 2024 года включительно. Традиционно интервьюируемой будет выбран лучший вопрос, автор которого получит подарок от клуба. Вопросы можно начинать задавать уже сейчас.
       

       
       
    • pokrac
      От pokrac
      Давал ребенкоу поиграть в компьютер, что то скачивал, по итогу ночью открываю компьютер, а у меня все файлы с префиксом Lock. ничего не открывается, ну и смена обоев, с тг аккаунтом для решения вопроса
    • esc.tech
      От esc.tech
      Здравствуйте, я бы хотел у вас спросить, когда вы добавите в свой антивирус дополнительное сканирование файлов? Так как в последнее время люди уже начинают шифровать вирусы что делает его незамеченным и ваш антивирус не замечает его. 

×
×
  • Создать...