Poslao: 19 Avg 2007 03:01
|
offline
- LittleHacker
- Ugledni građanin
- Pridružio: 13 Apr 2007
- Poruke: 452
- Gde živiš: Beograd
|
Imam problem...
Sa net-a 'skidam' neke float-e kao string...
Ali oni nemaju '.' nego ','...
Kako da u Delphi-u taj ',' prebacim u '.'
Probao sam sa copy da izvucem ',' a da postavim '.' ali Delphi na ',' i '.' gleda kao da nisu znakovi nego ih preskace...
Neznam sta da radim...
Znam da mogu da prebacim u windows-u na ',' ali program ce biti bolji ako korisnik ne mora da menja sistemska podesavanja zbog njega...
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 19 Avg 2007 04:58
|
offline
- NuLLCoDe
- Legendarni građanin
- Đuro Glumac
- dipl. ing. informatike
- Pridružio: 08 Feb 2004
- Poruke: 3640
- Gde živiš: ApAtIn
|
Na primer da imas cifru 123,55 i hoces da je prebacis u 123.55. Oba su tipa Float.
Dakle... x:=123,55
FloatToStr(x); //Konvertuje broj u string
k:=Length(x); // odredjuje duzinu stringa [broj znakova]
for i:=1 to k do //proverava redom da jedan po jedan znak
if x[i]=',' then x[i]:='.';//ukoliko je neki znak zarez, zamenjaje ga tackom
Ovo ti je resenje te ideje kako si ti zamislio to da uradis.
Samo pazi, Ameri zarez koriste za razdvajanje hiljada, pa tako ako imas broj 5,400.22 on ce ti konvertovati u 5.400.22 i opet problem...
|
|
|
|
Poslao: 19 Avg 2007 11:38
|
offline
- Strog
- Stručni saradnik
Web programiranje
- Bojan Kopanja
- Web & Mobile developer @ ZeusSoftware
- Pridružio: 26 Jul 2003
- Poruke: 2597
- Gde živiš: Stara Pazova
|
Evo ti brzog resenja bez ikakvih for petlji ( posto ti je broj vec kao string! )
http://www.delphibasics.co.uk/RTL.asp?Name=StringReplace
Znaci samo ti treba StringReplace funkcija iz unita SysUtils i to je to. Pogledaj na ovom sajtu koji su joj parametri.
Takodje povedi racuna o ovome sto ti je NuLL rekao posto ako vec imam "," kao decimalni zarez verovatno imam i "." kao separator hiljada tako da ce ti onda ova funkcija razbucati broj kako ne treba...
Ovo pokusaj da resis sa Pos() funkcijom recimo pa ako ti je "," na vise pozicija od 1 ne vrsi ovu konveriju ( ili nesto slicno ).
U sustini ti je najjednostavnije da pormenis rucno separator iz programa i da ne razmisljas o ovome uopste ( ne moras da cackas Windows vec mozes explicitno u programu da naglasis sta hoces da ti bude separator ) i da vrlo jednostavno resis problem!
Evo ti kako mozes da resis taj problem:
http://www.delphitricks.com/source-code/misc/set_d.....mwide.html
|
|
|
|
Poslao: 19 Avg 2007 11:40
|
offline
- LittleHacker
- Ugledni građanin
- Pridružio: 13 Apr 2007
- Poruke: 452
- Gde živiš: Beograd
|
Usepo sam...
NuLL Hvala puno...
Evo da objasnim...
Znaci sa neta sam skidao float ali kao string...Znaci k := '123,32'...
Onda je trebalo da ',' zamenim '.'
I NuLL je sve lepo objasnio...
Hvala puno...
Inace skidam sa nasih servera i brojevi se krecu do 120-130...Nema hiljada....
|
|
|
|
Poslao: 19 Avg 2007 13:53
|
offline
- NuLLCoDe
- Legendarni građanin
- Đuro Glumac
- dipl. ing. informatike
- Pridružio: 08 Feb 2004
- Poruke: 3640
- Gde živiš: ApAtIn
|
Nema na cemu... tu smo da pomognemo.
Inace, ako u Control Panelu, Regional Setting stavis Srpski prikaz valuta, brojeva itd u tvom programu ce se takodje desiti takva izmena, i tada ce ti broj biti prikazivan kao 2.543,55, odnosno onako kako tebi treba.
|
|
|
|
Poslao: 19 Avg 2007 20:45
|
offline
- LittleHacker
- Ugledni građanin
- Pridružio: 13 Apr 2007
- Poruke: 452
- Gde živiš: Beograd
|
Ok, nisam to znao...Znaci moglo je i tako...
Ali vazno je da radi...
Hvala jos jednom...
|
|
|
|
Poslao: 19 Avg 2007 23:55
|
offline
- srdjos
- Zaslužni građanin
- Pridružio: 27 Sep 2005
- Poruke: 678
|
ne moraš menjati ništa u control panelu
imaš u Delphiju, Sysutils, jednu globalnu promenjivu
koja se zove DecimalSeparator
samo ime ti govori o čemu se radi
i radiš preko nje
pazi, tu se radi sa matematičkim operacijama
sa pokretnim zarezima i greške su vidljive
u krajnjim zbirovima
srdjos
|
|
|
|