Vrtnar
asked on
how to calculate
I would like to do some calculations on my form.
I have dbtext,currencyedit's and dbedit's.
Can you give me example how to calculate using these?
example:
I have a dbtext that gets a value from database.
Now I want that value to divide from a value in editbox
so a currency edit gives me the right sum..
just learning...
I have dbtext,currencyedit's and dbedit's.
Can you give me example how to calculate using these?
example:
I have a dbtext that gets a value from database.
Now I want that value to divide from a value in editbox
so a currency edit gives me the right sum..
just learning...
ASKER
dont understand a thing...
I tried --
var a, b: Integer;
c: Double;
begin
if StrToInt(dbedit1.text, a) and StrToInt(edit14.text, b) then
currencyedit37.value := b / a;
and it dont work...please fro a nice explanation as I just learn
I tried --
var a, b: Integer;
c: Double;
begin
if StrToInt(dbedit1.text, a) and StrToInt(edit14.text, b) then
currencyedit37.value := b / a;
and it dont work...please fro a nice explanation as I just learn
ASKER
if TryStrToInt(dbedit1.Text,a ) and TryStrToInt(edit14.text,b) then
currencyedit37.value:= a / b;
does not work either...
currencyedit37.value:= a / b;
does not work either...
TDBEdit has property called Text
TDBEdit has property called Caption
both properties are of type string which means they can contain literlas
so if you want to do any mth calculation you need to convert them
there are 3 most commonly used functions:
1. StrToInt() this func will throw exception if it's not possible to convert
sample
procedure S1;
var s: string;
i: Integer;
begin
s := 'hello world';
try
StrToInt(s, i);
except
ShowMessage('cannot convert hello world to integer value');
end;
end;
2. TryStrToInt() <- no error will be thrown
procedure S2;
var s: string;
i: Integer;
begin
s := 'hello world';
if not TryStrToInt(s, i) then
ShowMessage('cannot convert hello world to integer value');
end;
3. Val() <- no error will be thrown
procedure S3;
var s: string;
i: Integer;
val: Integer;
begin
s := 'hello world';
Val(s, i, code);
if code <> 0 then
ShowMessage('cannot convert hello world to integer value');
end;
ziolko.
TDBEdit has property called Caption
both properties are of type string which means they can contain literlas
so if you want to do any mth calculation you need to convert them
there are 3 most commonly used functions:
1. StrToInt() this func will throw exception if it's not possible to convert
sample
procedure S1;
var s: string;
i: Integer;
begin
s := 'hello world';
try
StrToInt(s, i);
except
ShowMessage('cannot convert hello world to integer value');
end;
end;
2. TryStrToInt() <- no error will be thrown
procedure S2;
var s: string;
i: Integer;
begin
s := 'hello world';
if not TryStrToInt(s, i) then
ShowMessage('cannot convert hello world to integer value');
end;
3. Val() <- no error will be thrown
procedure S3;
var s: string;
i: Integer;
val: Integer;
begin
s := 'hello world';
Val(s, i, code);
if code <> 0 then
ShowMessage('cannot convert hello world to integer value');
end;
ziolko.
what kind of values you have in edits?
ziolko.
ziolko.
ASKER
dbedit has no caption value but text.
in your 1st example to what do I assign 'c' ??
My 'c' should be a currency edit...
in your 1st example to what do I assign 'c' ??
My 'c' should be a currency edit...
ASKER
in edits I have numbers only...
my mistake TBText has Caption...
this should work unless you have floating point values in edit or text
if TryStrToInt(dbedit1.Text,a ) and TryStrToInt(edit14.text,b) then
currencyedit37.value:= a / b;
if you have floating point use TryStrToFloat()
ziolko.
this should work unless you have floating point values in edit or text
if TryStrToInt(dbedit1.Text,a
currencyedit37.value:= a / b;
if you have floating point use TryStrToFloat()
ziolko.
ASKER
dbedit1 is currency value in the database.
in edit14 i type in (freehand) number values.
I tried (on exit of the edit14):
procedure TPostavke.Edit14Exit(Sende r: TObject);
var a, b: Integer;
c: Double;
begin
if TryStrToInt(dbedit1.Text,a ) and TryStrToInt(edit14.text,b) then
currencyedit37.value:= a / b;
end;
It does not work..
If i substitute TryStrToInt with TryStrToFloat i get :
[Error] Unit3.pas(255): There is no overloaded version of 'TryStrToFloat' that can be called with these arguments
You see I have a value of '584,65 €' in my dbedit1.
Now I want to type (example number 2 in my editbox) and when I leave the edit my currency displays
292,325...
in edit14 i type in (freehand) number values.
I tried (on exit of the edit14):
procedure TPostavke.Edit14Exit(Sende
var a, b: Integer;
c: Double;
begin
if TryStrToInt(dbedit1.Text,a
currencyedit37.value:= a / b;
end;
It does not work..
If i substitute TryStrToInt with TryStrToFloat i get :
[Error] Unit3.pas(255): There is no overloaded version of 'TryStrToFloat' that can be called with these arguments
You see I have a value of '584,65 €' in my dbedit1.
Now I want to type (example number 2 in my editbox) and when I leave the edit my currency displays
292,325...
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
procedure TPostavke.Edit14Change(Sen der: TObject);
var a: Currency;
b: double;
begin
if TryStrToCurr(dbedit1.Text, a) and TryStrToInt(edit14.text,b) then
currencyedit37.value:= a / b;
end
I get :
[Error] Unit3.pas(256): Types of actual and formal var parameters must be identical
var a: Currency;
b: double;
begin
if TryStrToCurr(dbedit1.Text,
currencyedit37.value:= a / b;
end
I get :
[Error] Unit3.pas(256): Types of actual and formal var parameters must be identical
instead of TryStrToInt use TryStrToFloat
what the ...??
i've already posted:
if TryStrToCurr(dbedit1.Text, a) and TryStrToFloat(edit14.text, b) then
currencyedit37.value:= a / b;
where did it go??
ziolko.
i've already posted:
if TryStrToCurr(dbedit1.Text,
currencyedit37.value:= a / b;
where did it go??
ziolko.
ASKER
Dont seem to work...both ways...
ASKER
I think i have figured what is the mistake here..
a queery that is the info provider for dbedit1 has the field
marked as 'currency' (it is currency in the database however)
But when I remove the field type as 'currency' in the
field rooster and set it to currency false the code :
var a: Currency;
b: integer;
begin
if TryStrToCurr(dbedit1.Text, a) and TryStrToInt(edit12.text,b) then
currencyedit37.value:= a / b;
works !
is this ok ??
a queery that is the info provider for dbedit1 has the field
marked as 'currency' (it is currency in the database however)
But when I remove the field type as 'currency' in the
field rooster and set it to currency false the code :
var a: Currency;
b: integer;
begin
if TryStrToCurr(dbedit1.Text,
currencyedit37.value:= a / b;
works !
is this ok ??
if it works it's ok:)
ziolko.
ziolko.
c: Double;
if TryStrToInt(dbtext.caption
c := b / a;
ziolko.