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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2010, 13:29   #1
nexzis
Пользователь
 
Регистрация: 01.11.2010
Сообщений: 48
По умолчанию калькулятор

подскажите плз выдаёт ошибку [Error] Unit1.pas(103): Not enough actual parameters
процедуру делал сам и не могу понять с чем намудрил
ещё выдаёт [Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
что это тоже не знаю

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

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    Button9: TButton;
    Button10: TButton;
    Button11: TButton;
    Button12: TButton;
    Button13: TButton;
    Button14: TButton;
    Button15: TButton;
    Button16: TButton;
    Button17: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button11Click(Sender: TObject);
    //procedure DoOper(Sender: TObject);
    procedure Button12Click(Sender: TObject);
    procedure Button17Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
     procedure DoOper(Sender: TObject);
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  accum : real; oper: integer; f: integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
btn: Tbutton;
ch: char;
begin
btn:=sender as TButton;
ch:= chr(48+btn.Tag);
case btn.Tag of
1..9:
if f=0 then
begin
edit1.Text:= ch;
f:=1;
end
else edit1.Text:= edit1.Text + ch;

0:
if edit1.text <> '0'  then
edit1.Text:=edit1.Text + '0';
end;
end;

procedure TForm1.Button11Click(Sender: TObject);
begin
if edit1.Text ='0' then
begin
edit1.Text:= '0,';
f:=1;
end;
if pos(',',edit1.Text)= 0 then
edit1.Text:=edit1.text + ',';
end;
procedure TForm1.DoOper;
var numb :real;
begin
numb := strtofloat(form1.Edit1.Text);
case oper of
0: accum:= numb;
1: accum:= accum + numb;
2: accum := accum - numb;
3: accum := accum * numb;
4: accum := accum / numb;
end;
form1.Edit1.Text:=floattostr(accum);
end;
procedure TForm1.Button12Click(Sender: TObject);
var
btn: TButton;
begin
Btn := Sender as TButton;
if f = 0   then
oper := Btn.Tag  else
begin
DoOper;
oper := Btn.Tag;
f:=0;
end;
end;


procedure TForm1.Button17Click(Sender: TObject);
begin
Edit1.Text := '0';
accum := 0;
oper := 0;
f := 0;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
oper := 0;
end;

end.
да ещё немного не по теме как правильно код в чат здесь писать?
Вложения
Тип файла: rar Новая папка.rar (3.5 Кб, 15 просмотров)

Последний раз редактировалось Stilet; 11.11.2010 в 10:19.
nexzis вне форума Ответить с цитированием
Старый 07.11.2010, 13:51   #2
casekey
Пользователь
 
Регистрация: 03.11.2010
Сообщений: 95
По умолчанию

к чему тут end с точкой в конце? где тогда begin?
casekey вне форума Ответить с цитированием
Старый 07.11.2010, 14:09   #3
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
[Error] Unit1.pas(103): Not enough actual parameters
Обычно означает, что при вызове функции или процедуры ты указал неверное число параметров (обычно пропускают). Цифра 103 обозначает строчку, где возникла ошибка...
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 07.11.2010, 14:13   #4
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Код:
procedure DoOper(Sender: TObject);
procedure TForm1.DoOper;
DoOper;
Вы определитесь уж...
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 07.11.2010, 14:27   #5
nexzis
Пользователь
 
Регистрация: 01.11.2010
Сообщений: 48
По умолчанию

с чем определиться?
nexzis вне форума Ответить с цитированием
Старый 07.11.2010, 14:28   #6
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Будет у вашей процедуры параметр или нет.
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 07.11.2010, 14:30   #7
nexzis
Пользователь
 
Регистрация: 01.11.2010
Сообщений: 48
По умолчанию

какой должен быть параметр
как надо изменить чтоб был параметр, и как изменить чтобы не было и
nexzis вне форума Ответить с цитированием
Старый 07.11.2010, 14:31   #8
nexzis
Пользователь
 
Регистрация: 01.11.2010
Сообщений: 48
По умолчанию

в книге с которой я писал не было указано ни какого параметра
nexzis вне форума Ответить с цитированием
Старый 07.11.2010, 14:44   #9
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

вот код из твоей книжки
Код:
var
  accum:  real;     // аккумулятор
  oper:   integer;  // операция: 1 - '+' ; 2 - '-';
                    // 0 - "выполнить" (кнопка "=")

  f:      integer;
  { f = 0 ждем первую цифру нового числа, например,
          после выполнения операции, когда на
          индикаторе результат.
    f = 1 ждем остальные цифры. }

// Щелчок на кнопках "0" - "9"
procedure TForm1.DigitBtnClick(Sender: TObject);
var
    Btn: TButton;
    ch: Char;
begin
  Btn := Sender as TButton;
  ch  := Chr(48+Btn.Tag);
  // chr(48) = '0'; chr(49) = '1' и т.д.
  // можно и так: ch := Btn.Caption;

  case Btn.Tag of
  1..9: // кнопки "1" - "9"
    if f = 0 // первая цифра числа
        then begin
            Edit1.Text := ch;
            f := 1; // ждем остальные цифры
        end
    else Edit1.Text := Edit1.Text + ch;

  0: // кнопка "0"
      if Edit1.Text <> '0' // на индикаторе 0
        // чтобы на индикаторе не было
        // нескольких нулей в начале числа
        then  Edit1.Text := Edit1.Text + '0';
  end;
end;

// десятичная точка
procedure TForm1.ButtonZClick(Sender: TObject);
begin
  if Edit1.Text = '0' then
    begin
      Edit1.Text := '0,';
      f := 1;
    end;
  if Pos(',',Edit1.Text) = 0 then
      Edit1.Text := Edit1.Text + ',';
end;

// выполнение операции
procedure DoOper;
var
    numb: real; // число на индикаторе
begin
    // accum содержит результат предыдущей
    // операции, oper - код операции, которую
    // надо выполнить. Операнд находится
    // на индикаторе.
    numb := StrToFloat(Form1.Edit1.Text);
    case oper of
    0: accum := numb;
    1: accum := accum + numb;
    2: accum := accum - numb;
    end;
    Form1.Edit1.Text := FloatToStr(accum);
end;

// Обрабатывает щелчок на кнопках "+", "-" и "="
procedure TForm1.OpBtnClick(Sender: TObject);
{  Надо выполнить предыдущую операцию,
  вывести результат на индикатор,
  запомнить текущую операцию и
  установить режим ожидания первой
  цифры нового числа. }
var
  Btn: TButton;
begin
  Btn := Sender as TButton;
  if f = 0 // ждем первую цифру, но пользователь
           // щелкнул на кнопке операции
    then
       // свойство Tag кнопки хранит код операции
       oper :=  Btn.Tag // запомним операцию
  else begin
    DoOper;          // выполнить предыдущую операцию
    oper := Btn.Tag; // запомнить текущую операцию
    f:=0;            // ждем первую цифру нового числа
  end;
end;

// кнопка "с" - очистка
procedure TForm1.ButtonCClick(Sender: TObject);
begin
  Edit1.Text := '0';
  accum := 0;
  oper := 0;
  f := 0; // ждем первую цифру числа
end;

// нажатие клавиши в поле Edit1
procedure TForm1.Edit1Change(Sender: TObject; var Key:Char);
begin
  Key := Chr(0);  // не отображать символы
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
    oper := 0;
end;

end.
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 07.11.2010, 14:44   #10
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Код:
procedure DoOper(Sender: TObject);
заменить на:
Код:
procedure DoOper;
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Калькулятор seregan1993 Общие вопросы C/C++ 3 23.05.2010 17:41
C++ калькулятор napanin Общие вопросы C/C++ 0 09.05.2010 16:32
Калькулятор SPQR10000 Помощь студентам 11 25.02.2010 22:01
Калькулятор mary1421 Общие вопросы Delphi 3 21.09.2009 13:40
Калькулятор. Bilargo Общие вопросы Delphi 5 17.09.2009 17:33