Типизированный файл
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Типизированный файл Expand / Collapse
Автор
Сообщение
04.06.2006 14:59


Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 12.06.2008 11:23
Сообщ.: 96, Visits: 535
Подскажите, возможно ли в типизированный файл сохранять другие файлы?

Я пробовал в record добавить переменную Img: TImage:
type
   Data=record
      Img: TImage;
   end;
TDataArray = Array of Data;

TTypeFile = File of Data;

Дальше пытался для начала в массив загрузить изображение
...
var
   fArray: TDataArray;
begin
   SetLength(....
   ...
   fArray[1].Img.Picture.LoadFromFile('<путь к файлу>');
И на этом этапе Delphi начинал ругаться.

Что не так, или такое вообще нельзя сделать и надо использовать TMemoryStream для таких веще?

Сообщ. #898085
04.06.2006 19:17
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 04.06.2006 19:06
Сообщ.: 6, Visits: 73
fArray[1].Img.Pictu... должен быть с нуливого индекса тогда ругаться точно перестанет.
TImage это класс который в файл по моему засунуть нельз.
К томуже почему TTypeFile = File of Data ведь получается только один блок? Но тогда TTypeFile = File of TDataArray нельзя делать он должен быть полностью типизирован и ограничен.
Подобными вещами я занимался но потом нашёл в нете что то готовое (какуюто компоненту) и там целый класс занимался загрузкой и выгрузкой.
Сообщ. #898098
05.06.2006 11:00
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 29.09.2007 22:12
Сообщ.: 343, Visits: 3 388
на все есть свои ограничения. в том числе и на типированные файлы.

нельзя, например делать file of fille(и все что явно или неявно это предполагает)

Сообщ. #898107
05.06.2006 11:25


Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 12.06.2008 11:23
Сообщ.: 96, Visits: 535
 Спасибо за ответы.
 Я для решения своей задачи стал использовать TMemoryStream, сначала все файлы сохраняю в этот MemoryStream, а потом пишу файл. В интернете есть статья "Как склеить несколько файлов в один". Есть недостатки некоторые в предложенном исходнике:
-например, если фалов будет много, то будет задействован большой объем памяти, поэтому надо периодически сохранять файл, и далее дозаписывать в него. Вопрос в том, как дозаписать. Я еще не думал, но идеи есть. Если у кого есть свои идей, буду рад почитать.

-второй недостаток, это скорее не недостаток, а просто опять же еще не думал. Сохранить все файлы в один не трудно, для начала можно даже и без дозаписей, трудность потом извлечь эти файлы. Надо знать сколько фалов сохранено в один. Можно конечно писать первым фалом всякую необходимую информацию о том сколько фалов и их размеры, можно попробовать что-нибудь с EOF.

 Одним словом, если есть какие предложения на эту тему пишите!
 Еще раз всем спасибо!

Сообщ. #898108
05.06.2006 15:41
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 29.09.2007 22:12
Сообщ.: 343, Visits: 3 388
А не проще ли БД использовать?Заиметь таблицы с БЛОБ полем и туда файло ложить/оттуда вытаскивать ?
Сообщ. #898124
07.06.2006 12:52


Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 12.06.2008 11:23
Сообщ.: 96, Visits: 535
Проще, но необходимо реализовать именно, как я писал выше.
Сообщ. #898214
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl

Время GMT +3:00, Сейчас 8:21