Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> свой тип файлов 
V
    Опции темы
Teleport
Дата 15.3.2009, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 5.7.2008
Где: Прибалтика

Репутация: 3
Всего: 6



Вот сижу я и смотрю - в windows'e куча программ у меня поставлено и каждой программы есть свой типов файлов. Например, AutoCad имеет несколько своих типов (dwg, dxf...), Photoshop тоже свои проекты сохраняет в своем раширении и типе файла (psd, например). Так вот - а как же мне так сделать? Есть, например, программка, которая делает какие-то расчеты, строит диаграммки. Пользователь заполняет в ней таблички разные. И вот я хочу чтобы в любой момент этот самый пользователь мог сохранить свои значения в файле, а потом, когда захочет, открыть в моей программке свой сохраненный файл и продолжить заполнять и рассчитывать. Причем я не хочу сохранять просто в txt или в ini. Хочу работать именно со своим форматом файла (Речь пока не идет о том чтобы операционка распознавала мой формат файла, как файл моей программы).  Выкладываю пример, в котором хочу это реализовать. Почитал я про типизированные файлы - вот думаю... там должны быть записи, например, повторяющиеся структуры данных... и записана запись может быть только полностью... вот не могу понять подходит ли мне это...

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  typ_fail.rar 6,59 Kb


--------------------
user posted image
user posted image 
PM MAIL   Вверх
Kbl4AH
Дата 15.3.2009, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: 1
Всего: 15



так сохраняй свои файлы с расширениеv TEL, а не TXT smile 
PM MAIL ICQ   Вверх
former
Дата 15.3.2009, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

Репутация: 5
Всего: 17



Teleport, а чем не устраивают типизированые? Я так понял, что нужно не только данные из таблицы хранить.


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
Teleport
Дата 15.3.2009, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 5.7.2008
Где: Прибалтика

Репутация: 3
Всего: 6



2 former - да, данные не только из таблиц. Будут еще данные с различных ListBox, Edit, Memo. И вот пример - в моей программе рисуется какая-то фигура. Если нарисовали прямоугольник, значит переменной какой-то будет присвоено значение Эпрямоугольник" и его координаты. Если окружность или любая другая фигура - аналогично. Вот как в моем примере сохранить в типизированный файл??? Например при неполном заполнении таблицы? Т.е. если куча таблиц в программе? как сохранять в типизированный файл В ЛЮБОЙ МОМЕНТ заполнения. Т.е. до конца или нет я заполнил таблицу, заполнил ли я какие-то другие данные - не важно. Могу в любой момент времени смохранить всю уже введенную инфу. Какой тут подход? Как именно? Не могу понять  smile 

2 Kbl4AH - а я же, блин, хитромордый. Я не хочу чтобы мой файл в любом текстовом редакторе можно было посмотреть и сразу все понять. 

Это сообщение отредактировал(а) Teleport - 15.3.2009, 18:09


--------------------
user posted image
user posted image 
PM MAIL   Вверх
former
Дата 15.3.2009, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

Репутация: 5
Всего: 17



Цитата(Teleport @  15.3.2009,  18:07 Найти цитируемый пост)
Как именно?

могу предложить такой вариант.
1) Создавать для каждого типа объектов свой файл со своим расширением с массивом их описаний (типизированные файлы)
2) При сохранении склеивать их в один (поищи на форуме, Snowy приводил код)
2) При открытии либо считывать данные из этого файла, либо разбирать их из файла во временную папку.

Я когда-то так делал файлы обновлений для БД. Там были и RTF и JPG и свой формат типизированного файла.  Найти вот только не могу.

Типа как в делфе. 

p.s. Можно еще посмотреть в сторону архивов.

Это сообщение отредактировал(а) former - 15.3.2009, 18:19


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
THandle
Дата 15.3.2009, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 65
Всего: 372



Teleport, для создания своего типа файлов рекомендую TWriter/Treader.

Для ассоцииации расширения файла с программой - пишешь в HKEY_CLASSES_ROOT расширение своего файла и с какой программой он ассоциируется, а потом анализируешь параметры коммандной строки (ParamStr). Примеры можно найти через поиск.
PM   Вверх
former
Дата 15.3.2009, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

Репутация: 5
Всего: 17



Цитата(THandle @  15.3.2009,  18:19 Найти цитируемый пост)
Teleport, для создания своего типа файлов рекомендую TWriter/Treader.

Используя это и склеивать файлы в один.


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
THandle
Дата 15.3.2009, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 65
Всего: 372



Цитата(former @  15.3.2009,  18:21 Найти цитируемый пост)
Используя это и склеивать файлы в один. 


Зачем? Почему бы не писать все сразу в один файл? Это вполне возможно. Главное продумать как следует структуру.
PM   Вверх
Teleport
Дата 15.3.2009, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 5.7.2008
Где: Прибалтика

Репутация: 3
Всего: 6



2 former  - склеивать - об этом даже не думал...
2 THandle  - буду разбираться. Только в той статье мало чего мне понятно smile


--------------------
user posted image
user posted image 
PM MAIL   Вверх
former
Дата 15.3.2009, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

Репутация: 5
Всего: 17



Цитата(Teleport @  15.3.2009,  18:52 Найти цитируемый пост)
2 former  - склеивать - об этом даже не думал...

Вот здесь почитай


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
THandle
Дата 15.3.2009, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 65
Всего: 372



former, судя по коду приведенному Snowy(Хоть и Snowy, но все же есть небольшие "ненужности" типа заключения конструктора в try..except..end, ИМХО) он спаковывает в один файл несколько других, но потом чтобы эти файлы прочитать потребуется распаковывать на диск. Если топикстартеру это приемлемо(мне лично никоим образом подобное не нравится), то можно и использовать подобный метод. Но все же, как мне кажется, лучше самому сохранять все данные в определенной последовательности в один файл, а потом из этого же файла читать. при распаковке могут возникнуть проблемы. К примеру - нет прав на запись в директорию. и что делать? В общем, ИМХО, конечно. smile

Цитата(Teleport @  15.3.2009,  18:52 Найти цитируемый пост)
2 THandle  - буду разбираться. Только в той статье мало чего мне понятно


Будут вопросы - спрашивай smile
PM   Вверх
Данкинг
Дата 15.3.2009, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 9
Всего: 130



Цитата(Teleport @  15.3.2009,  18:07 Найти цитируемый пост)
Я не хочу чтобы мой файл в любом текстовом редакторе можно было посмотреть и сразу все понять. 

Я нажму <F3> в "коммандере" и точно так же посмотрю твой файл, какое бы ни было у него расширение.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Teleport
Дата 15.3.2009, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 5.7.2008
Где: Прибалтика

Репутация: 3
Всего: 6



2 former - мне сложно оценить данный метод так как не хватает ни опыта ни знаний. Но чисто по логике - мне проще писать все в один файл. За совет спасибо. smile
2 THandle - ага, спрошу. Сел разбираться.

Добавлено @ 20:08
2 Данкинг - я  не  имею ввиду, что нельзя посмотреть мой файл вообще  smile . Я  имею ввиду  - чтобы открыв мой файл - нельзя было понять что там написано, где какие данные к какой таблице располагаются. 

Это сообщение отредактировал(а) Teleport - 15.3.2009, 20:09


--------------------
user posted image
user posted image 
PM MAIL   Вверх
Teleport
Дата 17.3.2009, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 5.7.2008
Где: Прибалтика

Репутация: 3
Всего: 6



2 THandle - уважаемый, ты приводил для трех Edit'ов такие вот процедурки мне:
Запись:
Код
 
procedure TForm2.Button1Click(Sender: TObject);
var
  FS: TFileStream;
begin
  FS := TFileStream.Create('E:\TestEditsFile', fmCreate or fmOpenWrite);
  try
    with TWriter.Create(FS, 64) do
    try
      WriteListBegin;
      WriteString(Edit1.Text);
      WriteString(Edit2.Text);
      WriteString(Edit3.Text);
      WriteListEnd;
    finally
      Free;
    end;
  finally
    FS.Free;
  end;
end;



и чтение 
Код

procedure TForm2.Button2Click(Sender: TObject);
var
  FS: TFileStream;
begin
  FS := TFileStream.Create('E:\TestEditsFile', fmOpenRead);
  try
    with TReader.Create(FS, 64) do
    try
      ReadListBegin;
      Edit1.Text := ReadString;
      Edit2.Text := ReadString;
      Edit3.Text := ReadString;
      ReadListEnd;
    finally
      Free;
    end;
  finally
    FS.Free;
  end;
end;



А подходит ли данный способ для сохранения большого количества значений? Скажем так от 2000 значений  до 10000(пусть все будут типа строкового). Есть ли ньюансы, зависящие от размера? Буду рад советам. smile

Это сообщение отредактировал(а) Teleport - 17.3.2009, 08:43


--------------------
user posted image
user posted image 
PM MAIL   Вверх
THandle
Дата 17.3.2009, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 65
Всего: 372



Цитата(Teleport @  17.3.2009,  08:42 Найти цитируемый пост)
Скажем так от 2000 значений  до 10000(пусть все будут типа строкового). 


Пиши спокойно, ничего тебе не будет. smile
Только не вздумай каждую строчку писать в отдельной строке кода.. Делай циклом))) Ну это и так понятно smile
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0601 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.