keypressed в Delphi

4 отговора 0 прегледа
#1

keypressed в Delphi

Някой може ли да ми помогне за следното:

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
var
i,k:integer;
begin
k:=1;
for i:=190 to 255 do begin
canvas.TextOut(2,k,chr(i));
k:=k+15;
// как може след като i стане примерно 200 да се спре извеждането
// докато се натисне клавиш
// например в Паскал
// if i=200 then
// repeat until keypressed;
// или
// if i=200 then
// ch:=readkey;
end;
end;

Отговор
в отговор на vladko_lp #2

Re: keypressed в Delphi

[линк]

чети и дишай по-леко
Отговор
в отговор на vladko_lp #3

Re: keypressed в Delphi

Pechenia, благодаря ти от сърце, че си се потрудил да ми помогнеш. Това работи, но не е точно, което искам. Тук се чака намесата на потребителя, а аз искам цикълът сам да спре при определено условие (например i=2000) и да чака натискането на клавиш. Още веднъж ти благодаря, както и за линка към сайта, който е много интересен.

Отговор
в отговор на vladko_lp #4

Re: keypressed в Delphi

Ми тогава е супер просто: правиш си 2 цикъла, първия до 200, втория - докъдето ти трябва. Създаваш един външен флаг boolean. Флага в началото е true. На OnKeyPressed проверяваш флага:
ако е true изпълняваш първия цикъл (и правиш флага false), инак пускаш втория цикъл

чети и дишай по-леко
Отговор
в отговор на vladko_lp #5

Re: keypressed в Delphi

Основаната разлика между примера, който даваш и програмирането под Win e, че не можбеш да спреш целия проце с цикъл, като repeat until keypressed; защото в тоя цикъл основната нишка на програмата ти е спряла.
А нормалните програми, които ще пишеш в началото ще са само с една нишка - основната - и тя като спре - програмата ти е забила.
Естествено, има техники за заобикаляне на проблема, но практиката е друга и подоби хватки се правят в редки редки случеи, с които не трявба да започваш обучението си.

Вероятно вече правилно са те насочили, но в началото е добре да разказваш повече за проблема, който решаваш, а не да търсиш конкретно решение (както в тая тема). Така ще може да получиш по-адекватна помощ.

Извинявам се за многословието :)

Отговор