запись и чтение из файла объектов в память программы pascal

Заранее спасибо ответ!) нужно сделать задание по критериям, типо "база данных" клиентов, а именно - контейнер с объектами "клиент", у которых содержится контейнер с объектами "различные действия". объекты "клиент" связаны простой структурой массив. А объекты "различные действия" связаны двусвязным, двунаправленным списком. Объект "клиент" содержит данные типа string(просто имя). Объект "различные действия" содержит данные типа integer и DataTime. Функционал: ввод/вывод через консоль и самое главное - через текстовый файл... Запись в текстовый файл понятно как сделать. А вот как сделать чтение из файла и сохранения в памяти программы??? как сделать, чтоб при считывании из текст. файла - переменные разделялись на string,int и - DateTime? И самое главное, как сделать разделения на объекты?... какие "инструменты "(функции, процедуры) для этого использовать? и вопрос по кольцевой очереди, правильно ли реализованы - добавление/удаление? вывод не работает, если удалить один из объектов из массива...

unit TISBIBANK;   //контейнер класса клиентов
{$mode objfpc}{$H+}

interface
uses
  Classes, SysUtils,Clients; //подключение класса клиентов

Type TBank=class
const Arr_Size = 50;
private
Clients:array [1..Arr_Size] of TClient;   //объ.дин. массива ссылок на клиентов
Last:integer;
First:integer;
CountClient:integer;      //счетчик клиентов
NameBank:string;          //название банка

public
constructor Create(a_NameBank:string); //создание контейнера "банк"
function AddClient (a_NameClient:string;a_DateOperation:string;a_AmountOperation:integer):boolean;             //добавление клиента
function DeleteClient :boolean;      //удаление клиента
function SearchClient(a_nameClient:string):TClient;       //поиск клиента по его имени/фамилии
function OutputFullInfo:string;                           //вывод всей информации по клиентам
function OutputInTXT(nameTXT:string):boolean;                                    //запись в txt
function InputInTXT(nameTXT:string):boolean;                                     //запись из txt
end;


implementation
constructor TBank.Create (a_NameBank:string);
 begin
   if a_NameBank <> '' then
    begin
 NameBank:=a_NameBank;                      //имя банка
 Last:=0;
 First:=0;
 CountClient:=0;
    end;end;
//----------------------------------------------------------------------

function TBank.AddClient(a_NameClient:string;a_DateOperation:string;a_AmountOperation:integer):boolean;
 begin
   if (CountClient=Arr_Size) then
 writeln ('Is Filled!')
 else
   Clients[Last]:=TClient.Create(a_NameClient,a_DateOperation,a_AmountOperation);    //добавление в конец колц.очереди

Last:=Last+1;                                  //ув.счетчика
 CountClient:=CountClient+1;                   //ув.счетчика клиентов
  if (Last>50) then
   Last:=0;
   end;
//----------------------------------------------------------------------

function TBank.DeleteClient :boolean;
begin
 if (CountClient=0) then
  writeln ('Is Empaty!')
   else
  Clients[First]:=NIL;
First:=First+1;                                  //ув.счетчика
 CountClient:=CountClient-1;
  if (First>50) then
    First:=0;
end;

//----------------------------------------------------------------------

function TBank.SearchClient(a_nameClient:string):TClient;
var i:integer;
begin                                       //цикл по массиву клиентов
   for i:= 0 to (CountClient-1) do
begin
 if (Clients[i].GetNameClient = a_nameClient) then //проверка на совпадении фамилии
  result:=Clients[i]                              //возвращаем ссылку на студента
  else
    result:=nil;                                 //не нашли
  end;end;
//----------------------------------------------------------------------

function TBank.OutputFullInfo:string;
var i:integer;
begin

 result:='';
  /// for i:= Last downto  First do             //цикл по массиву клиентов
  for i:= First to (CountClient-1) do
begin
 result:=result+Clients[i].GetNameClient+#10#13+Clients[i].FullInfoOperationsWithDeposits+#10#13;
  end;end;                          //возврат фамилии + всей информации по вкладам
//----------------------------------------------------------------------

function TBank.OutputInTXT(nameTXT:string):boolean;
var info:string;
 i:integer;
  txt:file of TClient ;
 begin
  if (CountClient=0) then result:=false
  else
begin
   info:=OutputFullInfo;         //запись в переменную info всей информации по клиентам
   assign(txt,nameTXT);
   rewrite (txt);
   For i:=0 to CountClient-1 do
   write(txt,Clients[i]);                  //запись этой информации в текст
   close(txt);
   result:=true;
   end;end;

function TBank.InputInTXT(nameTXT:string):boolean;
var info:string;
 txt:file of TClient ;
 i,g,code:integer;
 var d:TClient;
 begin
   assign(txt,nameTXT);
   if not fileexists(nameTXT) then
result:=false
else
  begin
reset(txt);
 For i:=0 to high(Clients) do begin
 read(txt,Clients[i]);
 d:=Clients[i];

 Clients[Last]:=d;    //добавление в конец колц.очереди

    Last:=Last+1;                                  //ув.счетчика
 CountClient:=CountClient+1;
       end;

 Close(txt);
 end;result:=true; end;   

Ответы (0 шт):