Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.01.2011, 10:29   #1
JoLan
Delphi XE7
Пользователь
 
Аватар для JoLan
 
Регистрация: 26.07.2010
Сообщений: 74
По умолчанию TreeView, Record, FileStream

Доброе утро.

Есть TreeView с некой структурой, которое в последующем экспортируется в StringList:

Код:
Узел1-Ветка1
Узел1-Ветка2-Элемент1
...
Есть структура в виде записи:

Код:
Type
...
Struct = record
  Path,Question,Var1,Var2,Var3,Var4:ShortString;
  Correct:Byte;
end;
в Path записываются строки, экспортированные из TreeView, но только те, которые имеют все 3 уровня (Узел1-Ветка2-Элемент1).

Вопрос: как сделать запись в файл и список путей, и записи? Или может я изначально реализовываю геморройным путём?
JoLan вне форума Ответить с цитированием
Старый 15.01.2011, 11:09   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Не то чтобы неверным путем... Если нужно то можно
Код:
var i,p:TTreeNode;s:string;
begin
 i:=TreeView1.TopItem;
 while i<>nil do begin
  if i.Level=2 then begin
   s:='';//i.Text;
   p:=i; while p<>nil do begin s:=p.Text+'-'+s; p:=p.Parent; end;
   ListBox1.Items.Add(s);
  end;
  i:=i.getNext;
 end;
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.01.2011, 11:46   #3
JoLan
Delphi XE7
Пользователь
 
Аватар для JoLan
 
Регистрация: 26.07.2010
Сообщений: 74
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Не то чтобы неверным путем... Если нужно то можно
Код:
var i,p:TTreeNode;s:string;
begin
 i:=TreeView1.TopItem;
 while i<>nil do begin
  if i.Level=2 then begin
   s:='';//i.Text;
   p:=i; while p<>nil do begin s:=p.Text+'-'+s; p:=p.Parent; end;
   ListBox1.Items.Add(s);
  end;
  i:=i.getNext;
 end;
end;
Спасибо огромное за экспорт списка, но он уже реализован (правда кода в 4 раза больше). Когда я спрашивал, то имел ввиду: как можно записать в файл список, который уже хранится в StringList + массив записей?
JoLan вне форума Ответить с цитированием
Старый 15.01.2011, 11:54   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
как можно записать в файл список, который уже хранится в StringList + массив записей?
Ну дык в цикле подобавляй в StringList этот массив, а потом SaveToFile
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.01.2011, 11:57   #5
JoLan
Delphi XE7
Пользователь
 
Аватар для JoLan
 
Регистрация: 26.07.2010
Сообщений: 74
По умолчанию

Можно, конечно, сохранить весь список в текстовый файл, а массив записей потоком в другой, но хотелось бы в один файл. Это возможно?
JoLan вне форума Ответить с цитированием
Старый 15.01.2011, 13:18   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Это возможно?
Да. Допиши просто каждую запись в одну строку через некий разделитель.
Код:
StringList.Add(Path+','+Question+','...)
А потом сохраняй это. Но если ты пишешь тесты, то лучше используй INI файлы, не забыв зашифровать тест, или вообще базу данных.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.01.2011, 13:44   #7
JoLan
Delphi XE7
Пользователь
 
Аватар для JoLan
 
Регистрация: 26.07.2010
Сообщений: 74
По умолчанию

Вы, видимо, не так поняли. Мне нужно сохранить список путей и структуру, которую я описал ранее.

А по поводу Ini-файлов: вообще раньше я думал создать рядом с программой папку, в которой была бы такая структура:

/struct
/struct/Subject1
/struct/Subject1/Theme1
/struct/Subject1/Theme1/Var1.ini

Но, по-моему, экспорт потоком в файл будет более безопасней в плане посмотреть какой вопрос-ответ.

Последний раз редактировалось JoLan; 15.01.2011 в 13:50.
JoLan вне форума Ответить с цитированием
Старый 15.01.2011, 13:59   #8
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

^__^ помниться можно делать так f: file of Struct.... но он будет ругаться т.к. ему подавай статические массивы, т.е. для string надо будет зафиксировать размер...
Помог? Ну так нажми на весы!
SNUPY вне форума Ответить с цитированием
Старый 15.01.2011, 14:01   #9
JoLan
Delphi XE7
Пользователь
 
Аватар для JoLan
 
Регистрация: 26.07.2010
Сообщений: 74
По умолчанию

ув. товарищ SNUPY, если пришли говорить не по теме - лучше не говорите. Поставлен конкретный вопрос: как записать StringList и Array of Record в 1 файл. Либо, если этот вопрос глуп с точки зрения реализации, предложите лучшее решение.
JoLan вне форума Ответить с цитированием
Старый 15.01.2011, 14:25   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Вы, видимо, не так поняли.
Да уж... Трудно понять того кто сам не оч. понимает что хочет...
А SNUPY между прочим дело говорит. Структуры в текстовые файлы сохранять не удобно. Так что ты определись что тебе нужно.
Если посчитаешь это флудом то вот тебе конструктив: Сохраняй то что в StringList в текстовый файл, а то что в Array of Record в другой методом SNUPY, не забыв образмерить или финализировать строки в записи. не смешивай все в кучу - пожалеешь

Удачи.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FileStream Read и массив байтов bondik Общие вопросы .NET 5 06.10.2010 22:36
Проблемы с FileStream Gauss Общие вопросы .NET 10 13.09.2010 17:16
В чём различие записей Record от Packed Record? Terran Общие вопросы Delphi 7 08.06.2010 17:14
Record / Packed Record Alex Cones Общие вопросы Delphi 7 11.11.2009 10:43
FileStream ryton Общие вопросы Delphi 9 26.05.2008 13:53