![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
строки ---Edit [D7, XP]
MIXER © (2006-01-31 23:32:00)мастера подскажите почему button2 не работает
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Button1: TButton;
Edit4: TEdit;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c,e:real;
d:string;
begin
a:=Strtofloat(Edit1.Text);
b:=Strtofloat(Edit2.Text);
c:=a+b;
Str(c:5:1,d);
Edit3.Text:=d;
end;
procedure TForm1.Button2Click(Sender: TObject);
var a1,a2,a3:real;
a4:string;
begin
a1:=strtofloat(Edit3.Text);
a2:=a1*12;
Str(a2:5:1,a4);
Edit4.Text:=a4;
end;
end.
MIXER (2006-02-01 13:38:00) [1]спасибо всем
msguns (2006-02-01 13:33:00) [2]>MIXER (01.02.06 13:20) [13]
>видимо без обработки исключений не заглотит?
Заглотит все, что ты ей скажешь. Например, если "ручками" будешь проверять корректность введенного в Эдит юзером числа. Однако это вовсе не так просто, как кажется, ибо там надо еще учесть локализацию. Только вот зачем это делать, "нагружая" код вспомогательными деталями, если можно эффективно использовать имеющиеся в Дельфи/ОС функции.
Если уж смущает try..except, то можно использовать StrToFloatDef, "зашившись" на некоторое невероятное число, которое будет "сигнализировать" об ошибке. Хотя указанная процедура внутри себя использует тот же защищенный блок try..except
MIXER (2006-02-01 13:28:00) [3]
> А причем здесь кнопка?
такая задача.визуально нужны промежуточные значения.таких кнопок и значений 8-10
evvcom (2006-02-01 13:21:00) [4]А причем здесь кнопка?
MIXER (2006-02-01 13:20:00) [5]видимо без обработки исключений не заглотит?
msguns (2006-02-01 13:14:00) [6]
function CtrlAndConvertStrToFloat(var e: double; s: string): boolean;
begin
try
e := StrToFloat(s);
result := true;
except
result := false;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
a,b: double;
begin
if CtrlAndConvertStrToFloat(a,Edit1.Text) and
CtrlAndConvertStrToFloat(b,Edit2.Text) then
Edit3.Text := Format('%8,2f',a+b)
else
Edit3.Text := '???'
end;
procedure TForm1.Button2Click(Sender: TObject);
var
a: double;
begin
if CtrlAndConvertStrToFloat(a,Edit3.Text) then
Edit4.Text := Format('%8,2f',a*12)
else
Edit4.Text := '???'
end;
Плохиш (2006-02-01 13:04:00) [7]
> MIXER (01.02.06 12:52) [9]
d:= FormatFloat('0.0', c);
msguns (2006-02-01 13:02:00) [8]uses StrUtils
MIXER (2006-02-01 12:52:00) [9]что-то я торможу .не выходит синтаксис
[Error] Unit1.pas(41): There is no overloaded version of 'FormatFloat' that can be called with these arguments
FormatFloat( d:string; c:extended):string;
Плохиш (2006-02-01 11:02:00) [10]Замени Strна FormatFloat
PS. Str использует всегда точку в качестве десятичного разделителя.
StrToFloat и FormatFloat используют для этого DecimalSeparator.
MIXER (2006-02-01 11:00:00) [11]Pit спасибо за попытку но не работает тож.Может нужно другой компонент.в общем нужно ввести 2 числа (целое или действительное) получить третье.считать третье.получить четвертое.
MIXER (2006-02-01 10:45:00) [12]и EConvertError
MIXER (2006-02-01 10:43:00) [13]нужно 2 buttona а ошибка
Например выдает:
"...is not a floating point..."?
Pit (2006-02-01 00:18:00) [14]Это работает.
var
a,b,c,e:real;
d:string;
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
a:=Strtofloat(Edit1.Text);
b:=Strtofloat(Edit2.Text);
c:=a+b;
Str(c:5:1,d);
Edit3.Text:=d;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
c:=c*12;
Str(c:5:1,d);
Edit4.Text:=d;
end;
end.
Pit (2006-02-01 00:15:00) [15]procedure TForm1.Button1Click(Sender: TObject);
var a,b,c,e:real;
d:string;
begin
a:=Strtofloat(Edit1.Text);
b:=Strtofloat(Edit2.Text);
c:=a+b;
Str(c:5:1,d);
Edit3.Text:=d;
c:=c*12;
Str(c:5:1,d);
Edit4.Text:=d;
Kostafey (2006-02-01 00:01:00) [16]А что не работает-то, ошибку какую выдает ?
Например выдает:
"...is not a floating point..."?
Плохиш (2006-01-31 23:46:00) [17]
> подскажите почему button2 не работает
Отпуск у неё. По КСОТу нельзя заставлять работать во время отпуска.