Показать сообщение отдельно
  #7  
Старый 11.01.2014, 21:17
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,088
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от H3@DHuNT3R
Спасибо за ответ. Он то меня и надоумил, что рано мне еще с такими вещами работать
Ну ничего, будем учится .
Всем спасибо за ответы!

Тогда стековый калькулятор.
Ты заносишь все в стек, при нажатии кнопки выполняешь вычисления. Стек можно сделать на списке (самое простое, меньше всего писать кода).

Код:
type
  TStackItemType = (sitValue, sitOperation);
  TOperation = (oPlus, oMinus, oMul, oDiv);
  TStackItem = record
    ItemType : TStackItemType;
    Value : Variant;
  end;
  POperation = ^TOperation;

var
  FStack : TList; // Создать в OnCreate, удалить в OnDestroy

procedure TForm1.AddValue(Sender : TObject);
var
  FItem : PStackItem;
begin
  New(FItem);
  FItem.ItemType := sitValue;
  FItem.Value := StrToInt(Edit1.Text);
  FStack.Add(FItem);
end;

// Сложение, остальные операции аналогично
procedure TForm1.Plus(Sender : TObject);
var
  FItem : PStackItem;
begin
  New(FItem);
  FItem.ItemType := sitOperation;
  FItem.Value := oPlus;
  FStack.Add(FItem);
end;

Ну а в процедуре вычисления идешь по набранному стеку и выполняешь вычисления.
Ответить с цитированием