Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
1 / 1 / 1
Регистрация: 09.01.2010
Сообщений: 110
1

Вычисление в Edit'e

18.10.2011, 15:19. Показов 1071. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите, пожалуйста, как мне сделать действие для кнопки чтобы произошло следующее:
Есть Edit в котором пользователь ввел строку, содержащую символы например "45+56+545", надо чтобы по нажатию на кнопку в Label или другом Edit появился ответ данного выражения.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.10.2011, 15:19
Ответы с готовыми решениями:

Теряется пробел в Edite
Edit1.Text:= Ini.ReadString('SEPARATORS','2',' - '); При запуске наблюдаю только первый пробел и...

Первый символ в edite заглавный
Будьте здравы бояры! :) Отлаживаю поиск и вот такая проблема так как в базе адреса идут с...

Надо выровнить текст в Edite по правому краю
Помогите выровнть текст в Edite по правому краю, если невозможно укажите пожалуйста компонент с...

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

3
112 / 78 / 30
Регистрация: 10.09.2011
Сообщений: 263
18.10.2011, 15:54 2
Цитата Сообщение от Vodoley96 Посмотреть сообщение
Подскажите, пожалуйста, как мне сделать действие для кнопки чтобы произошло следующее:
Есть Edit в котором пользователь ввел строку, содержащую символы например "45+56+545", надо чтобы по нажатию на кнопку в Label или другом Edit появился ответ данного выражения.
Вместо сложения в выражении "45+56+545" может быть любая другая операция?
0
1302 / 708 / 107
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
18.10.2011, 16:18 3
через JavaScript
Изображения
 
Вложения
Тип файла: zip JS калькулятор.zip (263.3 Кб, 14 просмотров)
0
873 / 544 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
18.10.2011, 16:26 4
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,Math;
  function Parser(s: string): Double;
  function Parse(): Double;
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Button2: TButton;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 var
  InpStr:   string; //Копия входной строки
  InpPos,a:   integer;//Номер текущего символа
  CurrChar: char;   //Копия текущего символа
  b,c: Real;
 
{$R *.dfm}
//Процедура берёт следующий символ из строки
procedure GetNextChar;
begin
  if InpPos < length(InpStr) then begin
    Inc(InpPos);
    CurrChar := InpStr[InpPos];
  end
  else
    CurrChar := #0;
end;
 
//отсеивает ненужные символы
procedure SkipSpace;
begin
  while CurrChar in [' ', #9,#95] do
     GetNextChar;
end;
 
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit2.Text := FloatToStr(Parser(Edit1.Text));
end;
 
 
//Функция чтения числа
 function GetNumber:Double;
begin
  result := 0;
  SkipSpace;
  while CurrChar in ['0'..'9'] do begin
      result := result * 10 + ord(CurrChar) - ord('0');
      GetNextChar;
       end;
  SkipSpace;
end;
 
 
//Парсер :)
function Parse():Double ;
begin
  Result := GetNumber;
  repeat
    case CurrChar of
      #0: exit; //Достигли конца строки
      '+':      //Нужно сложить
      begin
        GetNextChar;
        Result := Result + GetNumber;
      end;
      '-':      //Нужно вычесть
      begin
        GetNextChar;
        Result := Result - GetNumber;
      end;
      '*':      //Нужно умножить
      begin
        GetNextChar;
        Result := Result * GetNumber;
      end;
      '/':      //Нужно разделить
      begin
        GetNextChar;
        Result := Result/GetNumber;
      end;
      '.':      //Нужно добавить разделитель
      begin
        GetNextChar;
        b:= GetNumber;
        a:= Length(FloatToStr(b));
        Result := Result + b*IntPower(0.1,a);
        a:= 0;
      end;
      ',':      //Нужно добавить разделитель
      begin
        GetNextChar;
        b:= GetNumber;
        a:= Length(FloatToStr(b));
        Result := Result+b*IntPower(0.1,a);
        a:= 0;
      end;
      '^':      //Нужно возвести в степень
      begin
        GetNextChar;
        Result:= Power(Result,GetNumber);
      end;
      else  //Какой-то неизвестный символ.
        raise Exception.CreateFmt(
          'Не могу выполнить действие с '#13#10+
          '   символом " %s " позиции :  %d',
          [CurrChar, InpPos]);
    end;
  until False;
 
end;
 
//Иницализация и запуск парсера
function Parser(s: string): Double;
begin
  InpStr := s;
  InpPos := 0;
  GetNextChar;
  Result := Parse();
 
end;
0
18.10.2011, 16:26
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.10.2011, 16:26
Помогаю со студенческими работами здесь

как сделать чтоб в lable отражалось,то что написано в edite делфи
как сделать чтоб в lable отражалось,то что написано в edite делфи

Вычисление периметра(вычисление расстояния между вершинами реализовать в виде функции)
даны координаты вершин многоугольника (X1,Y1), (X2,Y2),...(Xn,Yn). Напишите программу для...

Оформить в виде функции вычисление среднеарифметического, вычисление суммы и произведения чисел
2. Даны три числа. Оформить в виде функции вычисление среднеарифметического, вычисление суммы и...

Вычисление непрерывных дробей и выражений. Вычисление полиномов и их производных.
1. Чему равна знакочередующаяся сумма цифр числа n. 2. Даны натуральное число n и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Из чего и как собрать свой домашний кинотеатр
bt_guru 21.01.2025
Создание домашнего кинотеатра: от идеи до реализации В современном мире домашний кинотеатр стал неотъемлемой частью комфортного жилого пространства, предоставляя возможность наслаждаться. . .
Ошибки стиральных машин
bt_guru 21.01.2025
Современные стиральные машины представляют собой сложные электронные устройства, оснащенные множеством датчиков и систем контроля. Они способны самостоятельно определять вес загруженного белья,. . .
Копирование (маппинг) объектов в JavaScript
bytestream 21.01.2025
В современной разработке программного обеспечения копирование объектов представляет собой фундаментальную операцию, которая требует особого внимания и понимания. Маппинг объектов в JavaScript – это. . .
Как работать с Apache Kafka в C# .NET
bytestream 21.01.2025
Apache Kafka представляет собой распределенную платформу потоковой передачи данных, которая произвела революцию в области обработки больших объемов информации в реальном времени. Эта система,. . .
Как использовать RabbitMQ в C# .NET
bytestream 21.01.2025
RabbitMQ представляет собой мощный брокер сообщений, который эффективно решает эту задачу, обеспечивая надежную передачу данных между множеством приложений. Этот инструмент реализует протокол AMQP. . .
Как объединить последние коммиты в Git
bytestream 21.01.2025
В мире разработки программного обеспечения система контроля версий Git стала незаменимым инструментом для управления исходным кодом. Одной из наиболее полезных, но порой сложных для освоения функций. . .
Как запушить новую локальную ветку (branch) в удалённый репозиторий Git и отслеживать её
bytestream 21.01.2025
В современной разработке программного обеспечения система контроля версий Git стала неотъемлемым инструментом для эффективного управления кодом и организации командной работы. Одной из ключевых. . .
Как создать директорию и все родительские директории, указанные в пути, с помощью Python
bytestream 21.01.2025
Python предоставляет мощные инструменты для работы с файловой системой через встроенные модули os и pathlib, которые значительно упрощают процесс манипуляции директориями. Эти модули содержат. . .
Как работать с массивами в JavaScript
bytestream 21.01.2025
Массивы в JavaScript представляют собой один из фундаментальных типов данных, который позволяет хранить упорядоченные коллекции различных элементов в одной переменной. Эта структура данных является. . .
Какая максимальная длина адреса (URL) в различных браузерах и стандартах
bytestream 21.01.2025
В современном мире интернет-технологий URL-адреса (Uniform Resource Locator) играют фундаментальную роль в функционировании веб-пространства. Эти уникальные идентификаторы ресурсов стали неотъемлемой. . .
Как сбросить локальный репозиторий до состояния удалённого репозитория Git
bytestream 21.01.2025
При разработке программного обеспечения с использованием системы контроля версий Git разработчики часто сталкиваются с необходимостью синхронизации локального и удаленного репозиториев. Данная задача. . .
Как запретить подсветку выделенного текста с помощью CSS
bytestream 20.01.2025
Подсветка текста при выделении является стандартным поведением браузера, которое не всегда соответствует дизайнерским решениям или функциональным требованиям веб-приложения. Выделение текста может. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru