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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.02.2011, 18:02   #1
fate
Форумчанин
 
Аватар для fate
 
Регистрация: 17.03.2009
Сообщений: 318
По умолчанию возникает ошибка Missing operator or semicolon (классы)

вот такой код
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

type
 Tsin=class
  private
  Amplitude:integer;
  Period:integer;
  MSin:integer;
  procedure MySin(const x:integer);
  public
  Constructor Create; overload;
  property PAmplitude:integer write Amplitude;
  property PPeriod:integer write Period;
  property TMySin:integer read MSin write MySin;
end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);
var
 i:integer; Tsin1:Tsin;
begin
Tsin1:=Tsin.Create;
     with Form1 do
      begin
      Canvas.MoveTo(0, Tsin1.TMySin(0)); //в этой строке ошибка
     for i:=0 to Width do
       with Canvas do
         begin
           LineTo(i, Tsin1.TMySin(i));
           MoveTo(i, Tsin1.TMySin(i));
         end;
     end;
Tsin1.Free;
end;



{ Tsin }

constructor Tsin.Create;
begin
inherited;
MSin:=0;
 Amplitude := 50;
 Period := 50;
end;

procedure Tsin.MySin(const x: integer);
begin
 MSin := round(sin(x/Period)*Amplitude)+Amplitude*2
end;



end.
и даже когда я делаю так
private
// procedure MySin(const x:integer);
public
procedure MySin(x:integer);
т.е. переношу процедуру в public и пишу в коде Tsin ставлю точку выпадает список полей и свойств этого класса среди которых нет процедуры MySin.
Может я смотрю на проблему как говорится с близи, не понимаю что я делаю не так
fate вне форума Ответить с цитированием
Старый 22.02.2011, 18:11   #2
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

Цитата:
Canvas.MoveTo(0, Tsin1.TMySin(0)); //в этой строке ошибка
Tsin1.TMySin(0) если под етим имелось ввиду MSin
то
Код:
  property TMySin:integer read GetMSin write MySin;

function Tsin.GetMySin(const x: integer) : integer;
begin
 MSin := round(sin(x/Period)*Amplitude)+Amplitude*2
end;
Canvas.MoveTo(0, GetMySin(0));

как то так
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 22.02.2011, 18:20   #3
fate
Форумчанин
 
Аватар для fate
 
Регистрация: 17.03.2009
Сообщений: 318
По умолчанию

Цитата:
read GetMSin
а что чтение происходит только из функции? если я из переменной хочу читать?
зачем мне и в функции и в процедуре одно и то же действие?
fate вне форума Ответить с цитированием
Старый 22.02.2011, 18:21   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
MSin := round(sin(x/Period)*Amplitude)+Amplitude*2
Это что за провокация???
Ану бегом читать о том как в функциях Делфи возвращать результат и в частности про ключевое слово Result!!!

И кстати: Свойство описано неверно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.02.2011, 18:22   #5
fate
Форумчанин
 
Аватар для fate
 
Регистрация: 17.03.2009
Сообщений: 318
По умолчанию

Цитата:
Canvas.MoveTo(0, GetMySin(0));
а это я вообще не понял, если метод GetMySin это элемент класса Tsin
как же ты к нему обращаешься
fate вне форума Ответить с цитированием
Старый 22.02.2011, 18:23   #6
fate
Форумчанин
 
Аватар для fate
 
Регистрация: 17.03.2009
Сообщений: 318
По умолчанию

Stilet это замечание кому из нас адрисованно?
у меня нет функций в коде

так как мне обратиться правильно (причитать и записать) к процедуре
MySin через свойство?

Последний раз редактировалось Stilet; 22.02.2011 в 18:25.
fate вне форума Ответить с цитированием
Старый 22.02.2011, 18:25   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Правда??
А это что :
Цитата:
sin1.TMySin(i)
Это вызов функции а не свойства.
Переделывай стратегию. Перепиши эту часть как чистую функцию-метод, и не морочь голову со свойством коли ему нужно передавать параметры.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.02.2011, 18:29   #8
fate
Форумчанин
 
Аватар для fate
 
Регистрация: 17.03.2009
Сообщений: 318
По умолчанию

Stilet а что ж свойству не передается параметр? как же write
я пробовал так sin1.TMySin:=i; тоже ошибка, но другая, там что-то о не соответствии типов
Вы под моим кодом читали сообщение?
так что и с методом не выходит, почему не понятно
fate вне форума Ответить с цитированием
Старый 22.02.2011, 18:31   #9
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

Цитата:
коли ему нужно передавать параметры
и оно в ответ должно возврашать результат
читаи читаи )


ЗЫ. Stilet а мне с моим вопросом поможете?
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 22.02.2011, 18:32   #10
fate
Форумчанин
 
Аватар для fate
 
Регистрация: 17.03.2009
Сообщений: 318
По умолчанию

ArtGrek без обид, но у меня сложилось впечатление что ты туговат с ООП а еще советы даешь
fate вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
missing operator or semicolon - Как получить секунды [Delphi] bulldog5293 Помощь студентам 8 10.12.2010 16:30
ошибкa "missing operator or semicolon" Дим@@ Помощь студентам 3 11.11.2010 15:14
Почему возникает ошибка? Aleksey1989 Помощь студентам 1 05.10.2010 18:16
Возникает ошибка..... MyXa Общие вопросы .NET 12 31.08.2010 14:29
ошибка: no match for ‘operator<<’ in ‘std::operator<< [with _Traits = std::char_traits<char> Critter Общие вопросы C/C++ 5 08.08.2010 23:38