| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Сохранение файлов в одном |
| Автор: pushok 30.7.2010, 09:38 | ||
| Здравствуйте. Пытаюсь в один файл (поток TFileStream) запихнуть информацию разного рода. Для начала запихнул строку и число - получилось. Далее попытался добавить картинку, но здесь у меня возникла проблема: мне в программе надо в переменной (или в объекте, наверное лучше будет сделать объект) иметь текстовые, числовые данные, а также изображения. Строки и числа будут статическими переменными и здесь проблем не возникает. Пытался сохранять из компонентов (использовал TImage): оказалось там есть TBitmap и TGraphic и, как я понимаю, отображается один из двух. 1. Что мне нужно использовать?? 2. Какой из них сможет хранить и загружать изображения разного формата? 3. А главное как их сохранять? Правильно ли я пытаюсь сохранить?
Ситуация такая: загружаю картинку в Image1. Сохраняю в файл (при этом выводя сообщение о размере потока fs2 при сохранении получаю какое-то не нулевое число). После сохранения изображение из Image 1 исчезает. Пытаюсь открыть: число и строка считываются нормально, ошибок не появляется, но и в Image1 также ничего не появляется... Ничего не понятно. 4. И еще вопрос. Если в последствии мне понадобиться сохранять и отображать форматированный текст (например формат .doc). Это реально? Как мне его хранить (TStringList вроде не подходит) ? Какие компоненты использовать для отображения? Заранее благодарю за прояснение обстановки = ) |
| Автор: Amphiluke 30.7.2010, 11:41 | ||||
Попробуйте использовать временный буфер для чтения из одного потока в другой.
Добавлено через 2 минуты и 48 секунд А, еще. В процедуре сохранения можно заменить на
Все равно копируете всё содержимое. |
| Автор: Akella 30.7.2010, 12:52 |
| А если создать запись Record с разными полями и сохранять её в поток? |
| Автор: Snowy 30.7.2010, 13:22 | ||
Добавлено через 45 секунд тогда уж лучше объект и целиком скормить его в TObjWriter |
| Автор: Amphiluke 30.7.2010, 13:32 |
| Akella, а картянка (TBitmap) и строка (string) — это же указатели по сути. Так что, вроде, все равно придется каждое поле структуры по отдельности вписывать, чтобы сохранить в файл. Нет? |
| Автор: Akella 30.7.2010, 13:54 |
| А может лучше использовать базу данных? Можно использовать таблицы в памяти и т.д. |
| Автор: pushok 30.7.2010, 14:02 | ||
Подумал, вот такие объекты написал:
* прийду домой вечером - буду загрузку делать Вопрос следующий: TQuestion стоит ли делать объектом или сделать его записью лучше? |
| Автор: Fighter 31.7.2010, 01:39 |
| Тааааааааакс, слушай-ка, TQuestion. Я так понял задача у тебя такая: Создать программу по созданию тестов, причем тесты у пользователя должна быть возможность создавать, также этот созданный тест должна быть возможность пройти. Причем в вопросах и ответах необходимо добавить возможность задания картинок. В общем, если это так то у меня есть готовое решение. ТАм в файл пишется все, вопросы, ответы, картинки если необходимо, также теория в формате Word. Если что, попробую поднять исходники. Единственный там минус (который ты возможно устранишь) - там долго идет загрузка. Но долго она идет потому что мне лень было думать как считать размер последнего загружаемого буфера, поэтому подгрузка из файла идет в буфер размером в 1 байт |
| Автор: pushok 31.7.2010, 09:00 |
| Буду рад посмотреть твои коды = )) Надеюсь разберусь... |
| Автор: pushok 31.7.2010, 10:25 | ||
Написал, вот что у меня получилось (в коде оставил только, то, что нужно оценить) (пояснения ниже):
Решил сделать тест объектом, т.к. он должен иметь процедуры открытия (создания) и уничтожения. Остальное решил сделать записями, т.к. все объекты (включенные в записи) будут создаваться в процедуре загрузки теста. Процедура загрузки теста (LoadTest1) написана как инициализация (без самой загрузки из файла), но планирую её сделать по образу LoadTest1. Вопросы: 1. Есть какие-нибудь недочеты? 2. Если в вопросе картинки не подразумевается, то я её (объект img) не создаю, чтобы не занимать лишнюю память. При удалении объектов я её всеравно удаляю. Не возникнет ли проблемных ситуаций с этим? (проверял - ошибок не появлялось). Если лучше не удалять, то что не создавал, то как проверить создавал ли я её? |
| Автор: pushok 31.7.2010, 18:36 |
| И еще возникла проблема... Написал функции отбора вопросов. При первом вызове всегда все в порядке. Но при последующих может возникнуть ошибка (EInvalidPointer) при этом может возникнуть, а может и не возникнуть...странное дело. Из программы я не выхожу, а просто вызываю повторно функции. Использую динамические массивы. Я так понимаю это из-за них, но дело в том, что они у меня всегда одинаковой длины. На это стоит обращать внимание? |
| Автор: azion 31.8.2010, 23:18 |
| привет ребята если на трудно выложите полный исходник интересно как все выглядит |