Чтение массива из файла

Начал изучать Delphi вот столкнулся с такой проблемой: Нужно написать программу о бинарном поиске, исходник я нашел но проблема состоит в том что массив должен выводится из файла.
unit b_found_;
 
interface
 
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Grids;
 
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Button1: TButton;
    Label3: TLabel;
    CheckBox1: TCheckBox;
    StringGrid1: TStringGrid;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
 
    procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.DFM}
 
{ Бинарный поиск в массиве }
procedure TForm1.Button1Click(Sender: TObject);
const
   SIZE=10;
var
   a:array[1..SIZE] of integer; { массив }
   obr:integer;                 { образец для поиска}
 
   verh:integer; { верхняя граница поиска }
   niz: integer; { нижняя граница поиска }
   sred:integer; { номер среднего элемента }
 
   found:boolean;{ TRUE - совпадение образца с элементом массива }
   n:integer;    {  число сравнений с образцом }
 
   i:integer;
 
begin
   // ввод массива и образца
   for i:=1 to SIZE do
       a[i]:=StrToInt(StringGrid1.Cells[i-1,0]);
   obr := StrToInt(Edit1.text);
 
   // поиск
   verh:=1;
   niz:=SIZE;
   n:=0;
   found:=FALSE;
   label3.caption:='';
 
 
   if CheckBox1.State = cbChecked
      then Label3.caption:='verh'+#9+'niz'#9'sred'#13;
 
   // бинарный поиск в массиве
   repeat
     sred:=Trunc((niz-verh)/2)+verh;
     if CheckBox1.Checked
       then Label3.caption:=label3.caption
                 +IntToStr(verh) + #9
                 +IntToStr(niz) + #9
                 +IntToStr(sred) + #13;
     n:=n+1;
     if a[sred] = obr
        then found:=TRUE
        else
           if obr < a[sred]
              then niz:=sred-1
          else verh:=sred+1;
   until (verh > niz) or found;
 
   if found
       then label3.caption:=label3.caption
                          +'Совпадение с элементом номер '
                          + IntToStr(sred)+#13
                          + 'Cравнений ' + IntToStr(n)
       else label3.caption:=label3.caption
                          +'Образец в массиве не найден.';
end;
 
 
// нажатие клавиши в ячейке StringGrid
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
    if Key = #13 then  // нажата клавиша <Enter>
        if StringGrid1.Col < StringGrid1.ColCount - 1
            then // курсор в следующую ячейку таблицы
                 StringGrid1.Col := StringGrid1.Col +1
            else // курсор в поле Edit1, в поле ввода образца
                 Edit1.SetFocus; 
 
end;
 
// нажатие клавиши в поле Edit1
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
   if Key = #13 // нажата <Enter>
      then  // сделать активной командную кнопку
            Button1.SetFocus;
end;
 
end.
Как заставить массив выводится из файла? Я думаю возможно нужно использовать процедуру AssignFile, вот только куда ее "припаять"? Возможно вместо этого:
begin
   // ввод массива и образца
   for i:=1 to SIZE do
       a[i]:=StrToInt(StringGrid1.Cells[i-1,0]);
   obr := StrToInt(Edit1.text);
Но тогда наверное элемент StringGrid придется менять на Memo, Прошу помочь советом, алгоритмом вобщем чем сможете Ниже прикрепил архив с проектом
1 ответ

Ну вот я сделал поле Memo и могу открыть файл с массивом, но как заставить процедуру поиска искать именно в поле Memo? Люди помогите пожалуйста!!!!!!!!!
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    CheckBox1: TCheckBox;
    Label1: TLabel;
    Label2: TLabel;
    Button1: TButton;
    Edit1: TEdit;
    OpenDialog1: TOpenDialog;
    Button2: TButton;
    Label3: TLabel;
    Memo1: TMemo;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button2Click(Sender: TObject);
begin
 if OpenDialog1.Execute then
      Memo1.Lines.LoadFromFile('Массив.txt');
       end;
 
procedure TForm1.Button1Click(Sender: TObject);
 const
   SIZE=10;
var
   a:array[1..SIZE] of integer; { массив }
   obr:integer;                 { образец для поиска}
 
   verh:integer; { верхняя граница поиска }
   niz: integer; { нижняя граница поиска }
   sred:integer; { номер среднего элемента }
 
   found:boolean;{ TRUE - совпадение образца с элементом массива }
   n:integer;    {  число сравнений с образцом }
 
   i:integer;
 
begin
 
 
   // поиск
   verh:=1;
   niz:=SIZE;
   n:=0;
   found:=FALSE;
   label3.caption:='';
 
 
   if CheckBox1.State = cbChecked
      then Label3.caption:='verh'+#9+'niz'#9'sred'#13;
 
   // бинарный поиск в массиве
   repeat
     sred:=Trunc((niz-verh)/2)+verh;
     if CheckBox1.Checked
       then Label3.caption:=label3.caption
                 +IntToStr(verh) + #9
                 +IntToStr(niz) + #9
                 +IntToStr(sred) + #13;
     n:=n+1;
     if a[sred] = obr
        then found:=TRUE
        else
           if obr < a[sred]
              then niz:=sred-1
          else verh:=sred+1;
   until (verh > niz) or found;
 
   if found
       then label3.caption:=label3.caption
                          +'Совпадение с элементом номер '
                          + IntToStr(sred)+#13
                          + 'Cравнений ' + IntToStr(n)
       else label3.caption:=label3.caption
                          +'Образец в массиве не найден.';
end;
 
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
   if Key = #13 // нажата <Enter>
      then  // сделать активной командную кнопку
            Button1.SetFocus;
end;
 
end.