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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2017, 19:27   #1
xnnrzn
 
Регистрация: 15.05.2017
Сообщений: 8
По умолчанию Не загружает данные из файла

В файл записываются коэффициенты при x, начальное и конечное значение интеграла - в едиты и решение в лабел. Файл сохраняется и я появляется на диске, но при открытии ничего не происходит. Подозреваю проблема кроется в типизированных и нетипизированных файлах. Как это можно исправить?
Код:
procedure TForm2.N6Click(Sender: TObject);//сохранение
var
  f:TextFile; //файловая переменная (текстовый файл)
begin
  //начальная директория
  SaveDialog1.InitialDir:=getcurrentdir;
  //фильтр типов файлов для диалога (текстовые файлы)
  SaveDialog1.Filter:='Текстовые файлы | *.txt';
  if SaveDialog1.Execute then
    begin
      AssignFile(f,SaveDialog1.FileName);
      Rewrite(f);
      //запись в файл значений из stringgrid
      writeln(f, 'Файл результатов решения задачи');
      writeln(f,'');
      writeln(f, 'Исходные данные');
      writeln(f,'a3 = '+edit3.Text);
      writeln(f,'a2 = '+edit2.Text);
      writeln(f,'a1 = '+edit1.Text);
      writeln(f,'a0 = '+edit4.Text);
      writeln(f,'b3 = '+edit9.Text);
      writeln(f,'b2 = '+edit8.Text);
      writeln(f,'b1 = '+edit14.Text);
      writeln(f,'x1 = '+edit10.Text);
      writeln(f,'x2 = '+edit11.Text);
      writeln(f,'N = '+edit12.Text);
      writeln(f, 'Результаты вычислений');
      writeln(f, 'Значение интеграла = '+ label14.Caption);
      closefile(f);
      MessageDLG('Данные вычислений записаны в текстовый файл',mtInformation,[mbOK],0);
      end;
end;
procedure TForm2.N7Click(Sender: TObject);//загрузка
var
  g:file of SohrZagr;
begin
  //начальная директория
  OpenDialog1.InitialDir:=getcurrentdir;
  //фильтр типов файлов
  OpenDialog1.Filter:='Файлы исходных данных |*.dan';
  //вызов диал.окна
  if OpenDialog1.Execute then
  begin
    //создание файла
    AssignFile(g,OpenDialog1.FileName);
    Reset(g);
    //чтение из файла
    read(g);
    //закрытие файла
    CloseFile(g);
    //вывод исходных данных в соответствующие поля
    edit4.Text:=floattostr(a0);
    edit1.Text:=floattostr(a1);
    edit2.Text:=floattostr(a2);
    edit3.Text:=floattostr(a3);
    edit5.Text:=floattostr(b1);
    edit6.Text:=floattostr(b2);
    edit14.Text:=floattostr(b3);
    edit8.Text:=floattostr(int1);
    edit9.Text:=floattostr(int2);
    edit10.Text:=floattostr(N);
    //сообщение о загрузки данных из файла
    MessageDlg('Данные из файла загружены',mtInformation,[mbOK],0);
  end;
end;
xnnrzn вне форума Ответить с цитированием
Старый 22.05.2017, 19:40   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от xnnrzn Посмотреть сообщение
Подозреваю проблема кроется в типизированных и нетипизированных файлах.
т.е. Вас немного смущает, что сохраняете Вы в текстовый файл:

Цитата:
Сообщение от xnnrzn Посмотреть сообщение
Код:
var
  f:TextFile; //файловая переменная (текстовый файл)
...
 writeln(f,'a3 = '+edit3.Text);
и читать пытаетесь из типизированного:

Цитата:
Сообщение от xnnrzn Посмотреть сообщение
Код:
var
  g:file of SohrZagr;
?!



Цитата:
Сообщение от xnnrzn Посмотреть сообщение
Как это можно исправить?
либо (проще всего) писать в типизированный файл и читать из него же,
либо (намного сложнее) - парсить текстовый файл, искать там в строках нужные переменные и считывать их.

кстати, покажите описание типа SohrZagr
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.05.2017, 20:12   #3
xnnrzn
 
Регистрация: 15.05.2017
Сообщений: 8
По умолчанию

Переделал по примеру. Данные загружаются но совершенно не те. Левые какие-то.
NewDann=record или SohrZagr=record.
Код:
procedure TForm2.N7Click(Sender: TObject);//загрузка
var
  g:file of NewDann;
  ND:NewDann;
begin
  //начальная директория
  OpenDialog1.InitialDir:=getcurrentdir;
  //фильтр типов файлов
  OpenDialog1.Filter:='Файлы исходных данных |*.dan';
  //вызов диал.окна
  if OpenDialog1.Execute then
  begin
    //создание файла
    AssignFile(g,OpenDialog1.FileName);
    Reset(g);
    //чтение из файла
    read(g,ND);
    //закрытие файла
    CloseFile(g);
    //вывод исходных данных в соответствующие поля
    edit4.Text:=floattostr(ND.a0);
    edit1.Text:=floattostr(ND.a1);
    edit2.Text:=floattostr(ND.a2);
    edit3.Text:=floattostr(ND.a3);
    edit14.Text:=floattostr(ND.b1);
    edit8.Text:=floattostr(ND.b2);
    edit9.Text:=floattostr(ND.b3);
    edit10.Text:=floattostr(ND.int1);
    edit11.Text:=floattostr(ND.int2);
    //edit12.Text:=floattostr(ND.N);
    //сообщение о загрузки данных из файла
    MessageDlg('Данные из файла загружены',mtInformation,[mbOK],0);
  end;
  end;
Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
т.е. Вас немного смущает, что сохраняете Вы в текстовый файл:



и читать пытаетесь из типизированного:

?!




либо (проще всего) писать в типизированный файл и читать из него же,
либо (намного сложнее) - парсить текстовый файл, искать там в строках нужные переменные и считывать их.

кстати, покажите описание типа SohrZagr
xnnrzn вне форума Ответить с цитированием
Старый 23.05.2017, 00:03   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от xnnrzn Посмотреть сообщение
NewDann=record или SohrZagr=record.
неверно. должен быть один и тот же тип - что записали в файл, то и прочитали.

А где описание типов?
И где процедура сохранения в файл?

я не могу понять, кому нужно, что программа работала - мне или Вам?
что я из Вас код клещами вытягиваю?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.05.2017, 10:21   #5
xnnrzn
 
Регистрация: 15.05.2017
Сообщений: 8
По умолчанию

Клещами не надо я доброволец)
Код:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, jpeg, ExtCtrls, StdCtrls;

type
   NewDann=record
    a3,a2,a1,a0,b3,b2,b1,b0,int1,int2:real;
    kol:integer;
   end;
   TIntFunc = function(X: Double): Double;
  TForm2 = class(TForm)
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N5: TMenuItem;
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Image1: TImage;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit8: TEdit;
    Edit10: TEdit;
    Label3: TLabel;
    Label5: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label6: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Edit9: TEdit;
    Label17: TLabel;
    Label18: TLabel;
    Panel1: TPanel;
    Edit11: TEdit;
    N6: TMenuItem;
    SaveDialog1: TSaveDialog;
    Memo1: TMemo;
    Label19: TLabel;
    N7: TMenuItem;
    OpenDialog1: TOpenDialog;
    Label4: TLabel;
    Edit14: TEdit;
    Edit7: TEdit;
    Edit12: TEdit;
    procedure N2Click(Sender: TObject);
    procedure N6Click(Sender: TObject);
    procedure N7Click(Sender: TObject);
    procedure N5Click(Sender: TObject);
    procedure N3Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form2: TForm2;
  buttonexit:integer;
  i,a1,a2,a3,a0,b1,b2,b3,b0,x,int1,int2,INT:real;
  eps:integer;
  N:integer;

implementation

uses Unit4;

{$R *.dfm}
function f(a3,a2,a1,a0,b3,b2,b1,b0,x:real):real;
  begin
    if abs(b3*x*x*x*x*x*x*x*x+b2*x*x*x*x*x*x*x+b3*x*x*x*x*x*x+b2*x*x*x*x+b1*x+b0)<0.000001 then f:=0 else
      f:=(a3*x*x*x*x*x+a2*x*x*x+a1*x*x+a0)/(b3*x*x*x*x*x*x*x*x+b2*x*x*x*x*x*x*x+b3*x*x*x*x*x*x+b2*x*x*x*x+b1*x+b0);
  end;
//процедура вычисления интеграла
  //Form2.Memo1.add('Площади фигур:');
  procedure MyCalc (a3,a2,a1,a0,b3,b2,b1,b0,int1,int2:real; N:integer; var INT:real);
     var
     h,x,s:real;
//h-длинна элем. отрезка;
//x-значение аргумента
//s-сумма площадей;
   begin
      Form2.Memo1.lines.add('Площади фигур:');
      h:=(int2-int1)/N;
      x:=int1;
      s:=0;
      while x < int2 do
      begin
        s:=s+f(a3,a2,a1,a0,b3,b2,b1,b0,x)+f(a3,a2,a1,a0,b3,b2,b1,b0,x+h);
        x:=x+h;
        Form2.Memo1.lines.add('f('+floattostr(x)+')='+floattostr(s));
      end;
      INT:=s*h/2;
      Form2.Memo1.lines.Add('Интеграл равен '+floattostr(INT));
end;
procedure TForm2.N2Click(Sender: TObject); //перевод + ошибка
begin
Form2.memo1.clear;
a1:=strtofloat(Edit3.Text);
a2:=strtofloat(Edit2.Text);
a3:=strtofloat(Edit1.Text);
a0:=strtofloat(Edit4.Text);
b1:=strtofloat(Edit9.Text);
b2:=strtofloat(Edit6.Text);
b3:=strtofloat(Edit5.Text);
b0:=strtofloat(Edit10.Text);
Form2.Edit14.Text:=floattostr(b3);
Form2.Edit8.Text:=floattostr(b2);
int1:=strtofloat(Edit12.Text);
int2:=strtofloat(Edit11.Text);
N:=strtoint(edit7.Text);
if Edit4.Text=''then
  messagedlg('Необходимо указать коэффициент a0',mterror,[mbok],0);
  if Edit3.Text=''then
  messagedlg('Необходимо указать коэффициент a1',mterror,[mbok],0);
  if Edit2.Text='' then
  messagedlg('Необходимо указать коэффициент a2',mterror,[mbok],0);
  if Edit1.Text=''then
  messagedlg('Необходимо указать коэффициент a3',mterror,[mbok],0);
  if Edit9.Text='' then
  messagedlg('Необходимо указать коэффициент b1',mterror,[mbok],0);
  if Edit6.Text='' then
  messagedlg('Необходимо указать коэффициент b2',mterror,[mbok],0);
  if edit12.Text=''then
  messagedlg('Необходимо указать нижний предел интегрирования int1',mterror,[mbok],0);
  if edit11.Text='' then
  messagedlg('Необходимо указать верхний предел интегрирования int2',mterror,[mbok],0);
  if N<=0 then
  begin
    MessageDlg('Значение колличества точек не должно быть меньше 0, или введенные данные некорректны', mtError, [mbOk],0);
    Edit7.Text:='1';
    N:=1;
  end;
  if int2<int1 then
  begin
    MessageDlg('int1 должно быть больше int2',mtError,[mbOK],0);
    int1:=-1;
    int2:=1;
    Edit11.Text:='1';
    Edit12.Text:='-1';
  end;
  if b1=0 then
  begin
    MessageDlg('Знаменатель не должен быть равен 0',mtError,[mbOK],0);
    b1:=0;
    Edit14.Text:='1';
  end;
  if b2=0 then
  begin
    MessageDlg('Знаменатель не должен быть равен 0',mtError,[mbOK],0);
    b2:=1;
    Edit8.Text:='1';
  end;
  if b3=0 then
  begin
    MessageDlg('Знаменатель не должен быть равен 0',mtError,[mbOK],0);
    b3:=1;
    Edit9.Text:='1';
  end;
  MyCalc(a3,a2,a1,a0,b3,b2,b1,b0,int1,int2,N,INT);
  Form2.label4.Caption:=Floattostr(INT);
end;
procedure TForm2.N3Click(Sender: TObject);
begin
Form4.Show;
end;
procedure TForm2.N5Click(Sender: TObject);//выход
begin
buttonexit := MessageDlg('Выйти без сохранения?',MtConfirmation, mbYesNo, 0);
  if buttonexit = mrYes then begin
  application.Terminate;
  end;
end;
procedure TForm2.N6Click(Sender: TObject);//сохранение
var
  f:TextFile; //файловая переменная (текстовый файл)
begin
  //начальная директория
  SaveDialog1.InitialDir:=getcurrentdir;
  //фильтр типов файлов для диалога (текстовые файлы)
  SaveDialog1.Filter:='Текстовые файлы | *.txt';
  if SaveDialog1.Execute then
    begin
      AssignFile(f,SaveDialog1.FileName);
      Rewrite(f);
      //запись в файл значений из stringgrid
      writeln(f, 'Файл результатов решения задачи');
      writeln(f,'');
      writeln(f, 'Исходные данные');
      writeln(f,'a3 = '+edit3.Text);
      writeln(f,'a2 = '+edit2.Text);
      writeln(f,'a1 = '+edit1.Text);
      writeln(f,'a0 = '+edit4.Text);
      writeln(f,'b3 = '+edit9.Text);
      writeln(f,'b2 = '+edit8.Text);
      writeln(f,'b1 = '+edit14.Text);
      writeln(f,'x1 = '+edit10.Text);
      writeln(f,'x2 = '+edit11.Text);
      writeln(f,'N = '+edit12.Text);
      writeln(f, 'Результаты вычислений');
      writeln(f, 'Значение интеграла = '+ label14.Caption);
      closefile(f);
      MessageDLG('Данные вычислений записаны в текстовый файл',mtInformation,[mbOK],0);
      end;
end;
procedure TForm2.N7Click(Sender: TObject);//загрузка
var
  g:file of NewDann;
  ND:NewDann;
begin
  //начальная директория
  OpenDialog1.InitialDir:=getcurrentdir;
  //фильтр типов файлов
  OpenDialog1.Filter:='Файлы исходных данных |*.dan';
  //вызов диал.окна
  if OpenDialog1.Execute then
  begin
    //создание файла
    AssignFile(g,OpenDialog1.FileName);
    Reset(g);
    //чтение из файла
    read(g,ND);
    //закрытие файла
    CloseFile(g);
    //вывод исходных данных в соответствующие поля
    edit4.Text:=floattostr(ND.a0);
    edit1.Text:=floattostr(ND.a1);
    edit2.Text:=floattostr(ND.a2);
    edit3.Text:=floattostr(ND.a3);
    edit14.Text:=floattostr(ND.b1);
    edit8.Text:=floattostr(ND.b2);
    edit9.Text:=floattostr(ND.b3);
    edit10.Text:=floattostr(ND.int1);
    edit11.Text:=floattostr(ND.int2);
    //edit12.Text:=floattostr(ND.N);
    //сообщение о загрузки данных из файла
    MessageDlg('Данные из файла загружены',mtInformation,[mbOK],0);
  end;
  end;
end.
xnnrzn вне форума Ответить с цитированием
Старый 23.05.2017, 11:17   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от xnnrzn Посмотреть сообщение
Клещами не надо я доброволец)
вот и сразу бы так.

пробуйте:

Код:

type
   NewDann=record
     a3,a2,a1,a0,b3,b2,b1,b0,int1,int2:real;
     N:integer;
   end;

implementation

{$R *.dfm}

const
   FileDataExtension = '.DAT';

procedure TForm2.Save1Click(Sender: TObject); // сохранение
var
  f:TextFile; //файловая переменная (текстовый файл)
  g:file of NewDann;
  ND:NewDann;
begin
  //начальная директория
  SaveDialog1.InitialDir:=getcurrentdir;
  //фильтр типов файлов для диалога (текстовые файлы)
  SaveDialog1.Filter:='Текстовые файлы | *.txt';
  if SaveDialog1.Execute then
    begin
      // сохраним данные в типизированный файл
      AssignFile(g, ChangeFileExt(SaveDialog1.FileName, FileDataExtension));
      Rewrite(g);
      ND.a0    := StrToFloat(edit4.Text);
      ND.a1    := StrToFloat(edit1.Text);
      ND.a2    := StrToFloat(edit2.Text);
      ND.a3    := StrToFloat(edit3.Text);
      ND.b1    := StrToFloat(edit14.Text);
      ND.b2    := StrToFloat(edit8.Text);
      ND.b3    := StrToFloat(edit9.Text);
      ND.int1  := StrToFloat(edit10.Text);
      ND.int2  := StrToFloat(edit11.Text);
      ND.N     := StrToInt(edit12.Text);
      Write(g, ND);
      CloseFile(g);
      // --- конец блока сохранения данных в типизированный файл

      AssignFile(f,SaveDialog1.FileName);
      Rewrite(f);
      //запись в файл значений из stringgrid
      writeln(f, 'Файл результатов решения задачи');
      writeln(f,'');
      writeln(f, 'Исходные данные');
      writeln(f,'a3 = '+edit3.Text);
      writeln(f,'a2 = '+edit2.Text);
      writeln(f,'a1 = '+edit1.Text);
      writeln(f,'a0 = '+edit4.Text);
      writeln(f,'b3 = '+edit9.Text);
      writeln(f,'b2 = '+edit8.Text);
      writeln(f,'b1 = '+edit14.Text);
      writeln(f,'x1 = '+edit10.Text);
      writeln(f,'x2 = '+edit11.Text);
      writeln(f,'N = '+edit12.Text);
      writeln(f, 'Результаты вычислений');
      writeln(f, 'Значение интеграла = '+ label14.Caption);
      closefile(f);
      MessageDLG('Данные вычислений записаны в текстовый файл',mtInformation,[mbOK],0);
      end;
end;

procedure TForm2.Load1Click(Sender: TObject); //загрузка контролов из типизированного файла
var
  g:file of NewDann;
  ND:NewDann;
begin
  //начальная директория
  OpenDialog1.InitialDir:=getcurrentdir;
  //фильтр типов файлов
  OpenDialog1.Filter:='Файлы исходных данных |*'+FileDataExtension;
  //вызов диал.окна
  if OpenDialog1.Execute then
  begin
    //создание файла
    AssignFile(g,OpenDialog1.FileName);
    Reset(g);
    //чтение из файла
    read(g,ND);
    //закрытие файла
    CloseFile(g);
    //вывод исходных данных в соответствующие поля
    edit4.Text:=floattostr(ND.a0);
    edit1.Text:=floattostr(ND.a1);
    edit2.Text:=floattostr(ND.a2);
    edit3.Text:=floattostr(ND.a3);
    edit14.Text:=floattostr(ND.b1);
    edit8.Text:=floattostr(ND.b2);
    edit9.Text:=floattostr(ND.b3);
    edit10.Text:=floattostr(ND.int1);
    edit11.Text:=floattostr(ND.int2);
    edit12.Text:=IntToStr(ND.N);
    //сообщение о загрузки данных из файла
    MessageDlg('Данные из файла загружены',mtInformation,[mbOK],0);
  end;
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.05.2017, 16:23   #7
xnnrzn
 
Регистрация: 15.05.2017
Сообщений: 8
По умолчанию

Сам исправил, но спасибо за помощь. Остался последний вопрос. Как сохранить в этот же файл данные из мемо?
Код:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, jpeg, ExtCtrls, StdCtrls;

type
   NewDann=record
    a3,a2,a1,a0,b3,b2,b1,b0,int1,int2,INT:real;
    N:integer;
   end;
   TIntFunc = function(X: Double): Double;
  TForm2 = class(TForm)
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N5: TMenuItem;
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Image1: TImage;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit8: TEdit;
    Edit10: TEdit;
    Label3: TLabel;
    Label5: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label6: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Edit9: TEdit;
    Label17: TLabel;
    Label18: TLabel;
    Panel1: TPanel;
    Edit11: TEdit;
    N6: TMenuItem;
    SaveDialog1: TSaveDialog;
    Memo1: TMemo;
    Label19: TLabel;
    N7: TMenuItem;
    OpenDialog1: TOpenDialog;
    Label4: TLabel;
    Edit14: TEdit;
    Edit7: TEdit;
    Edit12: TEdit;
    procedure N2Click(Sender: TObject);
    procedure N6Click(Sender: TObject);
    procedure N7Click(Sender: TObject);
    procedure N5Click(Sender: TObject);
    procedure N3Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form2: TForm2;
  buttonexit:integer;
  i,a1,a2,a3,a0,b1,b2,b3,b0,x,int1,int2,INT:real;
  eps:integer;
  N:integer;

implementation

uses Unit4;

{$R *.dfm}
function f(a3,a2,a1,a0,b3,b2,b1,b0,x:real):real;
  begin
    if abs(b3*x*x*x*x*x*x*x*x+b2*x*x*x*x*x*x*x+b3*x*x*x*x*x*x+b2*x*x*x*x+b1*x+b0)<0.000001 then f:=0 else
      f:=(a3*x*x*x*x*x+a2*x*x*x+a1*x*x+a0)/(b3*x*x*x*x*x*x*x*x+b2*x*x*x*x*x*x*x+b3*x*x*x*x*x*x+b2*x*x*x*x+b1*x+b0);
  end;
//процедура вычисления интеграла
  //Form2.Memo1.add('Площади фигур:');
  procedure MyCalc (a3,a2,a1,a0,b3,b2,b1,b0,int1,int2:real; N:integer; var INT:real);
     var
     h,x,s:real;
//h-длинна элем. отрезка;
//x-значение аргумента
//s-сумма площадей;
   begin
      Form2.Memo1.lines.add('Площади фигур:');
      h:=(int2-int1)/N;
      x:=int1;
      s:=0;
      while x < int2 do
      begin
        s:=s+f(a3,a2,a1,a0,b3,b2,b1,b0,x)+f(a3,a2,a1,a0,b3,b2,b1,b0,x+h);
        x:=x+h;
        Form2.Memo1.lines.add('f('+floattostr(x)+')='+floattostr(s));
      end;
      INT:=s*h/2;
      Form2.Memo1.lines.Add('Интеграл равен '+floattostr(INT));
end;
procedure TForm2.N2Click(Sender: TObject); //перевод + ошибка
begin
Form2.memo1.clear;
a1:=strtofloat(Edit3.Text);
a2:=strtofloat(Edit2.Text);
a3:=strtofloat(Edit1.Text);
a0:=strtofloat(Edit4.Text);
b1:=strtofloat(Edit9.Text);
b2:=strtofloat(Edit6.Text);
b3:=strtofloat(Edit5.Text);
b0:=strtofloat(Edit10.Text);
Form2.Edit14.Text:=floattostr(b3);
Form2.Edit8.Text:=floattostr(b2);
int1:=strtofloat(Edit12.Text);
int2:=strtofloat(Edit11.Text);
N:=strtoint(edit7.Text);
if Edit4.Text=''then
  messagedlg('Необходимо указать коэффициент a0',mterror,[mbok],0);
  if Edit3.Text=''then
  messagedlg('Необходимо указать коэффициент a1',mterror,[mbok],0);
  if Edit2.Text='' then
  messagedlg('Необходимо указать коэффициент a2',mterror,[mbok],0);
  if Edit1.Text=''then
  messagedlg('Необходимо указать коэффициент a3',mterror,[mbok],0);
  if Edit9.Text='' then
  messagedlg('Необходимо указать коэффициент b1',mterror,[mbok],0);
  if Edit6.Text='' then
  messagedlg('Необходимо указать коэффициент b2',mterror,[mbok],0);
  if edit12.Text=''then
  messagedlg('Необходимо указать нижний предел интегрирования int1',mterror,[mbok],0);
  if edit11.Text='' then
  messagedlg('Необходимо указать верхний предел интегрирования int2',mterror,[mbok],0);
  if N<=0 then
  begin
    MessageDlg('Значение колличества точек не должно быть меньше 0, или введенные данные некорректны', mtError, [mbOk],0);
    Edit7.Text:='1';
    N:=1;
  end;
  if int2<int1 then
  begin
    MessageDlg('int1 должно быть больше int2',mtError,[mbOK],0);
    int1:=-1;
    int2:=1;
    Edit11.Text:='1';
    Edit12.Text:='-1';
  end;
  if b1=0 then
  begin
    MessageDlg('Знаменатель не должен быть равен 0',mtError,[mbOK],0);
    b1:=0;
    Edit14.Text:='1';
  end;
  if b2=0 then
  begin
    MessageDlg('Знаменатель не должен быть равен 0',mtError,[mbOK],0);
    b2:=1;
    Edit8.Text:='1';
  end;
  if b3=0 then
  begin
    MessageDlg('Знаменатель не должен быть равен 0',mtError,[mbOK],0);
    b3:=1;
    Edit9.Text:='1';
  end;
  MyCalc(a3,a2,a1,a0,b3,b2,b1,b0,int1,int2,N,INT);
  Form2.label4.Caption:=Floattostr(INT);
end;
procedure TForm2.N3Click(Sender: TObject);
begin
Form4.Show;
end;
procedure TForm2.N5Click(Sender: TObject);//выход
begin
buttonexit := MessageDlg('Выйти без сохранения?',MtConfirmation, mbYesNo, 0);
  if buttonexit = mrYes then begin
  application.Terminate;
  end;
end;
procedure TForm2.N6Click(Sender: TObject);//сохранение
var
  g:file of NewDann; //файловая переменнная
  ND:NewDann;
begin
  //начальная директория
  SaveDialog1.InitialDir:=getcurrentdir;
  //фильтр типов файлов
  SaveDialog1.Filter:='Файлы исходных данных | *.dan';
  // Имя файла
  Savedialog1.FileName:= 'Начальные данные.dan';
  //вызов диал. окна
  if SaveDialog1.Execute then
  begin
  //создание начальных данных для сохранения
    ND.a0:=strToFloat(Edit4.text);
    ND.a1:=strToFloat(Edit1.text);
    ND.a2:=strToFloat(Edit2.text);
    ND.a3:=strToFloat(Edit3.text);
    ND.b1:=strToFloat(Edit9.text);
    ND.b2:=strToFloat(Edit6.text);
    ND.b2:=strToFloat(Edit8.text);
    ND.b3:=strToFloat(Edit5.text);
    ND.b3:=strToFloat(Edit14.text);
    ND.int1:=strToFloat(Edit11.text);
    ND.int2:=strToFloat(Edit12.text);
    ND.N:=strToInt(Edit7.text);
    ND.INT:=strtofloat(Label4.Caption);
    ND.b0:=strToInt(Edit10.text);

    //создание файла
    AssignFile(g,SaveDialog1.FileName);
    Rewrite(g);
    //запись в файл
    Write(g,ND);
    //закрытие файла
    CloseFile(g);
    //сообщение о сохранении
    MessageDlg('Данные записаны в файл',mtInformation,[mbOK],0);
    end;
end;
procedure TForm2.N7Click(Sender: TObject);//загрузка
var
  g:file of NewDann;
  ND:NewDann;
begin
  //начальная директория
  OpenDialog1.InitialDir:=getcurrentdir;
  //фильтр типов файлов
  OpenDialog1.Filter:='Файлы исходных данных |*.dan';
  //вызов диал.окна
  if OpenDialog1.Execute then
  begin
    //создание файла
    AssignFile(g,OpenDialog1.FileName);
    Reset(g);
    //чтение из файла
    read(g,ND);
    //закрытие файла
    CloseFile(g);
    //вывод исходных данных в соответствующие поля
    edit4.Text:=floattostr(ND.a0);
    edit1.Text:=floattostr(ND.a1);
    edit2.Text:=floattostr(ND.a2);
    edit3.Text:=floattostr(ND.a3);
    edit5.Text:=floattostr(ND.b3);
    edit6.Text:=floattostr(ND.b2);
    edit14.Text:=floattostr(ND.b3);
    edit8.Text:=floattostr(ND.b2);
    edit9.Text:=floattostr(ND.b1);
    edit12.Text:=floattostr(ND.int2);
    edit11.Text:=floattostr(ND.int1);
    edit10.Text:=floattostr(ND.b0);
    edit7.Text:=floattostr(ND.N);
    Label4.Caption:=floattostr(ND.INT);
    //сообщение о загрузки данных из файла
    MessageDlg('Данные из файла загружены',mtInformation,[mbOK],0);
  end;
end;

end.
xnnrzn вне форума Ответить с цитированием
Старый 23.05.2017, 17:19   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от xnnrzn Посмотреть сообщение
Как сохранить в этот же файл данные из мемо?
никак. в типизированном файле не могут хранится строки неограниченной (произвольной) длины.
варианты решения.
1) ограничение. если допустить, что в мемо не более 255 символов, тогда
в тип добавляем mem1 : string[255] и задача решена.
2) хранить мемо в отдельном текстовом файле (это просто, быстро и практически не потребует изменения программы)
3) отказаться от типизированного файла. Хранить данные в своём личном формате.
Тогда в файл можно записывать и Memo и вообще всё, что угодно.

какой вариант предпочесть - решать Вам.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.05.2017, 23:09   #9
xnnrzn
 
Регистрация: 15.05.2017
Сообщений: 8
По умолчанию

спасибо
xnnrzn вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не загружает бд в pma unesco PHP 1 23.01.2016 09:53
Взять данные из созданного файла .h. Madmaxisss Visual C++ 2 12.07.2011 21:46
Не загружает впеременную cargo29 Мультимедиа в Delphi 11 06.05.2011 23:22
Программа которая загружает себя из файла, а потом создаёт конфиг Pirotexnik Общие вопросы Delphi 1 28.03.2009 22:02
Два XL файла, данные 1-го файла являются частью другого в формуле 2-го Кот Microsoft Office Excel 2 14.08.2007 16:56