keypressed в Delphi
4 отговора
0 прегледа
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;
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;
Re: keypressed в Delphi
Pechenia, благодаря ти от сърце, че си се потрудил да ми помогнеш. Това работи, но не е точно, което искам. Тук се чака намесата на потребителя, а аз искам цикълът сам да спре при определено условие (например i=2000) и да чака натискането на клавиш. Още веднъж ти благодаря, както и за линка към сайта, който е много интересен.
Re: keypressed в Delphi
Ми тогава е супер просто: правиш си 2 цикъла, първия до 200, втория - докъдето ти трябва. Създаваш един външен флаг boolean. Флага в началото е true. На OnKeyPressed проверяваш флага:
ако е true изпълняваш първия цикъл (и правиш флага false), инак пускаш втория цикъл
чети и дишай по-леко
ако е true изпълняваш първия цикъл (и правиш флага false), инак пускаш втория цикъл
чети и дишай по-леко
Re: keypressed в Delphi
Основаната разлика между примера, който даваш и програмирането под Win e, че не можбеш да спреш целия проце с цикъл, като repeat until keypressed; защото в тоя цикъл основната нишка на програмата ти е спряла.
А нормалните програми, които ще пишеш в началото ще са само с една нишка - основната - и тя като спре - програмата ти е забила.
Естествено, има техники за заобикаляне на проблема, но практиката е друга и подоби хватки се правят в редки редки случеи, с които не трявба да започваш обучението си.
Вероятно вече правилно са те насочили, но в началото е добре да разказваш повече за проблема, който решаваш, а не да търсиш конкретно решение (както в тая тема). Така ще може да получиш по-адекватна помощ.
Извинявам се за многословието :)
А нормалните програми, които ще пишеш в началото ще са само с една нишка - основната - и тя като спре - програмата ти е забила.
Естествено, има техники за заобикаляне на проблема, но практиката е друга и подоби хватки се правят в редки редки случеи, с които не трявба да започваш обучението си.
Вероятно вече правилно са те насочили, но в началото е добре да разказваш повече за проблема, който решаваш, а не да търсиш конкретно решение (както в тая тема). Така ще може да получиш по-адекватна помощ.
Извинявам се за многословието :)