Приветсвую всех Паскалеведов, обитающих тут. Собственно, возник вопрос, связанный с вводом в графическом режиме (если быть точным, то ввод чисел). Я поискал в различных учебниках по паскалю, мануалах и тп, но нигде не нашел даже упоминания про ввод в графическом режиме! Может быть, в паскале вообще такого не предусмотрено? Но если есть вывод, то почему не сделали ввод? Что нить типо функции intextXY? Если все-таки такое дело можно провернуть, то опишите плиз как это сделать... и эдак попроще... заранее признателен
Archon
16.06.2005 20:24
Ну, может не самое лучшее решение, но я раньше пользовался (подкоректировал немного под твои нужды):
Procedure IntextXY(X, Y : integer; var Num : integer; symbols_num : integer); Const NUMS = ['0'..'9']; Var Str : string; Key : char; XX : integer; Code : integer; Begin SetTextJustify(LeftText,BottomText); SetFillStyle(SolidFill,0); Bar(X, Y, X + 8 * (symbols_Num + 1), Y-8); XX := X; Line(X, Y, X+8, Y); Str := ''; Repeat While KeyPressed do ReadKey; Key := ReadKey; If (Key in NUMS) and (length(Str) < symbols_Num) then Begin Bar(X, Y, X + 8 * (symbols_num + 1), Y-8); Inc(XX, 8); Line(XX, Y, XX+8, Y); Str := Str + Key; OutTextXY(X,Y,Str); End; If (Key = #8) and (length(Str) > 0) then Begin Bar(X, Y, X + 8 * (Symbols_Num + 1), Y-8); Dec(XX, 8); Line(XX, Y, XX+8, Y); Delete(Str, length(Str), 1); OutTextXY(X,Y,Str); End; Until Key = #13; Bar(XX, Y, XX+8, Y); Val(Str, Num, Code); End;
Guest
16.06.2005 20:34
пасибо!
trminator
21.06.2005 2:27
А directVideo := false? Можно будет делать так:
uses graph, CRT; var d, m : integer; s : string; begin d := 0; {autodetect} directVideo := false; InitGraph(d, m, 'c:\bp\bgi');
то есть обычный readLn/writeLn работают. ЕМНИП, для этого и нужно выставлять directVideo := false, вроде как это чревато только потенциальной потерей быстродействия
Archon
21.06.2005 3:45
Что делает directVideo?(извиняюсь за тупой вопрос, не сталкивался)
Оно, конечно, хорошо, только в любой точке экрана и любым шрифтом ты readln не поставишь...
trminator
21.06.2005 15:09
Да, не в любой точке. Но все-таки gotoxy() от CRT работает. Хотя с точностью до пиксела не спозиционировать, и шрифт не выбрать (без извращений)... Но это просто один из вариантов, при этом самый простой
Цитата
Что делает directVideo?
Извиняюсь за тупой ответ, но не вникал
xds
21.06.2005 16:16
Если DirectVideo = True, то консольный вывод осуществляется напрямую в видеобуфер. В противном случае Crt использует вызовы BIOS (int 10h).
Archon
22.06.2005 4:09
Можно было по названию переменной догадаться... <_<
Romtek
23.06.2005 22:21
Если прям так критична скорость (хотя при вводе текста она вообще не играет роли ), то можно перед вводом написать directVideo := false; ввести текст через readln, а потом вернуть обратно directVideo := true;
where can i buy stromectol iverm
9.09.2021 18:32
New Primatene Mist Inhaler
can you take ibuprofen with pred
14.11.2021 3:17
Direct Provera Order
hydroxychloroquine online purcha
4.12.2021 17:54
Comprare Viagra On Line E Reato
officeSIZ
10.07.2023 22:10
hydra real estate gmbh hydra real estate gmbh hydra real estate gmbh hydra real estate gmbh
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.