Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:

ListBox a float

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: ListBox a float

Autor: Mi.Chal

20:14:47 26.08.2011

tcesky Napsal:
-------------------------------------------------------
> a hlavne pak budou videt v ruznych aplikacich
> videt ruzna data. Nebo snad Notepad v textovem
> souboru predelava oddelovace podle locale?

notepad snad nejak interpretuje nacitana data?

> To umozni uzivateli aby videl v jedne aplikaci sva
> data ve dvou formach (treba edit box na vstup
> cisla a display na prohlizeni vysledneho souboru)

uzivateli je celkem jedno, jak si aplikace uklada data, toho zajima, jestli se mu zobrazi a vytiskne to, co si zadal. Pokud si aplikace bude pro oddelovac pouzivat treba zavinace, tak to muze byt uzivateli ukradene

> Obecne lze kazisukum doporucit, aby, kdyz uz musi
> za kazdou cenu neco napadnout, chodili blejt
> jinam.

souhlas. Muzes jit treba na novinky, do tamejsi diskuzni zumpy se svym vyjadrovanim zapadnes

Citovat příspěvek

 

Re: ListBox a float

Autor: tcesky

19:07:53 26.08.2011

[ital]pro lenochy je to mozna dobre, ale uzivatelum se pak zobrazuji data jinak, nez si nastavili v regional settings, coz muze nekdy vadit
[/ital] a hlavne pak budou videt v ruznych aplikacich videt ruzna data. Nebo snad Notepad v textovem souboru predelava oddelovace podle locale?



[ital]v tom pripade je lepsi zapis resit s explicitnim urcenim oddelovace desetinnych mist nez kvuli importum/exportum prasit zobrazeni v UI [/ital]

To umozni uzivateli aby videl v jedne aplikaci sva data ve dvou formach (treba edit box na vstup cisla a display na prohlizeni vysledneho souboru)


Obecne lze kazisukum doporucit, aby, kdyz uz musi za kazdou cenu neco napadnout, chodili blejt jinam.

Zdravim

TC

Citovat příspěvek

 

Re: ListBox a float

Autor: Mi.Chal

17:57:01 26.08.2011

tcesky Napsal:
-------------------------------------------------------
> V dobe kdy jsem delal sber a vymenu dat mezi
> evropskymi zememi (43 zemi) jsem to resil tak, ze
> primo ve winmain jsem nastavil
DecimalSeparator =
> '.';
>
> ... a dalsi promenne
>
> a mel jsem jistotu, ze nezavisle na tom kde se to
> pusti, se bude program chovat identicky

pro lenochy je to mozna dobre, ale uzivatelum se pak zobrazuji data jinak, nez si nastavili v regional settings, coz muze nekdy vadit

> a hlavne ze bude generovat textove soubory v identickem
> formatu, ktere ostatni vzdy prectou a ktere
> odpovidaji specifikaci ktera vznikla mimo muj
> software.

v tom pripade je lepsi zapis resit s explicitnim urcenim oddelovace desetinnych mist nez kvuli importum/exportum prasit zobrazeni v UI

> Analogicky si asi muzes ve winmain nebo v hlavnim
> formu nastavit .... na hodnotu kterou prectes
> ze systemu.

DecimalSeparator se nastavuje pri spousteni aplikace podle toho, co je nastavene v systemu. Takze cist to ze systemu a znovu nastavovat je ponekud nadbytecne

> Takhle bych to delal i dnes, samozrejme kdybych
> byl tak posetily, ze bych u BCB setrvaval. Duvod
> je jednoduchy, nelze totiz nijak zarucit ze pri
> pozdejsich upravach nikkdo nikde nebude moci
> pouzit funkci jako printf, ktera system ignoruje.

treba je chovani printf definovane nejakym pochybnym standardem, ktery rika, co se tam ma dat...

Citovat příspěvek

 

Re: ListBox a float

Autor: tcesky

11:17:19 25.08.2011

[ital]Tak doufám, že je to přesvědčivý důkaz, že funkce printf systémové nastavení čárky/tečky nepoužívá. [/ital]

O tom jem nikdy nepolemizoval. BCB jako nastroj z devadesatych let minuleho stoleti v rade funkci nema povedomi o vecech jako je locale.

Protoze v dobe jeho vzniku autori nepovazovali za nutne vazat BCB se systemovym nastavenim a prave proto zavedli do BCB promenne jako DecimalSeparator a podobne. Postupem casu se jim to vymklo z rukou a tak nektere funkce se chovaji podle nastaveni BCB aplikace a nektere podle nastaveni systemu.

V dobe kdy jsem delal sber a vymenu dat mezi evropskymi zememi (43 zemi) jsem to resil tak, ze primo ve winmain jsem nastavil
[code]
DecimalSeparator = '.';

... a dalsi promenne
[/code]

a mel jsem jistotu, ze nezavisle na tom kde se to pusti, se bude program chovat identicky a hlavne, ze bude generovat textove soubory v identickem formatu, ktere ostatni vzdy prectou a ktere odpovidaji specifikaci ktera vznikla mimo muj software.

Analogicky si asi muzes ve winmain nebo v hlavnim formu nastavit DecimalSeparator budto na carku (strasna prasarna) nebo na hodnotu kterou prectes ze systemu. Pisu "asi", protoze timto smerem jsem to v minulosti nikdy nezkousel a v soucasnosti to nemam kde vyzkouset.

Takhle bych to delal i dnes, samozrejme kdybych byl tak posetily, ze bych u BCB setrvaval. Duvod je jednoduchy, nelze totiz nijak zarucit ze pri pozdejsich upravach nikkdo nikde nebude moci pouzit funkci jako printf, ktera system ignoruje.

Zdravim

TC

Citovat příspěvek

 

Re: ListBox a float

Autor: Mi.Chal

22:35:04 24.08.2011

Michal12345678910 Napsal:
-------------------------------------------------------
> omlouvám se, špatně jsem to přečetl...
>
> něco konkrétnějšího, v případě že posílám dotaz na
> SQL (jako string) a použiji fci
>
> FormatFloat("0.00",proměná), musím mít systémové
> nastavení seperátoru v systému na "." jinak mi
> databáze vrací chybu.

pokud neco takoveho opravdu pouzivas pri praci s databazi, tak je lepsi to vyhodit a pouzivat parametrizovane dotazy. Pak te nejake nastaveni oddelovacu desetin a formatu casu nemusi moc zajimat

Citovat příspěvek

 

Re: ListBox a float

Autor: Jada

20:51:32 24.08.2011

Michal12345678910 Napsal:
-------------------------------------------------------
> něco konkrétnějšího, v případě že posílám dotaz na
> SQL (jako string) a použiji fci
>
> FormatFloat("0.00",proměná), musím mít systémové
> nastavení seperátoru v systému na "." jinak mi
> databáze vrací chybu.
>
> což odporuje tvému tvrzení a zmíněnému pokusu

Myslel jsem, že úkolem bylo zobrazit desetinné číslo uživateli, nikoli poslat číslo ve stringu do databáze, či volat 3rd party knihovny.

Citovat příspěvek

 

Re: ListBox a float

Autor: tcesky

20:30:49 24.08.2011

Ano, k tomu slouzi systemova konstanta BCB DecimalSeparator.

Zdravim

TC

Citovat příspěvek

 

Re: ListBox a float

Autor: Michal12345678910

20:28:04 24.08.2011

omlouvám se, špatně jsem to přečetl...

něco konkrétnějšího, v případě že posílám dotaz na SQL (jako string) a použiji fci

FormatFloat("0.00",proměná), musím mít systémové nastavení seperátoru v systému na "." jinak mi databáze vrací chybu.

což odporuje tvému tvrzení a zmíněnému pokusu

Nepoužívám teda String::float a String::sffNumber, omezil jsem se jen na FloatToStr a FormatFloat - nic víc, nic míň

Citovat příspěvek

 

Re: ListBox a float

Autor: Michal12345678910

20:22:23 24.08.2011

proč vlastně používáš printf? můžeš udělat FloatToString(FormatFloat(hodnota,parametry));?

co ti vrátí tato možnost?

Citovat příspěvek

 

Re: ListBox a float

Autor: Jada

20:00:32 24.08.2011

Tak kluci, vrátil jsem se k původnímu problému formátování čísel s desetinnou tečkou v C++ Builderu. K diskuzi o smyslu této diskuze se vyjadřovat nechci.

Udělal jsem si pokus:
[code]
double d = 5.5;
String s1;
s1.printf(L"%10.2f", d);
String s2 = String::FloatToStrF(d, String::sffNumber, 10, 2) ;
Edit1->Text = s1 + L" nebo " + s2 + L" a separator je " + DecimalSeparator;
[/code]
a výsledek?
[code]" 5.50 nebo 5,50 a separator je ,"[/code]
Tak doufám, že je to přesvědčivý důkaz, že funkce printf systémové nastavení čárky/tečky nepoužívá.

Citovat příspěvek

 

Re: ListBox a float

Autor: Michal12345678910

19:33:35 24.08.2011

[ital]výzam [/ital] - děkuji za lekci z češtiny ale je to naprosto zbytečné plýtvání silami


prosím neplést si pojem řečníka (který může hovořit za více jedinců než jen sám za sebe) a počet lidí kteří říkají jednu a tutéž věc - je to poněkud zavádějí, nepřesné a pro nekované velice matoucí

Citovat příspěvek

 

Re: ListBox a float

Autor: tcesky

17:33:18 24.08.2011

[ital]a pokud to řekl jen jeden pak nemá velký výzam co řekl [/ital] V pipade, ze se "výzam" receneho odviji od poctu recniku a ne od kvality receneho, tak hodnota "výzamu" nebude velka.

Zdravim

TC

Citovat příspěvek

 

Re: ListBox a float

Autor: Michal12345678910

16:37:49 24.08.2011

[ital]Jeden by rekl, zde v kontextu puvodni otazky je predjimajici a potencialne zavadejici. [/ital] - neřekl bych

a pokud to řekl jen jeden pak nemá velký výzam co řekl

Citovat příspěvek

 

Re: ListBox a float

Autor: tcesky

14:44:40 24.08.2011

[ital]a v kontextu [bold]na původní otázku[/bold] je také irelevantní? [/ital]

Jeden by rekl, zde v kontextu puvodni otazky je predjimajici a potencialne zavadejici.

Zdravim

TC

Citovat příspěvek

 

Re: ListBox a float

Autor: Michal12345678910

14:39:09 24.08.2011

[ital]Tento povzdech je v kontextu http://forum.builder.cz/read.php?12,3330641,3330751#msg-3330751 ponekud irelevantni. [/ital]

a v kontextu na původní otázku je také irelevantní?

Citovat příspěvek

 

Re: ListBox a float

Autor: tcesky

9:03:42 24.08.2011

[ital]jestli polužíváš tečku nebo čárku si nastavíš v globálním nastavení svého operačního systému, [/ital] Tento povzdech je v kontextu http://forum.builder.cz/read.php?12,3330641,3330751#msg-3330751 ponekud irelevantni.

Zdravim

TC

Citovat příspěvek

 

Re: ListBox a float

Autor: Michal12345678910

8:49:34 24.08.2011

[ital]Tak to asi poslednich dvacet let neziju v Evrope. Po celou tu dobu jsem videl, ze technicky orientovany software dava prednost tecce a to, svete div se, i ve Francii. [/ital]


mám za to že je to ozázka programu zda to sám uživateli zobrazí jinak - viz excel, ale v komunikaci např. s sql serverama se posílá to co je v globálním nastavení seperátoru, pokud někdo používá nějakou nadstavbu tak to nemusí řešit - ty si to většinou ohlídají bez ohledu na to zda si uživatel zobrazuje čárku nebo tečku

Citovat příspěvek

 

Re: ListBox a float

Autor: Michal12345678910

8:46:30 24.08.2011

jestli polužíváš tečku nebo čárku si nastavíš v globálním nastavení svého operačního systému, ovšem pozor pokud to číslo posíláš cizím skriptům nebo databázím. Taky to musím přehazovat z čárky (české) na tečku (en pro db)

Citovat příspěvek

 

Re: ListBox a float

Autor: tcesky

8:43:27 24.08.2011

[ital]Pokud jsem se ohledně sprintf spletl, tak sorry. [/ital]

Nespletl. Jenom jsi opomel globalni promennou DecimalSeparator


[ital]u nás (i jinde v Evropě) by tam měla být čárka.[/ital]

Tak to asi poslednich dvacet let neziju v Evrope. Po celou tu dobu jsem videl, ze technicky orientovany software dava prednost tecce a to, svete div se, i ve Francii.


Zdravim

TC

Citovat příspěvek

 

Re: ListBox a float

Autor: StandaM

6:36:12 24.08.2011

FormatFloat() by taky melo fungovat.

Citovat příspěvek

 

Re: ListBox a float

Autor: Jada

21:13:48 23.08.2011

Mám pocit, že funkce sprintf vkládá vždy desetinnou tečku, u nás (i jinde v Evropě) by tam měla být čárka. Sám používám třeba:

UnicodeString::FloatToStrF(d, UnicodeString::sffNumber, 10, 2)

Pokud jsem se ohledně sprintf spletl, tak sorry.

Citovat příspěvek

 

Re: ListBox a float

Autor: tcesky

8:10:47 23.08.2011

[code]
AnsiString s;
s.printf("%10.2f",d);
lb->Items->Add(s);
[/code]

Regards

TC

Citovat příspěvek

 

ListBox a float

Autor: Set

21:29:05 22.08.2011

Dobrý den. Chtěl bych se zeptat jak do ListBoxu zapsat desetinné číslo zaokrouhlené na př. 2 desetinná místa. Zaokrouhlit bych to uměl, ale jak to vypsat tak aby tam byly pouze ty dvě desetiná místa. děkuji Set

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: