Призупинення додатки в delphi - stack overflow російською

Як зупинити хід виконання програми в Delphi до натискання користувачем клавіші (припустимо, будь-який) без виклику додаткового вікна?

Тобто нехай є 10 рядків коду. Перші 5 рядків виконалися і програма чекає дій користувача. Той натискає, припустимо, Enter. і далі виконуються інші 5 рядків коду. Ах, так, все це відбувається не в консольному додатку (а що робити в консольному, крім readln?).

p.s. Вибачте, якщо не точно висловився, але MessageBox і ShowMessage не підходять.
Зупинка за рахунок властивостей і методів форми підійде тільки, якщо її можна зробити динамічно. (З цього приводу інший моє запитання: Робота з TForm в Delphi)

заданий 5 Вересня '11 о 6:20

Є більш простий і красивий спосіб. Процедуру, в якій потрібно зробити "паузу", розбиваємо на дві частини - до і після паузи (зрозуміло, що це не завжди можливо, але в багатьох випадках цілком реально). Після того, як перша половинка виконалася, вона виставляє якийсь прапор, що б знати про це. Далі, в процедурі обробки натиснення клавіш або тієї, яка опрацює від користувача запит на продовження - виконати другу процедуру.

Якщо параметрів потрібно передати багато, то просто робимо структуру (record), в який вставляємо всі параметри і передаємо в кожну процедуру.

відповідь дан 5 Вересня '11 о 9:05

Це як раз не дуже гарний з точки зору проектування спосіб. Що якщо у нас кілька таких процедур, які треба розбити? Що якщо у нас кілька пауз в процедурі? Що якщо рішення про паузу потрібно прийняти виходячи з якихось зовнішніх даних (наприклад завантажуємо циклічно деякі ресурси, кількість і склад яких заздалегідь не відомий, і робимо паузи при збоях)? ТС, схоже, хоче узагальнене рішення, яке можна використовувати в будь-якому місці за бажанням. - Nofate ♦ 5 Вересня '11 о 9:47

Давайте почекаємо TC і не буде робити невірних припущень. Якщо ж пауз кілька - а в чому проблема? Зробити кілька процедур? Але якщо страшно, є ще один чудовий спосіб тіло процедури - один великий case. і одна глобальна змінна (або поле класу), яка зберігає поточний стан. - KoVadim 5 Вересня '11 в 9:51

Вибачте, не зрозумів, що є "друга процедура". Ось, що, імовірно необхідно: # 47; # 47; пише программістN додаток. # 47; # 47; щось відобразилося MyClass.Stop; # 47; # 47; викликає зупинку з об'єкта мого класу, # 47; # 47; це і є процедура, яку треба розбити? - HankMoody 5 Вересня '11 о 16:58

Схожі статті