Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 10 odgovora
  • 4.254 pregleda

Najnovija ↓

matematicke opeacije - delphi7 15.10.2006. u 12:28 · pre 244 meseca #1
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?
Potpis
#include <iostream.h>
void main()
{
cout << "Pozdrav...";
}
Re: matematicke opeacije - delphi7 15.10.2006. u 13:14 · pre 244 meseca #2
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....
Potpis
Someone's sitting in the shade today because someone planted a tree a long time ago.
Re: matematicke opeacije - delphi7 15.10.2006. u 18:38 · pre 244 meseca #3
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
Potpis
#include <iostream.h>
void main()
{
cout << "Pozdrav...";
}
Re: matematicke opeacije - delphi7 15.10.2006. u 19:11 · pre 244 meseca #4
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;
Potpis
ex Strog

http://www.zeussoftware.rs
Re: matematicke opeacije - delphi7 15.10.2006. u 20:12 · pre 244 meseca #5
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!
:)
Potpis
Play Store
Re: matematicke opeacije - delphi7 16.10.2006. u 15:12 · pre 244 meseca #7
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?
Potpis
#include <iostream.h>
void main()
{
cout << "Pozdrav...";
}
Re: matematicke opeacije - delphi7 16.10.2006. u 21:40 · pre 244 meseca #8
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!
Potpis
IN VINO VOMITUS
Re: matematicke opeacije - delphi7 16.10.2006. u 22:00 · pre 244 meseca #9
...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.


Potpis
IN VINO VOMITUS
Re: matematicke opeacije - delphi7 16.10.2006. u 23:20 · pre 244 meseca #10
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);


Re: matematicke opeacije - delphi7 17.10.2006. u 01:06 · pre 243 meseca #11
> 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.
Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme