Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

matematicke opeacije - delphi7

[es] :: Pascal / Delphi / Kylix :: matematicke opeacije - delphi7

[ Pregleda: 3220 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

MACTEPx

Član broj: 47593
Poruke: 341
*.dialup.neobee.net.



+5 Profil

icon matematicke opeacije - delphi715.10.2006. u 11:28 - pre 213 meseci
prilikom sabiranja(oduzimanja, mnozenja...) integer brojeva sve radi normalo u delphi 7 ali kada unesem neki decimalan broj (real) program se srusi. ovo se ne desava u delphi 3 sa istim kodom!!! gde je greska?
#include <iostream.h>
void main()
{
cout << "Pozdrav...";
}
 
Odgovor na temu

Miloš Baić
Miloš Baić
ERP (Dynamics NAV) programer
Beograd

Član broj: 72468
Poruke: 1155
*.kalik.info.



Profil

icon Re: matematicke opeacije - delphi715.10.2006. u 12:14 - pre 213 meseci
Pozdrav,

malo si informacija dao o problemu, ali ovako odokativno, ako koristiš TEdit komponentu, da li si probao sa funkcijom StrToFloat!?!
BTW, za matematičke probleme možeš koristiti i Math unit....

Someone's sitting in the shade today because someone planted a tree a long time ago.
 
Odgovor na temu

MACTEPx

Član broj: 47593
Poruke: 341
*.com
Via: [es] mailing liste



+5 Profil

icon Re: matematicke opeacije - delphi715.10.2006. u 17:38 - pre 213 meseci
Code:

procedure TForm1.Button1Click(Sender: TObject);
var
l1,l2:real;
begin
if ((edit1.Text<>'') and (edit2.Text<>'')) then
begin
l1:=ln(strtofloat(edit1.Text));
l2:=ln(strtofloat(edit2.Text));
label2.Caption:=floattostr(l1/l2);
end
else
showmessage('Unesi podatke!');
end;

evo jednog primera koji ne radi
#include <iostream.h>
void main()
{
cout << "Pozdrav...";
}
 
Odgovor na temu

Bojan Kopanja
Bojan Kopanja
Senior Web Developer, ZeusSoftware
Stara Pazova

Član broj: 6155
Poruke: 507
80.93.240.*

ICQ: 346697685
Sajt: www.zeussoftware.rs


Profil

icon Re: matematicke opeacije - delphi715.10.2006. u 18:11 - pre 213 meseci
Evo ovo radi :

Code:
procedure TForm1.Button1Click(Sender: TObject);
var
l1,l2:real;
begin
if ((edit1.Text<>'') and (edit2.Text<>'')) then
begin
l1:=strtofloat(edit1.Text);
l2:=strtofloat(edit2.Text);
label2.Caption:=floattostr(l1/l2);
end
else
showmessage('Unesi podatke!');
end;

 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
82.208.201.*

ICQ: 246436949


+10 Profil

icon Re: matematicke opeacije - delphi715.10.2006. u 19:12 - pre 213 meseci
Bilo bi lepo i kad bi rekao koju gresku ti izbacuje?

Ako ti izbaci gresku zbog delenja s nulom, to onda nije greska do Delphia... jednostavno ne moze da se deli s nulom.
Citat:
Matematika je jasna! Dvaput nista je nista, crva nije ni bilo!
:)
 
Odgovor na temu

_deran_

Član broj: 69493
Poruke: 252
*.sksyu.net.



+1 Profil

icon Re: matematicke opeacije - delphi715.10.2006. u 22:51 - pre 213 meseci
Probaj tacku umesto zareza (ili obrnuto)...
 
Odgovor na temu

MACTEPx

Član broj: 47593
Poruke: 341
*.com
Via: [es] mailing liste



+5 Profil

icon Re: matematicke opeacije - delphi716.10.2006. u 14:12 - pre 213 meseci
Citat:
Probaj tacku umesto zareza (ili obrnuto)...
u tome je bio problem, hvala! u vb trazi tacku(.) kao zarez, a u
delphi obrnuto. malo je glupo da svaki put kucam zarez kad mi je brze da u
numerickom delu tastature otkucam tacku - moze li to nekako da se ispravi?
#include <iostream.h>
void main()
{
cout << "Pozdrav...";
}
 
Odgovor na temu

Srdjan_exe
Srdjan Pavlovic

Član broj: 117082
Poruke: 60
*.ptt.yu.



Profil

icon Re: matematicke opeacije - delphi716.10.2006. u 20:40 - pre 213 meseci
mozes da taj edit unos odredis kao tip-string, a onda u kodu pomocu nekoliko string funkcija (imas u helpu sve) proveris da li je tacka bilo gde u unetom stringu ili zarez, ako je tacka onda samo zamesnis taj karakter sa zarezom i dalje tako dobijeni string prosledjujes u recimo StrToFloat funkciju.
(iskreno i mene je taj zarez iznervirao odmah cim sam uzeo delfi da ucim)...


Ovo je verovatno brute-force resenje, garant ima jednostavnijih :)

Pozdrav!
IN VINO VOMITUS
 
Odgovor na temu

Srdjan_exe
Srdjan Pavlovic

Član broj: 117082
Poruke: 60
*.ptt.yu.



Profil

icon Re: matematicke opeacije - delphi716.10.2006. u 21:00 - pre 213 meseci
...naravno i deljenje sa nulom je uvek problem jer se greska uocava tek da se ta operacija pokusa izvesti
a ne pri kompajliranju programa. To resis iz koda, recimo:

If edit2.text='0' then

begin
edit2.text:='Vrednost ovog polja ne sme biti NULA!'
Exit

else

delilac_OK:= True;

.....
....


(recimo, tako nekako)

A ono sa seckanjem stringa:
1. Iseces string pre karaktera tacka ili zarez i dodelis to nekom novom stringu (str_prvi_deo_broja)
2. Iseces string posle karaktera tacka ili zarez i dodelis to opet nekom novom stringu (str_drugii_deo_broja)
3 Novi_string:= str_prvi_deo_broja + ',' + str_drugi_deo_broja
4 Neka_Promenljiva:= FloatToStr(Novi_string)

Samo vidi te funkcije za operacije sa stringovima, mislim nazive i sintaksu.



IN VINO VOMITUS
 
Odgovor na temu

_deran_

Član broj: 69493
Poruke: 252
*.suonline.net.



+1 Profil

icon Re: matematicke opeacije - delphi716.10.2006. u 22:20 - pre 213 meseci
ili:

Code:


 uses   ..., strutils, ...


 edit1.Text:=ansireplacestr(edit1.Text,',',decimalseparator);           // jedno od ova dva je nepotrebno ali ne zna se koji pa ubaci oba
 edit1.Text:=ansireplacestr(edit1.Text,'.',decimalseparator);


 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: matematicke opeacije - delphi717.10.2006. u 00:06 - pre 213 meseci
> edit1.Text:=ansireplacestr(edit1.Text,',',decimalseparator); // jedno od ova dva je nepotrebno ali ne zna se koji pa ubaci oba
> edit1.Text:=ansireplacestr(edit1.Text,'.',decimalseparator);



Code:


function StringToExtended(AValue: string; var Success: Boolean): Extended;
var
  i: Integer;
  WrongDecimalSeperator: Char;
begin
  // U slucaju da u stringu pored decimal postoje i thousand separatori onda ih prvo uklanjamo
  if StrCharsCount(AValue, [ThousandSeparator, DecimalSeparator]) > 1 then
    AValue := StrRemoveChars(AValue, [ThousandSeparator]);

  // U regional podesavanjima ControlPanela kao dacimalni znak moze biti navedeno npr.
  // ',' a korisnik moze uneti decimalni broj sa '.'
  // Ovde se prvo, ako treba, menja decimalni znak a potom se string pretvara u float
  // broj i ako dodje do greske to se i prijavi
  if DecimalSeparator = ',' then
    WrongDecimalSeperator := '.'
  else
    WrongDecimalSeperator := ',';

  for i := 1 to Length(AValue) do
  begin
    if AValue[i] = WrongDecimalSeperator then
    begin
      AValue[i] := DecimalSeparator;
      Break;
    end;
  end;

  Result := 0.0;
  Success := TextToFloat(PChar(AValue), Result, fvExtended);
end;



Funkcija se može dalje proširiti tako da obuhvati i proizvoljne kombinacije separatora hiljada i decimala.
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: matematicke opeacije - delphi7

[ Pregleda: 3220 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.