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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2012, 21:49   #1
Аделинкка
Пользователь
 
Аватар для Аделинкка
 
Регистрация: 24.03.2012
Сообщений: 68
Радость Как вызвать функцию..

у меня проблема с вызовом функции из класса в программе(вы все не мне очень помогли)осталось доделать)))))))))))))0вместе мы сможем)как вызвать функцию??????????????
Код:
program Project8;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
  per=class
  a,b:integer;
  constructor Create;
  destructor Destroy; override;
  function perimetr : real;
end;


constructor per.Create;
begin
  inherited Create;
  writeln('vvedite "1 katet"');
  readln(a);
  writeln('vvedite "2 katet"');
  readln(b);
end;

destructor per.Destroy;
begin
  inherited Destroy;
end;

function per.perimetr : real;
var c:real;
begin
  c:=sqrt(a*a+b*b);//воот в этом месте
  result := a+b+c;
  // writeln('perimetr = ',result);
end;
    

var ri1,ri2,ri3:per;
sum_per , n,f,l :integer;
begin
  ri1:=per.Create;
  ri2:=per.Create;
  ri3:=per.Create;

  n:= ri2.perimetr ;//и в этом,я знаю,что так нельзя ,но как записать //правильно эту мысль??
  f:=ri1.perimetr;
  l:=ri3.perimetr ;

  sum_per:=n + f +l ;
  writeln('Summa perimetrov pryamoygolnuh treygolnikov=', sum_per);
  readln;
  readln;
Нет,не блондинка!!
Аделинкка вне форума Ответить с цитированием
Старый 18.12.2012, 22:24   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
я знаю,что так нельзя
Можно. Но Функция у тебя типа real и ы пытаешься ее результат в integer втулить.
Сделай n типа real и функция заработает.

Кстати дурной тон скрывать ошибки компилятора...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.12.2012, 22:25   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Как минимум
Код:
sum_per , n,f,l : Real;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 18.12.2012, 22:45   #4
Аделинкка
Пользователь
 
Аватар для Аделинкка
 
Регистрация: 24.03.2012
Сообщений: 68
По умолчанию

Код:
sum_per , n,f,l : Real;
а,да это я исправила)
Компилятор-this form of method call only allowed for class methods
эта форма вызова метода разрешено только для методов класса

В этой строчке
Код:
 n:= ri2.perimetr
Нет,не блондинка!!
Аделинкка вне форума Ответить с цитированием
Старый 18.12.2012, 22:53   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
  public
    function perimetr : real;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 18.12.2012, 22:53   #6
apromix
PHP, Delphi
Форумчанин
 
Аватар для apromix
 
Регистрация: 07.05.2008
Сообщений: 388
По умолчанию

Забыла end. в конце проги А так все работает
Мыши плакали, кололись, но продолжали жрать кактус...
мои проекты

Последний раз редактировалось apromix; 18.12.2012 в 22:56.
apromix вне форума Ответить с цитированием
Старый 18.12.2012, 23:08   #7
Аделинкка
Пользователь
 
Аватар для Аделинкка
 
Регистрация: 24.03.2012
Сообщений: 68
По умолчанию

больше ничего не изменять???????????????????но у меня на этот самый public ругается
...даже если указать входные параметры
Код:
 public
    function perimetr(a,b) : real;
компилятор-declaration expected but identifier 'public' found
missing psrsmetr type
'.'expected but ';' found
this form of method call only allowed for class methods
Нет,не блондинка!!
Аделинкка вне форума Ответить с цитированием
Старый 18.12.2012, 23:13   #8
apromix
PHP, Delphi
Форумчанин
 
Аватар для apromix
 
Регистрация: 07.05.2008
Сообщений: 388
По умолчанию

Потому что public нужно указать перед конструктором Сам конструктор не может быть private, а только public. Лучше вообще не пиши секции вроде public или private. Но только пока не разобралась с ООП.
Мыши плакали, кололись, но продолжали жрать кактус...
мои проекты
apromix вне форума Ответить с цитированием
Старый 18.12.2012, 23:20   #9
Аделинкка
Пользователь
 
Аватар для Аделинкка
 
Регистрация: 24.03.2012
Сообщений: 68
По умолчанию

пока не разобралась( просто запуталась..просто не буду писать)но не работает все же (((((((((((((((ошибочки старые ,что неправильное в вызове функции...с типами переменных все ок ,лишь this form of method call only allowed for class methods в той же строчке
Нет,не блондинка!!
Аделинкка вне форума Ответить с цитированием
Старый 18.12.2012, 23:27   #10
apromix
PHP, Delphi
Форумчанин
 
Аватар для apromix
 
Регистрация: 07.05.2008
Сообщений: 388
По умолчанию

Вот точно работающий код

Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
  per=class
  a,b:integer;
  constructor Create;
  destructor Destroy; override;
  function perimetr : real;
end;


constructor per.Create;
begin
  inherited Create;
  writeln('vvedite "1 katet"');
  readln(a);
  writeln('vvedite "2 katet"');
  readln(b);
end;

destructor per.Destroy;
begin
  inherited Destroy;
end;

function per.perimetr : real;
var c:real;
begin
  c:=sqrt(a*a+b*b);//воот в этом месте
  result := a+b+c;
  // writeln('perimetr = ',result);
end;
    

var ri1,ri2,ri3:per;
sum_per , n,f,l :real;
begin
  ri1:=per.Create;
  ri2:=per.Create;
  ri3:=per.Create;

  n := ri2.perimetr;//и в этом,я знаю,что так нельзя ,но как записать //правильно эту мысль??
  f:=ri1.perimetr;
  l:=ri3.perimetr ;

  sum_per:=n + f +l ;
  writeln('Summa perimetrov pryamoygolnuh treygolnikov=', sum_per);
  readln;
  readln;
end.
Мыши плакали, кололись, но продолжали жрать кактус...
мои проекты
apromix вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вызвать функцию из класса ? Silly Student Общие вопросы C/C++ 2 13.10.2011 20:07
Как вызвать функцию из функции ? PheonixS JavaScript, Ajax 3 16.12.2010 05:35
Как вызвать функцию из юнита? Des Общие вопросы Delphi 5 06.11.2010 12:47
Как вызвать функцию? blackstersl Общие вопросы Delphi 10 07.06.2009 19:22
Вызвать адрес памяти как функцию XAOC-forever Общие вопросы Delphi 18 07.03.2009 20:32