[ nnn @ 22.04.2005. 09:32 ] @
Cao svima
Trenutno pravim neki program za neko knjigovodstvo i problem je kad svi unesete broj 50 on treba da proveri da li ima nesto iza zareza i ako nema da doda doda 00 tako da bude 50.00, isto tako treba ako unesete 50.4 da napravi 50.40.
[ Vic @ 22.04.2005. 09:54 ] @
Pojasni malo sire.. Koju bazu koristis. Takve stvari mozes da definises u bazi
[ nnn @ 22.04.2005. 10:14 ] @
Ne koristim bazu nego sam defininisao
Code:

type
type
        nnn = record
        ime:String[20];
        adresa:String[40];
        sifra:string[7];
        ssf:string[7];
        stanje:real48;
        end;
type
        frm = record
        opis:string[40];
        Duguje:real48;
        potrazuje:real48;
        datum:string[10];
        end;
type
        unos = file of frm;

var
firme: file of nnn;
  sifr:nnn;
  unosi: array[0..1000] of unos;
  uns:frm;

To nije program za knjigovodstvo nego za vodjenje evidencije poslovnih partnera, koliko oni duguju/potrazuju $. To radim caletu treba mu za njegovu firmu. E sad imam jedan form na kome imam nekoliko Tedit i jedal listView, sad u edite uneses podatke uplate isplate i problem mi je kako da napravim da mi uvek pise sve na dve decimale??
[ Vic @ 22.04.2005. 10:25 ] @
Nemam predstavu sta pokusavas da uradis bez baza, ali uvek mozes da koristis sledece: floattostrf(nekireal,ffnumber,15,2) i dobices format na ekranu ###,###.##. Mada mislim da ti je pametnije da napravis neku bazu.
[ Bojan Kopanja @ 22.04.2005. 10:32 ] @
Hm, ako sam te dobro rayumeo ovo ti je resenje:

jednostavno napravi da ti se recimo onaj broj "potrazuje" stampa kao
Code:
frm.potrazuje:48:2
i automatski ce ti se dodavati nule iza zareza ako nema nista, tj samo jedna nula ako vec ima jedan br iza zareza ...

BTW nisi rekao da li je Pascal ili Delphi u pitanju ... Ja tipujem na Pascal zbog nacina deklarisanja svega ovoga ( jer zasto komplikovati ovako kad je u Delphiju fantasticno lako raditi sa bazama ), ali ne vidim razlog da ni u Delphiju ne radi kako treba ( samo ces trebati malo da prilagodis posto se brojevi ne ispisuju bas tako, ali za to konsultuj Delphijev help i nece ti biti problem )
[ nnn @ 22.04.2005. 10:45 ] @
Hvala uspeo sam sa ovim sto je Vic napisao, to mi je jos zgodnije jer mi je i to sa zarezima trebalo, nego kad ga budem vracao iz stringa u float 5,346.00 oce mi raditi? Radim u delphi 6 ne radim sa bazama zato sto ne znam. Ako hocete ja ovde imam jedan programcic koji nije gotov ali radi osnovne funkcuje sto mi treba, da ga ja okacim a da neko uradi nesto ekvivalentno sa bazama, tako d i ja kao i drugi mogli da naucimo nesto.
[ Toyo @ 22.04.2005. 10:55 ] @
Probaj sa ovim:
Code:
  
edit1.text:=format('%10.2f',[strtofloat(edit1.text)]);
[ Vic @ 22.04.2005. 10:57 ] @
Rado bih ti pomogao ali sam slab sa vremenom. Sto se tice vracanja.. matematicke operacije koristis regularno, samo sto za prikaz koristis floattostrf. Pogledaj u Delphi helpu sve je lepo objasnjeno. Davno nisam koristio floattostrf i strtofloat, ali znam da lako i dobro zavrsava posao
[ Bojan Kopanja @ 22.04.2005. 11:51 ] @
E jbg, mene si presao za Delphi ... Frugi put odmah reci u čemu radiš da se ne "izlećem" više ...

BTW mogu ja da prebacim taj prog da radi sa bazama, pošto od sutra završavam sa ispitima za sada ...
[ nnn @ 22.04.2005. 21:38 ] @
Imam jos jedan problem na jednom formu imam jedan TListView tj evo slika:


Nego kad unesem "lepe" vrednbosti tipa xxxx.xx i kad treba u saldu da ih oduzme dobijem xxxx.xx000000000yy
evo coda kad pritisnem dugme
Code:

procedure TForm2.Button1Click(Sender: TObject);
var
iii:TListItem;
begin
if edug.Text='' then edug.Text:='0.00'; //da li sam ostavio prazno
if epot.Text='' then epot.Text:='0.00';
uns.opis:=eop.Text;
uns.datum:=edat.Text;
uns.Duguje:=strtofloat(edug.text);
uns.potrazuje:=StrToFloat(epot.text);
seek(unosi[rb],filesize(unosi[rb])); // ide na kraj fajla
write(unosi[rb],uns);// upisujem zapis o unosu u fajl(uns.xxxx)
seek(firme,k);
read(firme,sifr); //citam predhodni saldo
sifr.stanje:=sifr.stanje+uns.Duguje-uns.potrazuje; //Ovde oduziam da bi dobio saldo
seek(firme,k);
write(firme,sifr); //zapisujem novo stanje
stf.Caption:='Trenutno stanje  ' +floattostr(sifr.stanje);
with nnn do
        begin
        iii:=Items.Add;
        iii.Caption:=inttostr(o);
        iii.SubItems.Add(eop.Text);
        iii.SubItems.add(edat.Text);
        iii.SubItems.Add(edug.Text);
        iii.SubItems.add(epot.Text);
                o:=o+1;
        iii.SubItems.add(FloatToStr(sifr.stanje));
        end;
eop.Text:='';
//edat.Text:='';
edug.Text:='';
epot.Text:='';
end;
[ Toyo @ 22.04.2005. 22:59 ] @
Ajde probaj ovako:

Umesto ove 2 linje:
Code:

uns.Duguje:=strtofloat(edug.text);
uns.potrazuje:=StrToFloat(epot.text);


stavi ove 4:

Code:

uns.Duguje:=roundto(strtofloat(edug.text),-2);
uns.potrazuje:=roundto(StrToFloat(epot.text),-2);
edug.text:=format('%10.2f',[uns.duguje]);
epot.text:=format('%10.2f',[uns.potrazuje]);

[ Vic @ 23.04.2005. 18:57 ] @
Vidim da si koristio opciju floattostr... Koristi floattostrF
[ nnn @ 23.04.2005. 19:05 ] @
Citat:
Vic: Vidim da si koristio opciju floattostr... Koristi floattostrF


Hvala ti za to prepravio sam kasnije. nego sad me zeza sto mi daje vrednosti tipa 5.5600000000096 ro sam u C izbegavao tako sto sam umesto float stavio double. Da uradim i sada tako ili nesto drugo?