Как скопировать часть экрана в текстовом режиме? |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
Как скопировать часть экрана в текстовом режиме? |
kornet |
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 11 Пол: Мужской Реальное имя: Юлиан Репутация: -1 |
Здравствуйте! Можно ли как то с помощью процедур Паскаля или ассемблера в текстовом режиме скопировать часть экрана и сохранить её (в графического режиме для этого существует процедура GetImage из модуля Graph)? Заранее спасибо за ответ.
|
klem4 |
Сообщение
#2
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Используй видеопамять.
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Гость |
Сообщение
#3
|
Гость |
Используй видеопамять. Спасибо. Я нашёл на форуме несколько тем по поводу использования видеопамяти, но такой способ не работает во FreePascal'e. type bytear = array [1..4000] of byte;- не компилируется, компилятор выдает ошибку <Syntax Error, ";" expected but ":" found >. Вопрос: как обратиться к видеопамяти с помощью FreePascal? |
volvo |
Сообщение
#4
|
Гость |
Используя Go32V2 DOSExtender. Иначе FPC не воспринимает привязку Absolute к адресу в памяти, только к другой переменной...
Сообщение отредактировано: volvo - |
klem4 |
Сообщение
#5
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
kornet
Советую покапаться в rtl.pdf, вот что я смог вынести из копания за пару минут:
Сообщение отредактировано: klem4 - -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
volvo |
Сообщение
#6
|
Гость |
Кстати, kornet, ты в программе Crt используешь? А то Video можно применять только тогда, когда не используется Crt, иначе будут глюки...
|
kornet |
Сообщение
#7
|
Новичок Группа: Пользователи Сообщений: 11 Пол: Мужской Реальное имя: Юлиан Репутация: -1 |
Цитата(volvo) Используя Go32V2 DOSExtender. Иначе FPC не воспринимает привязку Absolute к адресу в памяти, только к другой переменной... Не хочет компилировать в режиме Go32V2 DOSExtender. Жалуется на то, что не может найти модуль System.ppu, хотя он есть в папке FPC\2.2.0\units\i386-win32\rtl и в Directories этот адрес указан. Пишет : PPU Loading D:\FPC\2.2.0\units\rtl\System.ppu. PPU is compiled for other target. test2.pas(1,1) Fatal: Can't find unit System used by program; Цитата(klem4) kornet Советую покапаться в rtl.pdf, вот что я смог вынести из копания за пару минут: Спасибо, почитаю. Этот способ работает. Цитата(volvo) Кстати, kornet, ты в программе Crt используешь? А то Video можно применять только тогда, когда не используется Crt, иначе будут глюки... Вообще то я хочу разработать несколько объектов окон(типа тех, что во FreePascal), чтобы их можно было передвигать, изменять их размеры, закрывать и т.д., для использования в других программах. Для этого, мне и надо, чтобы можно было сохранять часть экрана - для того, чтобы запоминать то, что находится под окном. |
andriano |
Сообщение
#8
|
Гуру Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
|
kornet |
Сообщение
#9
|
Новичок Группа: Пользователи Сообщений: 11 Пол: Мужской Реальное имя: Юлиан Репутация: -1 |
Цитата(andriano) По сути дела ты ручками сделаешь то, что за тебя делает Go32V2. Вопрос в том, как сделать так, чтобы FreePascal компилировал в этом режиме? Кидал модуль system.ppu в разные папки, все равно компилятор пишет ту же ошибку, о которой я писал в своём предыдущем посте. |
andriano |
Сообщение
#10
|
Гуру Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
Вопрос в том, как сделать так, чтобы FreePascal компилировал в этом режиме? Кидал модуль system.ppu в разные папки, все равно компилятор пишет ту же ошибку, о которой я писал в своём предыдущем посте. Нет, сервис DPMI позволяет 32-разрядным программам DOS работать с нижней памятью вообще (например, со звуковым буфером или прерываниями, использующими память, такие как сервис VESA) и видеопамятью в частности. Директива absolute, естественно, при этом работать не будет. Но ведь у тебя задача получить доступ к видеопамяти, а не использовать определенную конструкцию языка. |
kornet |
Сообщение
#11
|
Новичок Группа: Пользователи Сообщений: 11 Пол: Мужской Реальное имя: Юлиан Репутация: -1 |
Нет, сервис DPMI позволяет 32-разрядным программам DOS работать с нижней памятью вообще (например, со звуковым буфером или прерываниями, использующими память, такие как сервис VESA) и видеопамятью в частности. Директива absolute, естественно, при этом работать не будет. Вообще то я спрашивал, как настроить FreePascal, чтобы он работал в режиме Go32V2 DOSExtender. Но, допустим, я не смогу его настроить. Мог бы ты написать, какими функциями DPMI я должен пользоваться или где я могу про это прочитать. Спасибо. |
volvo |
Сообщение
#12
|
Гость |
Цитата Вообще то я спрашивал, как настроить FreePascal, чтобы он работал в режиме Go32V2 DOSExtender. Вообще-то ты толком объясни, чего хочешь-то? Ты хочешь из-под WinNT пользоваться Go32V2? (Компилятор какой качал? Для Win32? Судя по пути, указанному тобой, так и есть...) Не будет этого: Цитата(Offsite) The latest release version is 2.0.4 Please keep in mind that this package isn't supposed to work in Windows NT/2000/XP. , с ним можно работать под чистым ДОСом. Обрати также внимание на соответствие версии компилятора, если у тебя вторая ветка - ты огребешь столько проблем с Go32V2, что лучше и не начинай... |
kornet |
Сообщение
#13
|
Новичок Группа: Пользователи Сообщений: 11 Пол: Мужской Реальное имя: Юлиан Репутация: -1 |
Вообще-то ты толком объясни, чего хочешь-то? Ты хочешь из-под WinNT пользоваться Go32V2? (Компилятор какой качал? Для Win32? Судя по пути, указанному тобой, так и есть...) Не будет этого: , с ним можно работать под чистым ДОСом. Обрати также внимание на соответствие версии компилятора, если у тебя вторая ветка - ты огребешь столько проблем с Go32V2, что лучше и не начинай... Да, качал для Win32. И хотел бы все программы и модули компилировать в нём. Вобщем, я понял, что для обращения к видеопамяти в Windows легче и лучше всего пользоваться модулем video.ppu, но при этом придется отказаться от использования модуля crt(но судя по тому, что я прочитал в руководстве, в video.ppu имеются те же и другие подпрограммы и переменные, которые есть в crt, и можно пользоваться ими). Спасибо всем, еще раз, за советы. |
andriano |
Сообщение
#14
|
Гуру Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
...что для обращения к видеопамяти в Windows легче и лучше всего... Нич-чего не понимаю!В Windows обращаться к видеопамяти вообще безыдейно. До сих пор я был уверен, чо речь идет имено о DOS, исходя из этого и писал. В DOS требуется вполне конкретное железо, соответственно, можно гарантировать, что номера регистров, способов работы с ними, адресов видеопамяти и т.п. при работе программы идентичны вне зависимости от того, где и когда бы эта программа ни запускалась. Windows изначально предполагает иное. Поэтому непосредственная работа с видеопамятью - дело гиблое и бесперспективное. |
sheka |
Сообщение
#15
|
Я. Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: 11 |
Цитата type bytear = array [1..4000] of byte; Так что, получается этим под виндосом пользоваться нельзя? (у меня ФриПаскаль, ОСь ХРюша или Вин7) Т.е. надо качать ТП и на ХРюше работать, да? |
volvo |
Сообщение
#16
|
Гость |
Цитата Так что, получается этим под виндосом пользоваться нельзя? Получается, что нельзя. Если б ты сразу задал вопрос в разделе "32-битные компиляторы" - тебе бы сразу сказали, что обращение к видеопамяти напрямую - не их сильная черта. |
Текстовая версия | 11.01.2025 4:24 |