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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.11.2011, 01:22   #1
Александра_69
Пользователь
 
Регистрация: 28.10.2011
Сообщений: 22
Вопрос запись в текстовый файл

пишет file type not allowed here в ввыделенном месте

Код:
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Unit2;
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private    { Private declarations }
  public    { Public declarations }
  end;
var
  Form1: TForm1;
  a,b,x,m:extended; n:word; fl:TextFile;
function myf(x,m:extended):extended;
implementation
{$R *.dfm}
function myf(x,m:extended):extended;
var c,s:extended; k:word;
begin
c:=x;
s:=c;
for k:=1 to m do
begin
c:=c*x/k;
s:=s+c;
end;
result:=s;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
edit1.clear;
edit2.clear;
edit3.clear;
AssignFile(Fl,’MySin.dat’);
Rewrite(Fl);
m:=5;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
a:=strtofloat(edit1.text);
b:=strtofloat(edit2.text);
n:=strtoint(edit3.text);
Writeln(fl,'a=',a:5:2,' b=',b:5:2,' n=',n:5);
tabf(a,b,n,myf,fl);
end;
end.
Код:
unit Unit2;
interface
Uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
Type fun=function(x,m:extended):extended;
procedure tabf(a,b:extended; n:word; f:fun; fl:TextFile);
implementation
procedure tabf(a,b:extended; n:word; f:fun; fl:TextFile);
var h,x,y,m:extended; i:word;
begin
h:=(b-a)/n;
x:=a;
for i:=1 to n do
  begin
    y:=f(x,m);
    Writeln(fl,'x=',x:5:2,' y=',y:5:2);
    x:=x+h;
   end;
end;
end.
Александра_69 вне форума Ответить с цитированием
Старый 04.11.2011, 03:14   #2
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Файловые переменные нельзя передавать по значению. Передавай по ссылке.

Код:
procedure tabf(a,b:extended; n:word; f:fun; var fl: TextFile);
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 04.11.2011, 03:19   #3
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Код:
procedure tabf(a,b:extended; n:word; f:fun; fl:TextFile);
В этом месте файловую переменную нельзя использовать. Например, она не может быть формальным параметром-значением.
Можно так:
Код:
procedure tabf(a,b:extended; n:word; f:fun; Var fl:TextFile);
Но вам лучше переписать процедуру по другому.
-----
Опередили...

И исправьте типы данных в функции:
Код:
function myf(x,m:extended):extended;
var c,s:extended; k:word;
begin
c:=x;
s:=c;
for k:=1 to m do
begin
c:=c*x/k;
s:=s+c;
end;
result:=s;
end;
Нельзя тут совмещать Word и Extended.
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 04.11.2011, 15:06   #4
Александра_69
Пользователь
 
Регистрация: 28.10.2011
Сообщений: 22
По умолчанию

что значит эта ошибка? "parameter lists differ"
Александра_69 вне форума Ответить с цитированием
Старый 04.11.2011, 15:09   #5
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

http://translate.google.com/#auto|ru...lists%20differ
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 04.11.2011, 16:01   #6
Александра_69
Пользователь
 
Регистрация: 28.10.2011
Сообщений: 22
По умолчанию

что мне надо сделать? //parameter lists differ
Код:
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Unit2;
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private         { Private declarations }
  public          { Public declarations }
  end;
const m=5;
var
  Form1: TForm1;
  a,b,x:extended; n:word; fl:TextFile;
function f(x:extended):extended;
implementation
{$R *.dfm}
function f(x:extended):extended;
var c,s:extended; k:word;
begin
c:=x;
s:=c;
for k:=1 to m do
begin
c:=c*x/k;
s:=s+c;
end;
result:=s;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
edit1.clear;
edit2.clear;
edit3.clear;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
a:=strtofloat(edit1.text);
b:=strtofloat(edit2.text);
n:=strtoint(edit3.text);
AssignFile(Fl,'file1');
Rewrite(Fl);
Writeln(fl,'a=',a:5:2,' b=',b:5:2,' n=',n:5);
tabf(a,b,n,f,fl);
end;
end.
Код:
unit Unit2;
interface
Uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
Type fun=function(x:extended):extended;
procedure tabf(a,b:extended; n:word; f:fun; var fl:TextFile);
implementation
procedure tabf(a,b:extended; n:word; f:fun; var fl:TextFile);
var h,x,y,m:extended; i:word;
begin
h:=(b-a)/n;
x:=a;
for i:=1 to n do
  begin
    y:=f(x);
    Writeln(fl,'x=',x:5:2,' y=',y:5:2);
    x:=x+h;
   end;
end;
end.

Последний раз редактировалось Александра_69; 04.11.2011 в 16:07.
Александра_69 вне форума Ответить с цитированием
Старый 04.11.2011, 17:18   #7
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

У меня всё компилируется. Ошибки parameter lists differ нет. Если что не так, то лучше исходник своего проекта выложите. Подкорректируем.
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 04.11.2011, 17:41   #8
Александра_69
Пользователь
 
Регистрация: 28.10.2011
Сообщений: 22
По умолчанию

вот исходник. буду чрезмерно благодарна
Вложения
Тип файла: rar 3.rar (3.8 Кб, 10 просмотров)
Александра_69 вне форума Ответить с цитированием
Старый 04.11.2011, 18:07   #9
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Подправил:http://zalil.ru/31993648
P.S. Закачать на форум не удалось, появляется ошибка, поэтому так.

И пересмотрите весь код и функцию myf там при её вызове указывается параметр, который влияет на цикл. Вы указывали выше число 5 я такой же и поставил.
Код:
...
const m=5;
...
for k:=1 to m do
...
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 04.11.2011, 19:00   #10
Александра_69
Пользователь
 
Регистрация: 28.10.2011
Сообщений: 22
По умолчанию

спасибо, работает, только не полностью, т.е. когда открываю файл, он не до конца просчитал.
Александра_69 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись в текстовый файл С++ Шиншилка Помощь студентам 2 30.10.2011 15:37
Запись данных в текстовый файл Jene4ka Общие вопросы Delphi 2 26.05.2011 17:27
Запись в текстовый файл cr1t Общие вопросы Delphi 5 31.07.2010 19:42
Запись в текстовый файл из ComboBox Siluet Общие вопросы Delphi 11 13.12.2009 14:04
Запись в текстовый файл Xardas Общие вопросы Delphi 9 20.01.2008 13:22