Большой Воронежский Форум
» Программирование>Вопрос по TTreeView
ColdPay 15:40 06.12.2009
Делфийцы, подскажи пожалуйста!!!
Как можно загрузить в дерево из файла строки в Data?
Проблема в следующем:
при работе в проекте в Data определенной ветки, хотя даже "листа", сохраняю строковую переменную, может даже не в одну.... Сохраняю все в файлы: отдельно само дерево и отдельно Data веток.
И вот не знаю как загрузить обратно строки в Data
Код сохранения вот:

Сообщение от :
{- - - Сохранение текущего проекта - - -}
f:=TFileStream.Create(ExtractFilePath(Application. ExeName)+'\System\save.rop',fmCreate or fmShareCompat);
try
f.WriteComponent(tvSpisokTem);
finally
f.Free;
end;

{- - - сохранение данных, хранящихся в DATA, в отдельный файл - - -}
AssignFile(FData,ExtractFilePath(Application.ExeNa me)+'\System\SaveData.rop');
Rewrite(FData);
try
NodeData:=tvSpisokTem.Items.Item[0];
while NodeData<>nil do
begin
if NodeData.Data<>nil then
writeln(FData,TMyStoreClass(NodeData.Data).my_stri ng+'...'+IntToStr(NodeData.AbsoluteIndex))
else
writeln(FData,'');
NodeData:=NodeData.GetNext;
end;
finally
CloseFile(FData);
end;

Заранее благодарю!!!!
Yandex 16:02 06.12.2009
ColdPay, какой то поток сознания - фиг что понял.
За изобретение велосипеда по сохранению данных TTreeView возьми с полки пирожок.
ColdPay 17:28 06.12.2009
это файл

Сообщение от :
var
f: TFileStream;

а насчет изобретения, не нашел другого способа сохранить
ColdPay 14:34 09.12.2009
Всем спасибо за помощь!
Решил сделать следущим образом: записываю отдельно в ini-файл в разделы: имя и структуру дерева в один, все data в другой и (пока думаю) ImageIndex в третий. Вот код, который это все делает:

Код:
procedure TfmObolochka.TreeSaveIni(Tree: TTreeView; INI: TIniFile);
var
  n: Integer;
  MS: TMemoryStream;
  tTv: TStringList;
  Node: TTreeNode;
begin
  tTv:=TStringList.Create;
  MS:=TMemoryStream.Create;
  try
    Tree.SaveToStream(MS);
    MS.Position:=0;
    tTv.LoadFromStream(MS);
    INI.EraseSection('Структура');
    for n := 0 to tTv.Count - 1 do
      INI.WriteString('Struktura','Node'+IntToStr(n),StringReplace(tTv[n],#9,'#',[rfReplaceAll]));
    INI.EraseSection('DATA');
    Node:=Tree.Items.GetFirstNode;
    while Node<>nil do
      begin
        if Node.Data<>nil then
          begin
            INI.WriteString('DATA',Node.Text,TMyStoreClass(Node.Data).my_string);
          end;
        Node:=Node.GetNext;
      end;
  finally
    tTv.Free;
    MS.Free;
    Node.Free;
  end;
end;
Осталось самое интересное, считать из этого файла все что туда записал.....
Yandex 14:55 09.12.2009
ColdPay, ^&$^%! Напиши по человечески что тебе надо.
Вот это больше похоже на бред сумашедшего.

Сообщение от :
Как можно загрузить в дерево из файла строки в Data?
Проблема в следующем:
при работе в проекте в Data определенной ветки, хотя даже "листа", сохраняю строковую переменную, может даже не в одну.... Сохраняю все в файлы: отдельно само дерево и отдельно Data веток.
И вот не знаю как загрузить обратно строки в Data

Не надо писать, я делал вот так и вот так и не получилось. А надо написать, что именно надо, напр.

Сообщение от :
Есть TTreeView (дерево). Необходимо уметь сохранять и загружать структуру и данные из двух разных файлов.

Вверх