Работа с файлами |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Работа с файлами |
BRS |
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 45 Пол: Мужской Репутация: 0 |
Необходимо сохранить в файл прямоугольную картинку (вроде того как через GetImage) в любом расширении, для последующего вывода ее на экран.
Какь? а то с файлами вобще плохо себе представляю как работать |
Altair |
Сообщение
#2
|
Ищущий истину Группа: Пользователи Сообщений: 4 825 Пол: Мужской Реальное имя: Олег Репутация: 45 |
теоретически, хоть в текстовый
а реально, надо так: заволим запись: dd =record color:byte; x,y:word; end; теперь файл такого вида: f: file of dd; теперь каждый пиксель участка сичтываем цвет, и сохраняем координаты. Записываем в файл. Потом читаем следующий. и так делее. Конечно, volvo обязательно оптимизирует что-то здесь, всякие полезные слова добавит ... но и так можно ... :P ;) Ага, опережу его - можно удрать из записи координаты, если договориться скажем читать и записывать цвета участка экрана в определенном порядке . :D -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Digitalator |
Сообщение
#3
|
Бывалый Группа: Пользователи Сообщений: 247 Пол: Мужской Репутация: 1 |
А не лучше ли в файл записывать все содержимое полученно по GetImage?
т.е. var x1,y1,x2,y2:word; image:pointer; f:file; .... .... size = imagesize(x1,y1,x2,y2); getmem(image,size); GetImage(... image. .. ) {не помню синтаксис} blockwrite(f, image^, size); вот так примерно (проверить извиняйте не могу ) -------------------- |
Altair |
Сообщение
#4
|
Ищущий истину Группа: Пользователи Сообщений: 4 825 Пол: Мужской Реальное имя: Олег Репутация: 45 |
Хм, действительно!
ТОгда GetImage(X,y,x1,y1,bufer) - читаем, затем записываем в файл: blockwrite... ну а для чтения считываем изображение и выводим putimage. -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
APAL |
Сообщение
#5
|
Смотрю... Группа: Пользователи Сообщений: 1 055 Пол: Мужской Реальное имя: Пшеничный Алексей Анатольевич Репутация: 6 |
Оффтоп.... по делу: 3. Все исходники должны помещаться в теги
Думаю для 1 строчки можно сделать исключение. Сообщение отредактировано: Oleg_Z - -------------------- |
BRS |
Сообщение
#6
|
Новичок Группа: Пользователи Сообщений: 45 Пол: Мужской Репутация: 0 |
Хм - а как гетимадж считать - подробнее давайте
|
volvo |
Сообщение
#7
|
Гость |
Код var size, x, y: integer; p: pointer; f: file; ... { запись в файл: } size := imagesize(x1, y1, x2, y2); getmem(p, size); getimage(x1, y1, x2, y2, p^); blockwrite(f, p^, size); x := x1; y := y1; {необходимо для восстановления фрагмента экрана в том же месте} ... { чтение из файла: } blockread(f, p^, size); putimage(x, y, p^, copyput); freemem(p, size); P.S. Такой способ будет работать если запись фрагмента изображения и его чтение происходят в одной программе и программа не прекращает работу между этими действиями... (т.е. не происходит выхода из программы.) Сообщение отредактировано: volvo - |
Digitalator |
Сообщение
#8
|
Бывалый Группа: Пользователи Сообщений: 247 Пол: Мужской Репутация: 1 |
кстати, на сколько я помню, если вывести первые 15 байт из массива взятого по getimage, то в них можно обнаружить кое-какие полезности, в часности dx ,dy , а может и еще че-нить
-------------------- |
BRS |
Сообщение
#9
|
Новичок Группа: Пользователи Сообщений: 45 Пол: Мужской Репутация: 0 |
необходимо чтоб этот файл можно было при послед. использовании проги использовать
(типа граф. редактор) |
Digitalator |
Сообщение
#10
|
Бывалый Группа: Пользователи Сообщений: 247 Пол: Мужской Репутация: 1 |
Цитата при послед. использовании проги использовать Всмысле чтоб подгружать в любое время и любой подобный файл можно было? ну так в чем проблема - читаешь его блокридом как показано выше было и выводишь куда надо... потом сохраняешь куда надо. - что непоноятно? -------------------- |
volvo |
Сообщение
#11
|
Гость |
Тогда можно создавать вместе с файлом, содержащим само изображение, еще один маленький файлик (допустим, с тем же именем, но с другим расширением), в котором будут храниться только координаты для вывода на экран ...
Digitalator Проблема в том, что при выходе из программы он потеряет информацию о том, где первоначально находился фрагмент изображения ... :yes: Сообщение отредактировано: volvo - |
Digitalator |
Сообщение
#12
|
Бывалый Группа: Пользователи Сообщений: 247 Пол: Мужской Репутация: 1 |
зачем много файлов делать? - это неудобно. в начало все того же добавить координаты. но зачем вообще координаты? я так полагаю, если в том же месте выводить, то координаты заранее известны, а если все время в разном - то они не нужны в файле т.к. будут расчитываться.....
-------------------- |
Текстовая версия | 11.01.2025 6:01 |