Функция возврашаюшая массив, не работает

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Функция возврашаюшая массив, не работает

Сообщение manas_anarov » 01.01.2014 15:32:52

Ошибки такие
Код: Выделить всё
Параметры были изменены, перекомпиляция с очисткой (ключ -B)
unit1.pas(35,4) Error: Variable identifier expected
unit1.pas(45) Fatal: There were 1 errors compiling module, stopping

в 11-й строке я добавил тип который состоит из 5ти цифр.
Код: Выделить всё
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

type
  TDayVisitors = array[0..4] of real;// сюда добавил код из примера

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

function massiv(a1,a2,a3,a4,a5:real) : TDayVisitors ;
begin
   TDayVisitors [0]:=99;//вот тут появляется ошибка
end;

procedure TForm1.Button1Click(Sender: TObject);
begin

end;

end.

manas_anarov
новенький
 
Сообщения: 26
Зарегистрирован: 13.12.2013 20:56:59

Re: Функция возврашаюшая массив, не работает

Сообщение Sergei I. Gorelkin » 01.01.2014 15:44:53

Нужно обращаться к переменной, а не к ее типу. В данном случае переменная - это результат функции, к ней можно обратиться по имени функции или специальному имени result:
Код: Выделить всё
massiv[0]:=99;
либо
result[0]:=99;
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1407
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: Функция возврашаюшая массив, не работает

Сообщение manas_anarov » 01.01.2014 16:20:39

Sergei I. Gorelkin Спасибо , заработало, загружаю сюда рабочую программу чтоб было полезно всем кто будет искать.
Код: Выделить всё
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

type
  TDayVisitors = array[0..4] of real;
  TDayVisitors_1 = array[0..4] of real;
  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

function massiv(a1,a2,a3,a4,a5:real) : TDayVisitors ;
begin
   massiv[0]:=99;

   result:=massiv;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
a1,a2,a3,a4,a5:real;
massiv_1:TDayVisitors_1;
begin
   massiv_1:=massiv(1,1,1,1,1);
   showMessage(FloatToStr(massiv_1[0]));
end;
end.
manas_anarov
новенький
 
Сообщения: 26
Зарегистрирован: 13.12.2013 20:56:59

Re: Функция возврашаюшая массив, не работает

Сообщение debi12345 » 02.01.2014 14:11:02

Еще проще :
Код: Выделить всё
function massiv(a1,a2,a3,a4,a5:real) : TDayVisitors ;
begin
   result[0]:=99;
end;
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 231

Рейтинг@Mail.ru