Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Взаимодействие Delphi и MySQL Server, Взаимодействие Delphi и MySQL Server 
:(
    Опции темы
fidres
Дата 19.11.2006, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Код
procedure TCustomTreeView.LoadFromFile(const FileName: string);
var Stream: TStream;
begin
  Stream := TFileStream.Create(FileName, fmOpenRead);
  try
    LoadFromStream(Stream);
  finally
    Stream.Free;
  end;
end;

procedure TCustomTreeView.LoadFromStream(Stream: TStream);
begin
  with TTreeStrings.Create(Items) do
    try
      LoadTreeFromStream(Stream);
    finally
      Free;
  end;
end;
если попробовать загружать в стёк содержимое файла, а потом добавить туда начинку следующего файла (забить на Stream.Free;)?.. получится?
а потом из стёка выгружать уже на форму...
 smile 

м-да... не выходит. :о/
а Insert  я всё же нашёл! =)
правда через него тож в нод из файла фиг чё вставишь...
 smile 

Это сообщение отредактировал(а) fidres - 19.11.2006, 11:08
--------------------
Исправьте ошибку в слове <ХЕРОШО> и я скажу Вам оптимист Вы или пессимист.
PM ICQ   Вверх
fidres
Дата 19.11.2006, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Код
function TTreeNodes.AddObject(Sibling: TTreeNode; const S: string; Ptr: Pointer): TTreeNode;
begin
  Result := AddNode(nil, Sibling, S, Ptr, naAdd);
end;
што есь в данной функции будет Поинтер? хде ево взять?
простите за тупой вопрос.
 smile 
--------------------
Исправьте ошибку в слове <ХЕРОШО> и я скажу Вам оптимист Вы или пессимист.
PM ICQ   Вверх
Vas
Дата 19.11.2006, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Pointer это указатель smile
А вот примерная процедура, читает из типизированного файла структуры записей и названия этих записей выгружает в ветку, причем не важно были там уже ветки или нет грузится в первую ветвь добавлением.
Код

var FistNode, CurrentNode:TTreeNode;
      FileRec:file of TRep; ARec:TRep; //TRep - тип record
begin
  i:=0; 
  FirstNode:=TreeView1.Items.GetFirstNode; //или сам определи ветку в которую будешь вставлять у меня берется первая ветвь и в нее все грузится
  if FileExists('c:\file.dat') then
    begin
      AssignFile(FileRec, 'c:\file.dat');
      Reset(FileRec);
      While not Eof(FileRec) do
        begin
            Read(FileRec, ARec);
            CurrentNode:=TreeView1.Items.AddChild(FirstNode, ARec.Caption);
            CurrentNode.ImageIndex:=5;
            CurrentNode.SelectedIndex:=6;
            inc(i);
            Seek(FileRec, i);
        end;
      CloseFile(FileRec);
    end;
End;



--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
Vas
Дата 19.11.2006, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Надеюсь как читать из текстового файла сам догадаешься? 


--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
fidres
Дата 20.11.2006, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



:о)
чувствую, надоел я тебе. ;)
ну ты уж не обессуть.
я тут вот чего подумал...
там же как бы структура дерева в файло лежит... с нодами и ветвями...
AddChild будет строить именно такую структуру, как в файло или просто накидает веток в первый попавшийся нод?
 smile 
а с файло прочитать - проще некуда... ;)
для чего мне книжки, спрашивается.
 smile 

Это сообщение отредактировал(а) fidres - 20.11.2006, 12:31
--------------------
Исправьте ошибку в слове <ХЕРОШО> и я скажу Вам оптимист Вы или пессимист.
PM ICQ   Вверх
Vas
Дата 20.11.2006, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Зачем ветки хранишь во многих файлах, храни в одном.

Цитата(fidres @  20.11.2006,  12:29 Найти цитируемый пост)
AddChild будет строить именно такую структуру, как в файло или просто накидает веток в первый попавшийся нод?

Просто накидает веток  smile  Парсить уже самому. Исходники класса TCustomTreeView посмотри, вот к примеру:
Код

procedure TTreeStrings.LoadTreeFromStream(Stream: TStream);
var
  List: TStringList;
  ANode, NextNode: TTreeNode;
  ALevel, i: Integer;
  CurrStr: string;
begin
  List := TStringList.Create;
  Owner.BeginUpdate;
  try
    try
      Clear;
      List.LoadFromStream(Stream);
      ANode := nil;
      for i := 0 to List.Count - 1 do
      begin
        CurrStr := GetBufStart(PChar(List[i]), ALevel);
        if ANode = nil then
          ANode := Owner.AddChild(nil, CurrStr)
        else if ANode.Level = ALevel then
          ANode := Owner.AddChild(ANode.Parent, CurrStr)
        else if ANode.Level = (ALevel - 1) then
          ANode := Owner.AddChild(ANode, CurrStr)
        else if ANode.Level > ALevel then
        begin
          NextNode := ANode.Parent;
          while NextNode.Level > ALevel do
            NextNode := NextNode.Parent;
          ANode := Owner.AddChild(NextNode.Parent, CurrStr);
        end
        else TreeViewErrorFmt(sInvalidLevelEx, [ALevel, CurrStr]);
      end;
    finally
      Owner.EndUpdate;
      List.Free;
    end;
  except
    Owner.Owner.Invalidate;  // force repaint on exception
    raise;
  end;
end;

Напиши такой же только выкинь Clear ну и передай указатель на твой TreeView. Замени Stream на File и так далее, вроде сложного ничего. 


--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
fidres
Дата 20.11.2006, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Vas @  20.11.2006,  14:28 Найти цитируемый пост)
Напиши такой же только выкинь Clear ну и передай указатель на твой TreeView. Замени Stream на File и так далее, вроде сложного ничего.  
ну вот это уже ближе к телу. ;)
блин. ну и жизнь пошла!.. :о)
пол-рояля разобрали, а того чего надо - так и не нашли! :о/
ладно. буду ломать голову дальше.
 smile 
да пребудет с нами Сила и Святой Коннектий!
;)
--------------------
Исправьте ошибку в слове <ХЕРОШО> и я скажу Вам оптимист Вы или пессимист.
PM ICQ   Вверх
fidres
Дата 29.11.2006, 01:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Vas, блин! ну ты прикинь!
так и не могу с этой фигнёй раскидаца... :о/
начал прикидывать чё - куда и чё откуда...
решил писать сам.
смысл в том, что ни один из методов "автоматизации" не подходит.
в ручную стал закидывать структуру дерева в стёк, а уже оттуда пытаца считывать и добавлять в новое дерево...
ну это Бог с ним.
вопрос вот в чём:
Код
procedure TForm1.ApCheTree(Sender: TObject);// CheckState: TCheckBoxState);
var xNod,yNod: TTreeNode;
    fStr,jStr: TTreeStrings; - вот эти переменные (верней их тип) не определяеца... ундикларе тайп... :(
       zItems: TTreeNodes;
begin
  with TreeView1 do
    begin
      if(Items.Count>0)then
        begin........
TTreeStrings - это тип строк из ComCtrl...
Код
type
  TTreeStrings = class(TStrings)
  private
    FOwner: TTreeNodes;
  protected
    function Get(Index: Integer): string; override;
    function GetBufStart(Buffer: PChar; var Level: Integer): PChar;
    function GetCount: Integer; override;
    function GetObject(Index: Integer): TObject; override;
    procedure PutObject(Index: Integer; AObject: TObject); override;
    procedure SetUpdateState(Updating: Boolean); override;
  public
    constructor Create(AOwner: TTreeNodes);
    function Add(const S: string): Integer; override;
    procedure Clear; override;
    procedure Delete(Index: Integer); override;
    procedure Insert(Index: Integer; const S: string); override;
    procedure LoadTreeFromStream(Stream: TStream);
    procedure SaveTreeToStream(Stream: TStream);
    property Owner: TTreeNodes read FOwner;
  end;
почему он не может быть применён (верней распознан) у меня?
в юзез ComCtrl - есть.
чего ему ещё надо???
--------------------
Исправьте ошибку в слове <ХЕРОШО> и я скажу Вам оптимист Вы или пессимист.
PM ICQ   Вверх
Vas
Дата 29.11.2006, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Скорее всего скомпилированный модуль в дельфе не содержит этого типа, скопируй нужный класс в свой проект и используй. У меня кстати тоже при объявлении переменной типа TTreeStrings ошибка такая же вылетает.

Это сообщение отредактировал(а) Vas - 29.11.2006, 13:17


--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
fidres
Дата 30.11.2006, 05:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Vas, может тогда попытаться скомпилять исходник файло с данным классом?
обычно это делается добавлением в проект нужного модуля и компиляцией проекта.
потом скомпилированные бинарники добавляем в диру с либами или ещё куда и...
вуа-ля! ;)
--------------------
Исправьте ошибку в слове <ХЕРОШО> и я скажу Вам оптимист Вы или пессимист.
PM ICQ   Вверх
Vas
Дата 30.11.2006, 07:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Неа, это придется тебе дельфевский пакет в котором содержится данный модуль пересобрать и его уже перекомпилировать. Проще этот классв свой модуль вынести.


--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
fidres
Дата 1.12.2006, 05:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Vas, кстати. нашёл пару статей в Королевстве по своей тематике...
вот одна из них: http://www.delphikingdom.com/asp/viewitem.asp?catalogid=771
есть ещё одна "DBTreeView своими руками" Елены Филипповой...
в ней немного не то, но тоже неплохо описано... правда адресок не вспомню ща...
правда взаимодействие с БД посредством BDE... ;)
у меня ваще-то MySQL API работает для этих целей...
а вот точного описания моей задачи - нигде пока не нашёл...  smile 
пообещали тут ещё у бывалых поинтересоваца... но...
 smile 
в любом случае буду сюда о находках отписывать.
;)

Это сообщение отредактировал(а) fidres - 1.12.2006, 05:21
--------------------
Исправьте ошибку в слове <ХЕРОШО> и я скажу Вам оптимист Вы или пессимист.
PM ICQ   Вверх
Vas
Дата 1.12.2006, 07:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(fidres @  1.12.2006,  05:17 Найти цитируемый пост)
у меня ваще-то MySQL API работает для этих целей...

Так у тебя из БД грузится или из файла? Если из БД то бери статью с дельфикингдом за основу и вперед, разницы никакой что BDE что через WinAPI. 


--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
fidres
Дата 2.12.2006, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Vas, да нет. это не БД из файло...
то, что у меня с БД работает - это меня не интересует.
меня интересует вопрос КАК из файло в тривьев ДОБАВИТЬ ГОТОВЫЕ деревья...
 smile 

З.Ы. и кстати не WinAPI, а MySQL API... это разные вещи.

Это сообщение отредактировал(а) fidres - 2.12.2006, 09:12
--------------------
Исправьте ошибку в слове <ХЕРОШО> и я скажу Вам оптимист Вы или пессимист.
PM ICQ   Вверх
SergeBS
Дата 4.12.2006, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



fidres
Vas,
Цитата
почему он не может быть применён (верней распознан) у меня? 
 
Потому что если объявлен класс, то либо надо заводить экземпляр класса, либо классом (своим) объявлять наследника этого класса. Т.е. есть класс TStrings - объявляй
MyString : TStrings; 
и будет тебе счастье smile.
Цитата
это придется тебе дельфевский пакет в котором содержится данный модуль пересобрать и его уже перекомпилировать. Проще этот классв свой модуль вынести. 

smile. Не столько поиграться, сколько разломать. Может проще разобраться?
PM MAIL   Вверх
Страницы: (4) Все 1 2 [3] 4 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

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

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


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


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

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

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


 




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


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

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