Форум программистов, компьютерный форум, киберфорум
Наши страницы

Lazarus

Войти
Регистрация
Восстановить пароль
 
Hretgir
201 / 75 / 2
Регистрация: 25.01.2012
Сообщений: 2,774
Записей в блоге: 20
#1

Снова оборвать выполнение процедуры - Lazarus

25.12.2016, 12:04. Просмотров 222. Ответов 2
Метки нет (Все метки)

Опять оно. В который раз. В прошлый раз я спрашивал обрыв выполнения в теле цикла(ещё пока справляюсь без конспектов, ну усиленно пишу программу для их составления-у меня функционал по шире будет чем у одномерных конспектов(HTML и XML разметка меня не устроит - вообще не то пальто), думаю потом модуль AI прикрутить небольшой, пятимерные конспекты будут), теперь другое.
вот это сделано в процедуре отдельной, при запуске программы, так удобнее
Pascal
1
2
3
for i:=0 to 50 do
 keyOn[i]:=@Pass;
keyOn[17]:=@OnEditing;
далее нужно, что если была нажата клавиша не предусмотренная функционалом программы, чтобы программа просто игнорировала это нажатие (например при нажатии клавиши ввода текста).
Pascal
1
2
3
4
5
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
keyOn[Key];
vyvedetTablicu;
end;
можно-ли задать такую функцию
Pascal
1
Pass
, чтобы задача была выполнена?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.12.2016, 12:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Снова оборвать выполнение процедуры (Lazarus):

Выполнение процедуры заставляет висеть приложение - Lazarus
Вызываются последовательно друг за другом 2 процедуры. Вторая процедура долго отрабатывает(обе процедуры содержат запросы к базе). Как...

Выполнение Процедуры К файлам из Списка - Delphi
Вот значит так Есть у меня такая процедура 'KillAVTASK' Тоесть: begin KillAVTASK('AVP.EXE'); \ эта процедура...

Выполнение процедуры в параллельном потоке - Delphi
Простая задача, но у нас параллельного программирования не было и наверное не будет. Есть процедура вида type TPtr=^TPList; ...

Оборвать цикл без изменений переменных - Lazarus
Дошёл до специфического места в программе, где переменную цикла, при определённых условиях, менять нельзя - может привести к ошибке, а цикл...

Снова функции и процедуры... - Pascal
Написать программу вычисления значений функции при заданных значениях аргумента. Вычисление оформить во вспомогательном алгоритме:

Снова хром, снова сапопроизвольно открывается, снова bkrfdf.xyz и казино - Удаление вирусов
Здравствуйте! Собственно, проблема уже не новая, хотя, как показывают сообщения форума, за последние дни выскочившая у многих. Через...

2
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
24632 / 16302 / 5009
Регистрация: 22.10.2011
Сообщений: 28,867
Записей в блоге: 5
25.12.2016, 13:40 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Hretgir Посмотреть сообщение
если была нажата клавиша не предусмотренная функционалом программы, чтобы программа просто игнорировала это нажатие
Просто обрабатывай те клавиши, которые тебе нужны в функции Pass. Естественно, на остальные программа реагировать не будет.
1
Hretgir
201 / 75 / 2
Регистрация: 25.01.2012
Сообщений: 2,774
Записей в блоге: 20
25.12.2016, 15:18  [ТС] #3
Я понял, но мне надо, чтобы при нажатии нужной клавиши выводилась таблица с новыми данными
Pascal
1
vyvedetTablicu;
поэтому её надо обойти, я что как-то не всё написал, думал что всё оказывается нет. вот чтобы не выводилась новоая таблица при редактировании ячейки нужно оборвать процедуру
Pascal
1
2
3
4
5
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
keyOn[Key];
vyvedetTablicu;//вот эта процедура не должна выполнится если Key не равно 17
end;
вот-же ведь
Pascal
1
2
3
for i:=0 to 50 do
 keyOn[i]:=@Pass;
keyOn[17]:=@OnEditing;
так ведь нельзя
Pascal
1
2
3
4
procedure Pass;
begin
break;
end;
? Как оно пишется то... break

Добавлено через 6 минут
ну да, так и пишется, только ошибку выдает при компиляции, да и не уверен что задача выполнится так...

Добавлено через 18 секунд
volvo, подскажи пожалуйста, как оборвать выполнение процедуры TForm1.FormKeyUp при значении Key равном 17.
Я мало информации дал изначально. Я открывал похожую тему давно, но там циклы были.

Добавлено через 3 минуты
Можно оборвать? Ведь это самый простой вариант написания проги.

Добавлено через 37 минут
нашёл, вот оно Возможность реализации проверки системы условий
сейчас буду пробовать. тяжко без конспектов, ыха.

Добавлено через 35 минут
И вот что получилось без ошибок компилятора:
есть такая процедура
Pascal
1
2
3
4
5
6
7
8
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
try
keyOn[Key];
vyvedetTablicu;
except
end;
end;
где заполнение массивов будет происходить при открытии программы и описано в самом хвосте программы
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure writeKeyArray;//заливает массив для обработки событий клавиатуры
var
    i:integer;
begin
SetLength(keyOn, 50);
 SetLength(keyOff, 50);
 for i:=0 to 50 do
 keyOn[i]:=@Pass;
 for i:=0 to 50 do
 keyOff[i]:=@Pass;
 keyOn[17]:=@OnEditing;//процедура разрешающая редактирование таблицы
 keyOff[17]:=@OffEditing;//процедура запрещающая редактирование таблицы, осуществляющая навигацию
end;
а вот эта процедура описана вообще в самой голове программы
Pascal
1
2
3
4
procedure Pass;
begin
raise Exception.Create('Pass');
end;
ошибок нет, надеюсь будет работать как и задумано.

Добавлено через 1 минуту
Цитата Сообщение от volvo Посмотреть сообщение
Просто обрабатывай те клавиши, которые тебе нужны в функции Pass. Естественно, на остальные программа реагировать не будет.
лучший ответ был в прошлой теме, очень давно, тогда не было функционала лучшего ответа, поэтому применяю его тут.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.12.2016, 15:18
Привет! Вот еще темы с ответами:

Выполнение процедуры - C# ASP.NET
Здравствуйте! Помогите разобраться, что не так. У меня есть ASP-код для вызова процедуры, но он не работает :( Set...

Завершить выполнение процедуры - Delphi
Есть обработчик нажатия на кнопку procedure TForm1.Button1Click(Sender: TObject); begin //какой-то код end; как по...

Пошаговое выполнение процедуры - Delphi
подскажите как реализовать простенькую задачку: допустим, мы имеем форму, единственную кнопку и единственную метку на ней. В обработчике...

Выполнение хранимой процедуры - Oracle
Приветствую! Есть хранимая процедура: procedure P_find 2 ( 3 n1 in number, -- регистрационный номер 4 n2 ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.