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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2011, 18:22   #1
asmboom
Новичок
Джуниор
 
Регистрация: 09.05.2011
Сообщений: 4
По умолчанию Проблемы с типиз. файлами

Друзья, помогите! Не могу разабраться почему не работает сохранение/загрузка файла


Код:
unit TrCl;

interface
 type
  PBranch = ^ Branch;      //указатель на ветвь
  Way  = record
    probability: real;               //вероятность перехода
    course : PBranch;      // куда
  end;
  Branch  = record         // вершина
    NameBr : string;       //
    MathSt:  real;         // мат. ожидание
    Disp:  real;           // дисперсия
    Next, Prev : array of Way; //следующий и предыдущий эл.;
  end;
  Tree  = class
    NameTr: string;
    Source: Way; //исток с указание следующего эл. и вероятности = 1
(*
  создание и уничтожение дерева из файла
 *)
    constructor CreatTree;
    destructor FreeTree;

    //процедуры работы класса

    procedure print;  // принт грохнуть
    procedure SaveToFile (var NameFile : String);
    procedure LoadFile (var NameFile : String);
  end;

implementation

   constructor Tree.CreatTree;
   var
    Temp :  PBranch;
    realbr: Branch;
  //  s: string;
   begin
    writeln('hello kitty =)');
   // readln (Self.NameTr);
   // self.Source.probability:=1;
    //new(self.Source.course);
    //temp:=self.Source.course;
    //realbr:=temp^;
    //readln(realbr.NameBr);
  //  readln(realbr.MathSt);
   // readln(realbr.Disp);
   // temp^:=realbr;
  {  while s<>'0' do
    begin
    ///
    end;
    *}

   end;

   destructor Tree.FreeTree;
   begin
     inherited;
   end;

   procedure Tree.print;
   var
    temp: PBranch;
   begin
    writeln(self.NameTr);
    writeln(self.Source.probability);
    temp:=self.Source.course;
    writeln(temp^.NameBr);
    writeln(temp^.MathSt);
    writeln(temp^.disp);
   end;

   procedure Tree.SaveToFile (var NameFile : String);
   var
     FileVar: file of Tree;
   begin
     AssignFile(FileVar, NameFile);
     rewrite (FileVar);
     Write(FileVar, Self);
     CloseFile (FileVar);
   end;

   procedure Tree.LoadFile (var NameFile : String);
   var
     FileVar: file of Tree;
    // tr: tree;
   begin
     AssignFile(FileVar, NameFile);
     {$I-}
     Reset(FileVar);
     {$I+}
     if IOResult = 0 then
     begin
        Read(FileVar, self);
        CloseFile(FileVar);
        //self:=tr;
     end;
  
   end;
end.


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 09.05.2011 в 19:28.
asmboom вне форума Ответить с цитированием
Старый 09.05.2011, 18:24   #2
asmboom
Новичок
Джуниор
 
Регистрация: 09.05.2011
Сообщений: 4
По умолчанию

прошу прощения за мой английский
asmboom вне форума Ответить с цитированием
Старый 09.05.2011, 19:33   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) все поля String в типе RECORD должны иметь строгий размер (в квадратных скобках указывайте длину, или заведите новый тип type MyStr100 = string[100]; )

2) что это за динамические массивы в записях?!!
Код:
Next, Prev : array of Way;
попробуйте так:
Код:
type
  PBranch = ^Branch;      //указатель на ветвь
  Way  = record
    probability: real;        //вероятность перехода
    course : PBranch;      // куда
  end;
  Branch  = record         // вершина
    NameBr : string[80];       //
    MathSt:  real;         // мат. ожидание
    Disp:  real;           // дисперсия
    Next, Prev : PBranch; //следующий и предыдущий эл.;
  end;
p.s. остальной Ваш код не смотрел...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.05.2011, 19:53   #4
asmboom
Новичок
Джуниор
 
Регистрация: 09.05.2011
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
1) все поля String в типе RECORD должны иметь строгий размер (в квадратных скобках указывайте длину, или заведите новый тип type MyStr100 = string[100]; )

2) что это за динамические массивы в записях?!!
Код:
Next, Prev : array of Way;
попробуйте так:
Код:
type
  PBranch = ^Branch;      //указатель на ветвь
  Way  = record
    probability: real;        //вероятность перехода
    course : PBranch;      // куда
  end;
  Branch  = record         // вершина
    NameBr : string[80];       //
    MathSt:  real;         // мат. ожидание
    Disp:  real;           // дисперсия
    Next, Prev : PBranch; //следующий и предыдущий эл.;
  end;
p.s. остальной Ваш код не смотрел...
мне надо много указателей, не в этом дело=)
почему-то не загружается файл (последняя процедура)
asmboom вне форума Ответить с цитированием
Старый 09.05.2011, 20:09   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

угу. ну всё правильно. и не должно грузиться.
Объект любого класса - это указатель.

поэтому в процедуре SaveToFile вы записываете 4 байта (указатель на класс Tree) (вы сохранённый файл смотрели?! Ну Размер его, хотя бы?!)

разумеется, он потом не загрузится!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.05.2011, 22:01   #6
asmboom
Новичок
Джуниор
 
Регистрация: 09.05.2011
Сообщений: 4
Радость

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
угу. ну всё правильно. и не должно грузиться.
Объект любого класса - это указатель.

поэтому в процедуре SaveToFile вы записываете 4 байта (указатель на класс Tree) (вы сохранённый файл смотрели?! Ну Размер его, хотя бы?!)

разумеется, он потом не загрузится!
Спасибо. Он как раз 4 и весит
asmboom вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы с файлами. Паскаль maxflint Помощь студентам 3 22.03.2010 23:15
работа с файлами! vakyla Помощь студентам 10 10.11.2009 07:38
Проблемы с h-файлами (посоветуйте) Tan4ik Помощь студентам 1 20.05.2008 08:58
Типиз. файл на CD Viteef Общие вопросы Delphi 7 23.09.2007 08:08
Проблемы с Ini-файлами Азазель Общие вопросы Delphi 6 08.09.2007 19:24