![]() |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
![]() ![]() |
![]() |
xMajestic |
![]() ![]()
Сообщение
#1
|
Гость ![]() |
Приветсвую всех Паскалеведов, обитающих тут. Собственно, возник вопрос, связанный с вводом в графическом режиме (если быть точным, то ввод чисел). Я поискал в различных учебниках по паскалю, мануалах и тп, но нигде не нашел даже упоминания про ввод в графическом режиме! Может быть, в паскале вообще такого не предусмотрено? Но если есть вывод, то почему не сделали ввод? Что нить типо функции intextXY? Если все-таки такое дело можно провернуть, то опишите плиз как это сделать... и эдак попроще... заранее признателен
|
Archon |
![]()
Сообщение
#2
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 618 Пол: Мужской Репутация: ![]() ![]() ![]() |
Ну, может не самое лучшее решение, но я раньше пользовался (подкоректировал немного под твои нужды):
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;
-------------------- Close the World...txeN eht nepO
|
Guest |
![]()
Сообщение
#3
|
Гость ![]() |
пасибо!
|
trminator |
![]()
Сообщение
#4
|
Четыре квадратика ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 579 Пол: Мужской Репутация: ![]() ![]() ![]() |
А directVideo := false? Можно будет делать так:
uses graph, CRT;
var d, m : integer;
s : string;
begin
d := 0; {autodetect}
directVideo := false;
InitGraph(d, m, 'c:\bp\bgi');
putPixel(10, 10, white);
gotoxy(5, 5); write('> '); readLn(s);
CloseGraph;
end.
то есть обычный readLn/writeLn работают. ЕМНИП, для этого и нужно выставлять directVideo := false, вроде как это чревато только потенциальной потерей быстродействия -------------------- Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала |
Archon |
![]()
Сообщение
#5
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 618 Пол: Мужской Репутация: ![]() ![]() ![]() |
Что делает directVideo?(извиняюсь за тупой вопрос, не сталкивался)
Оно, конечно, хорошо, только в любой точке экрана и любым шрифтом ты readln не поставишь... -------------------- Close the World...txeN eht nepO
|
trminator |
![]()
Сообщение
#6
|
Четыре квадратика ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 579 Пол: Мужской Репутация: ![]() ![]() ![]() |
Да, не в любой точке. Но все-таки gotoxy() от CRT работает. Хотя с точностью до пиксела не спозиционировать, и шрифт не выбрать (без извращений)... Но это просто один из вариантов, при этом самый простой
![]() Цитата Что делает directVideo? Извиняюсь за тупой ответ, но не вникал ![]() -------------------- Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала |
xds |
![]()
Сообщение
#7
|
![]() N337 ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 737 Пол: Мужской Репутация: ![]() ![]() ![]() |
Если DirectVideo = True, то консольный вывод осуществляется напрямую в видеобуфер. В противном случае Crt использует вызовы BIOS (int 10h).
-------------------- The idiots are winning.
|
Archon |
![]()
Сообщение
#8
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 618 Пол: Мужской Репутация: ![]() ![]() ![]() |
Можно было по названию переменной догадаться... <_<
-------------------- Close the World...txeN eht nepO
|
Romtek |
![]()
Сообщение
#9
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 303 Пол: Мужской Реальное имя: Роман Репутация: ![]() ![]() ![]() |
Если прям так критична скорость (хотя при вводе текста она вообще не играет роли
![]() -------------------- Romiras HomeLab- материалы и статьи по разработке ПО, моделирование алгоритмов, обработка и анализ информации, нейронные сети, машинное зрение и прочее.
|
where can i buy stromectol iverm |
![]()
Сообщение
#10
|
Гость ![]() |
New Primatene Mist Inhaler
|
can you take ibuprofen with pred |
![]()
Сообщение
#11
|
Гость ![]() |
Direct Provera Order
|
hydroxychloroquine online purcha |
![]()
Сообщение
#12
|
Гость ![]() |
Comprare Viagra On Line E Reato
|
officeSIZ |
![]()
Сообщение
#13
|
Гость ![]() |
hydra real estate gmbh
hydra real estate gmbh hydra real estate gmbh hydra real estate gmbh |
![]() ![]() |
![]() |
Текстовая версия | 31.03.2025 0:56 |