Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите разобратся с (*,/,+,-) и всё в Edit 
V
    Опции темы
Trotter
Дата 11.2.2007, 00:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 24.10.2006
Где: Нижний Новгород

Репутация: 0
Всего: 0



Задача такая в калькуляторе должно быть (*,/,+,-)
в кансоле сделал а так немогу помогите

PM MAIL ICQ   Вверх
Данкинг
Дата 11.2.2007, 01:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 9
Всего: 130



Что сделать, калькулятор? Да пожалуйста, ну, как-то так:  smile 


Код


unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    Button9: TButton;
    Button10: TButton;
    GroupBox1: TGroupBox;
    Button11: TButton;
    Button12: TButton;
    Button13: TButton;
    Button14: TButton;
    Button15: TButton;
    Edit1: TEdit;
    Button16: TButton;
    Button17: TButton;
    Button18: TButton;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    Label1: TLabel;
    procedure Button15Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button10Click(Sender: TObject);
    procedure Button16Click(Sender: TObject);
    procedure Button18Click(Sender: TObject);
    procedure Button11Click(Sender: TObject);
    procedure Button12Click(Sender: TObject);
    procedure Button13Click(Sender: TObject);
    procedure Button14Click(Sender: TObject);
    procedure Button17Click(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  s1,s2,oper:string;


implementation

{$R *.dfm}
uses unit2;

function GetComputerName: string;//взято из ДРКБ!
 var
   buffer: array[0..MAX_COMPUTERNAME_LENGTH + 1] of Char;
   Size: Cardinal;
 begin
   Size := MAX_COMPUTERNAME_LENGTH + 1;
   Windows.GetComputerName(@buffer, Size);
   Result := StrPas(buffer);
 end;


procedure TForm1.Button15Click(Sender: TObject);

begin
edit1.Text:='';
s1:='';
s2:='';
oper:='';
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'1';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'2';
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'3';
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'4';
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'5';
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'6';
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'7';
end;

procedure TForm1.Button8Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'8';
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'9';
end;

procedure TForm1.Button10Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'0';
end;

procedure TForm1.Button16Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+',';
end;

procedure TForm1.Button18Click(Sender: TObject);
begin
edit1.Text:=copy(edit1.Text,1,length(edit1.Text)-1);
s1:=edit1.Text;
end;

procedure TForm1.Button11Click(Sender: TObject);
begin
s1:=edit1.Text;
edit1.Text:='';
oper:='+';
end;

procedure TForm1.Button12Click(Sender: TObject);
begin
s1:=edit1.Text;
edit1.Text:='';
oper:='-';
end;

procedure TForm1.Button13Click(Sender: TObject);
begin
s1:=edit1.Text;
edit1.Text:='';
oper:='*';
end;

procedure TForm1.Button14Click(Sender: TObject);
begin
s1:=edit1.Text;
edit1.Text:='';
oper:=':';
end;

procedure TForm1.Button17Click(Sender: TObject);
begin
s2:=edit1.Text;
if (s1='') or (s2='') then exit;
if oper='+' then edit1.Text:=floattostr(strtofloat(s1)+strtofloat(s2));
if oper='-' then edit1.Text:=floattostr(strtofloat(s1)-strtofloat(s2));
if oper='*' then edit1.Text:=floattostr(strtofloat(s1)*strtofloat(s2));
if oper=':' then edit1.Text:=floattostr(strtofloat(s1)/strtofloat(s2));
end;

procedure TForm1.N1Click(Sender: TObject);
begin
form2.Show;
self.hide;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
label1.Caption:='Здравствуй, '+GetComputerName+' !';
end;

end.




--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Trotter
Дата 11.2.2007, 02:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 24.10.2006
Где: Нижний Новгород

Репутация: 0
Всего: 0



мда спасибо но мне есчё до этого долековато smile
пашол читать
PM MAIL ICQ   Вверх
Данкинг
Дата 11.2.2007, 02:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 9
Всего: 130



Да на здоровье! smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Beltar
Дата 11.2.2007, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

Репутация: 3
Всего: 7



Я конечно дико извиняюсь, но вот это:

Код

procedure TForm1.Button1Click(Sender: TObject);    
begin    
edit1.Text:=edit1.Text+'1';    
end;


Просто некультурно. Кто мешает написать

Код

procedure TForm1.Button1Click(Sender: TObject);    
begin    
edit1.Text:=edit1.Text+(Sender as TButton).Caption;
//Лучше SpeedButton, если фокус на кнопки не нужен, да и форма у них получше. :)
end;


И понавешать на все кнопки?

2 Trotter:

Что именно тебе надо сделать? Калькулятор с приоритетом, который понимает, что 2+2*2=6, а не 8? Тогда тебе надо использовать специальные алгоритмы, самый простой, наверное, Обратная Польская Запись. Мне хватило институтской методички, чтобы сделать калькулятор, считающий помимо ариметических операций, со скобками еще и функции, в том числе среднее арифметическое от произвольного числа парамитров.
Или ты все это знаешь и не можешь сделать в графике?


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
Данкинг
Дата 11.2.2007, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 9
Всего: 130



Цитата(Beltar @  11.2.2007,  12:31 Найти цитируемый пост)
Просто некультурно. Кто мешает написать

А в чём принципиальная разница в данном случае?! smile Ну, циферки не перебирать просто. smile 
А вообще идея понятна, просто я профессионально никакое программирование нигде не учил и до всего сам доходил. Поэтому "как нужно" я могу и не знать... smile 

Это сообщение отредактировал(а) Данкинг - 11.2.2007, 13:52


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
W4FhLF
Дата 11.2.2007, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 6
Всего: 121



Цитата(Beltar @  11.2.2007,  12:31 Найти цитируемый пост)
 Кто мешает написать


Твой код скомпилируется в более объёмный и будет занимать на порядок больше тактов у процессора. Ну в пределах 400-500кб обычной делфийской программы это ерунда, однако некультурно.  К при этом я ничего некультурного невижу в варинте Данкинга. 

Это сообщение отредактировал(а) W4FhLF - 11.2.2007, 16:11


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Beltar
Дата 11.2.2007, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

Репутация: 3
Всего: 7



2 W4FhLF

В данном случае будет порядка нескольких десятков процедур и просто куча мусора в исходнике.
И почему это много скомпилируется?


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
W4FhLF
Дата 11.2.2007, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 6
Всего: 121



Beltar, в каком в данном? 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Данкинг
Дата 11.2.2007, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 9
Всего: 130



Цитата(Beltar @  11.2.2007,  17:41 Найти цитируемый пост)
В данном случае будет порядка нескольких десятков процедур 

А как изменится число процедур-то? Или я что-то не так понял? smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Beltar
Дата 11.2.2007, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

Репутация: 3
Всего: 7



Имеется минимум 10 кнопок для цифр. Еще для арифметических операций 4, и м/б еще символы, которые надо добавлять в строку. Зачем в такой ситуации для каждой кнопки писать отдельную функцию, когда можно написать одну заюзав Sender.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0593 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.