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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сохранение данных TreeView 
:(
    Опции темы
AntonPavlov
Дата 24.2.2014, 03:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Есть TreeView, к узлам привязаны данные. 
Такая вот структура:
Код

type
  PNodeOptions = ^NodeOptions;
  NodeOptions=record
   Name: String[255];
   Surname: String[255];
   Address: String[255];
   EMail: String[255];
  end;

Пожалуйста, помогите эти данные записывать и считывать из файла! Я обыскал все, ничего путного не нашел((( 
Очень нужна помощь! 
PM MAIL   Вверх
ZBugz
Дата 24.2.2014, 06:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Пиши в inifile
[0]
item=1
item=2
item=3
item=4
PM MAIL   Вверх
kami
Дата 24.2.2014, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 23
Всего: 72



Цитата(AntonPavlov @  24.2.2014,  03:08 Найти цитируемый пост)
помогите эти данные записывать и считывать из файла! 

Первое, что попалось:
читаем
сохраняем
заодно - получится наглядно.
А использовал бы VirtualTree - вообще бы не задумывался о таком.
PM MAIL WWW   Вверх
gesper
Дата 24.2.2014, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


"Shарфик"
*


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

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



ini файл не годится тут.
Добавить два поля ID, ParentID и сохранять все в XML.
Насчет VirtualTree согласен.
--------------------
...И приколется обломившийся и oбломится приколовшийся...
PM MAIL   Вверх
ZBugz
Дата 25.2.2014, 06:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(gesper @ 24.2.2014,  15:16)
ini файл не годится тут.
Добавить два поля ID, ParentID и сохранять все в XML.
Насчет VirtualTree согласен.

Это с какого перепуга не годится ? smile 
Я даже VirtualTree сохраняю в него smile
PM MAIL   Вверх
Beltar
Дата 27.2.2014, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Если неохота курить XML, то можно и в бинарный файл без особых проблем, я в свое время так делал. Если понимаешь, что такое стек, то ничего сложного.

Для сохранения тупо пишешь все данные подряд от выбранного узла до конечного (на котором нужно остановиться, т. е. сохранить можно и одну выбранную ветку) с указанием числа дочерных, чтобы потом восстановить структуру.

Для загрузки создаешь стек из примерно таких структур:

Код

type
  TNodeNestingInfo=record
  t:Integer;// Сколько еще осталось присоединить
  Node:TTreeNode; // узел к которому надо присоединять для добавки в корень nil.
  end;


Дальше читаешь данные, присоединяешь данные к узлу в вершине стека, уменьшаешь t, если у узла есть дочерные, то суешь этот узел в стек, записываешь в t число дочерных. Если дочерных нет, то смотришь, все ли засунул в текущий, и если все, то начинаешь чистить стек, пока не найдется в нем узел в который надо грузить.

Я фрагмент кода выложу, значительная часть там тупо работа с потоком, и моей структурой NodeDescriptor, которая цеплялась к узлу, аналог твоей NodeOptions. Т. е. тебе она неинтересна, за исключением одного поля, TNodeDescriptor.t, оно означает тип узла, если -1, то это конечный узел с данными, если >-1, то значит узел является категорией и t=числу дочерных. При t=0 имеем пустую категорию.

Сам файл писался со смещением 64 байта, т. е. имелся хеадер с меткой типа файла и дополнительной инфой.

В принципе можно не париться с потоками и записать все в базу данных вроде Access, алгоритм будет таким же.

Присоединённый файл ( Кол-во скачиваний: 0 )
Присоединённый файл  FileOperations.pas 5,39 Kb


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
gesper
Дата 27.2.2014, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


"Shарфик"
*


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

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



Цитата(ZBugz @  25.2.2014,  06:13 Найти цитируемый пост)
Это с какого перепуга не годится ? smile 

Труднорасширяемый при развитии программы. Не гибок.
--------------------
...И приколется обломившийся и oбломится приколовшийся...
PM MAIL   Вверх
ZBugz
Дата 28.2.2014, 06:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(gesper @ 27.2.2014,  19:33)
Цитата(ZBugz @  25.2.2014,  06:13 Найти цитируемый пост)
Это с какого перепуга не годится ? smile 

Труднорасширяемый при развитии программы. Не гибок.

Ну почему же ? Он кстати гибки достаточно для этих целей, т.е. для дерева считаю очень удобным.
И как говорит Beltar, т.е. предлагает такую структуру, то вот именно с ней+ini работает у меня идиально тот же VirtualTree.
PM MAIL   Вверх
Beltar
Дата 28.2.2014, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



У меня программа на тогдашнем Sempron-2500 парсила банарник размером в 2-3 Мб секунды за 2. С INI размер файла ес-но будет больше и работать НАМНОГО медленнее, но сам ТС не сказал сколько именно данных он собирается хранить и что он вообще пишет, может у него там надо нормальную серверную СУБД ставить. Так о чем спорить? Вообще если писать в текстовик я бы проще сделал, читал все разом в StringList и там парсил аналогично бинарнику. Собственно Ini использовать меня смущает, что инишка явно работает по алгоритму маляра Шлемиля

Кто такой Шлемиль? Это малый из следующеro анекдота: 
Шлемиль устроился на работу маляром и должен был наносить разметку посредине дороrи. В первый день он взял бочку краски и разметил 300 метров дороrи. 
-Неплохо! - сказал босс - Ты быстро работаешь! - И заплатил ему денежку. 
На следующий день Шлемиль осилил только 150 метров. 
- Ну что ж, не так здорово, как вчера, но ты все равно быcrpо работаешь. 150 метров это не мало, - сказал босс и заплатил ему денежку. Еще через день Шлемиль расчертил 30 метров дороrи. 
Bcero 30 метров! - рассвирепел босс - Это никуда не годится. В первый день ты сделал в десять раз больше. Что случилось? 
- Ничеrо не могу поделать, - говорит Шлемиль. С каждым днем приходится все дальше и дальше уходить от бочки с краской..




--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
ZBugz
Дата 1.3.2014, 06:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

StringList

Именно так я и делаю, читаю через него с ini и сохраняю в ini smile Ну по крайней мере, если все это делать в ListView, то где то секунд 5 загрузка 1000 строк будет. Если VirtualTree, то я даже секунду не замечаю. А сохранение вообще мнгновенно.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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