-
11. Data: 2010-02-08 22:23:19
Temat: Re: BCB Moj ulubiony kod;)
Od: "Stachu 'Dozzie' K." <d...@g...eat.some.screws.spammer.invalid>
On 2010-02-08, Bastion <b...@m...pl> wrote:
[...]
>>>> Ciekawe czy ktos zgadnie co oblicza ta prosta procedura:
>>>
>>> _Koszmarny_ sposob na
>>
>> ....
>>>
>>> U kogo to znalazles?
>>
>> Cos jest w srodowiskach VCL (tzn BCB & D) ze ludzie zmiennych nie powoluja tylko
trzymaja niby-zmienne na kontrolkach GUI,
>> spotykam to.
>> Skad taki zwyczaj moze pochodzic?
>
> Po co trzymac wartosc zmiennych w 2 miejscach? Masz za duzo pamieci RAM?
Masz za mało pamięci RAM? To po co korzystasz z BCB/VCL?
Niekonsekwentnie trochę. Jeśli używasz takiej krowy, to dwa kilobajty
dodatkowych zmiennych nijak nie wpłyną na pamięciożerność.
> Pierwszy raz zapamietujesz wyliczona wartosc w zmiennych lokalnych a
> nastepnie w propertisach kontrolek VCL?
> Tak to sobie wyobrazasz?
Wynik pośredni zapamiętujesz w zmiennej tymczasowej, a potem rezultat
w docelowej. A pola w kontrolce w ogóle nie są właściwym miejscem do
*trzymania* danych, tylko do ich *prezentowania*.
--
Secunia non olet.
Stanislaw Klekot
-
12. Data: 2010-02-08 22:48:47
Temat: Re: BCB Moj ulubiony kod;)
Od: bartekltg <b...@g...com>
On 8 Lut, 22:58, "Bastion" <b...@m...pl> wrote:
> 1) To nie jest sposob na wyliczenie stanu konta ale jestes blisko.
> 2) Czy kod jest lady? Raczej, formalnie, maksymalnie uproszczony.
Daleko mu do maksymalnego uproszczenia. Ciagle odczytywanie
i zapisywanie do kontrolki nie pomaga w wydajnosci (tu nieistotnej).
StrToFloat(StringGrid1->Cells[1][i-1]) +StrToFloat(StringGrid1-
>Cells[1][i-1])*0.1
to to samo co StrToFloat(StringGrid1->Cells[1][i-1])*1.1
Calosc wygladala by sensowniej tak:
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
float bla=4000;
StringGrid1->Cells[1][0]=FloatToStr(bla);
for(int i=1; i<21;i++)
{
StringGrid1->Cells[0][i]=FloatToStr(2010+i);
bla*=1.1;
StringGrid1->Cells[1][i]=FloatToStr (bla);
}
}
> 3) Nie nie interesuje mnie "kwota w roku 2020," tylko w roku 2030
racja
> 4) " czyli 4000*1.1^20, niecale 27kzl.". Nie procedura daje inny wynik
Inna kwota? Czy moze chodzi o to, ze wypelnia tabelke?
pzdr
bartekltg
-
13. Data: 2010-02-08 22:55:59
Temat: Re: BCB Moj ulubiony kod;)
Od: "Bastion" <b...@m...pl>
Uzytkownik "bartekltg" <b...@g...com> napisal w wiadomosci
news:7420f959-da09-4691-ad5b-0f1e53f875c8@c4g2000yqa
.googlegroups.com...
On 8 Lut, 22:58, "Bastion" <b...@m...pl> wrote:
> 1) To nie jest sposob na wyliczenie stanu konta ale jestes blisko.
> 2) Czy kod jest lady? Raczej, formalnie, maksymalnie uproszczony.
Daleko mu do maksymalnego uproszczenia. Ciagle odczytywanie
i zapisywanie do kontrolki nie pomaga w wydajnosci (tu nieistotnej).
StrToFloat(StringGrid1->Cells[1][i-1]) +StrToFloat(StringGrid1-
>Cells[1][i-1])*0.1
to to samo co StrToFloat(StringGrid1->Cells[1][i-1])*1.1
Calosc wygladala by sensowniej tak:
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
float bla=4000;
StringGrid1->Cells[1][0]=FloatToStr(bla);
for(int i=1; i<21;i++)
{
StringGrid1->Cells[0][i]=FloatToStr(2010+i);
bla*=1.1;
StringGrid1->Cells[1][i]=FloatToStr (bla);
}
}
Chyba masz
-
14. Data: 2010-02-09 05:19:05
Temat: Re: BCB Moj ulubiony kod;)
Od: Jacek Czerwinski <...@...z.pl>
Bastion pisze:
> Użytkownik "Mikolaj Rydzewski" <m...@c...pl> napisał w wiadomości
news:hkoq0a$gni$1@news2.ipartners.pl...
>> Jacek Czerwinski wrote:
>>> Cos jest w srodowiskach VCL (tzn BCB & D) ze ludzie zmiennych nie powoluja tylko
trzymaja niby-zmienne na kontrolkach GUI,
>>> spotykam to.
>>> Skad taki zwyczaj moze pochodzic?
>> IMO to nie zwyczaj, tylko efekt prostoty środowiska. Klikać programy zaczynają
osoby bez należytego doświadczenia, bez dobrych
>> praktyk.
>
> Troche mnie rozsmieszasz. Podaj prawidlowe i (Twoim zdaniem ladniejsze)
> rozwiazanie w/w problemu w BCB.
a) nazwane (a nie anonimowe) zmienne o nazwach i typach odpowiednich dla
problemu. Tego uczą na początku - o ile ktoś się systematycznie edukował
a nie nie kopiował z wizardów.
b)
> for(int i=1; i<21;i++)
wg mnie najgorszy sposób napisania że chodzi o 20x. Dla mnie ten autor
nigdy nie wykształcił się w C, kopiował z Pascala. Fragment typowy dla
kodu z BCB.
> FloatToStr
Po trzecie jak już bronisz BCB to do pieniążków ma Currency (tu jest
symulacja, więc 'chyba' nie dokładne obliczenie, ale wspominam)
> StrToFloat(FloatToStr).
Pobaw się formatami międzynarodowymi, to może byc 'ciekawe'. Ostatnie
cyfry znaczące też ciekawe. BCB "lepiej" zaokrągla od reszty branży.
O kosztach wydajnościowych konwersji tu koledzy pisali.
O separacji algorytmu, GUI i danych, MVC itd to "rasowego" użytkownika
myszki w BCB nie tylko nie da sie przekonać, ale wręcz nie zrozumie o
czym mowa.
W sumie, dzięki że bronisz czegoś co nie do obronienia, bo pokazuje że
"subkultura BCB" nie przyśniła nam się ale istnieje.
-
15. Data: 2010-02-09 06:24:41
Temat: Re: BCB Moj ulubiony kod;)
Od: Wojciech Muła <w...@p...null.onet.pl.invalid>
"Bastion" <b...@m...pl> wrote:
> Po co trzymac wartosc zmiennych w 2 miejscach? Masz za duzo pamieci RAM?
> Pierwszy raz zapamietujesz wyliczona wartosc w zmiennych lokalnych a
> nastepnie w propertisach kontrolek VCL?
> Tak to sobie wyobrazasz?
Zasadniczo elementy GUI nie służą do zapamiętywania wartości programu. Można by
przymknąć oko, gdyby to były jakieś jednorazowe rzeczy - np. użytkownik wpisuje
ścieżkę do pliku w jakieś kontrolce i ma kliknąć ok lub anuluj, wtedy rzeczywiście
mały jest sens wprowadzania nowej zmiennej dla pojedynczej wartości. Jednak przykład
który pokazałeś to jest okropna pornografia. Konwertowanie 100 razy łańcucha znaków
na liczbę i odwrotnie powinno być wykrywane przez kompilator, z konsekwencją
automatycznego skasowanie pliku źródłowego. :)
w.
--
- Czym różni się wielbłąd jednogarbny od dwugarbnego?
- To co wielbłąd dwugarbny ma w drugim garbie, jednogarbny ma w dupie.
-
16. Data: 2010-02-09 08:45:21
Temat: Re: BCB Moj ulubiony kod;)
Od: WRonX <w...@-...wronx.net>
Jacek Czerwinski pisze:
> b)
>> for(int i=1; i<21;i++)
> wg mnie najgorszy sposób napisania że chodzi o 20x. Dla mnie ten autor
> nigdy nie wykształcił się w C, kopiował z Pascala. Fragment typowy dla
> kodu z BCB.
Mozesz to wytlumaczyc PHPwcowi? :) Pytam z czystej ciekawosci.
Pozdrawiam.
--
[= WRonX =] [= W...@-...NET =] [= http://WRonX.NET =]
[= GCS/CC d->++ s+:- a- C++++$ U P>++ L+ !E W+++$ N++(+++) =]
[= !o-- K-? w++$ !O !M- !V-- PS+ PE !Y !PGP !t !5 X++ R++ =]
[= tv+ b+++ DI++ D+ G+ e+++ h--->---- r+++ y? =]
-
17. Data: 2010-02-09 10:11:46
Temat: Re: BCB Moj ulubiony kod;)
Od: Jacek Czerwinski <...@...z.pl>
WRonX pisze:
> Jacek Czerwinski pisze:
>
>> b)
>>> for(int i=1; i<21;i++)
>> wg mnie najgorszy sposób napisania że chodzi o 20x. Dla mnie ten autor
>> nigdy nie wykształcił się w C, kopiował z Pascala. Fragment typowy dla
>> kodu z BCB.
>
> Mozesz to wytlumaczyc PHPwcowi? :) Pytam z czystej ciekawosci.
obudź się o 3 w nocy i powiedz ile razy pętla się wykona
dla mnie tę oczywistość ma (o ile musi od jedynki):
for(int i=1; i<=20;i++)
gdyby nie musiało od jedynki
for(int i=0; i<20;i++)
z cyklu "mała rzecz a cieszy"
-
18. Data: 2010-02-09 21:35:55
Temat: Re: BCB Moj ulubiony kod;)
Od: "Bastion" <b...@m...pl>
Użytkownik "Jacek Czerwinski" <...@...z.pl> napisał w wiadomości
news:hkqr8b$6st$1@news.onet.pl...
>> for(int i=1; i<21;i++)
> wg mnie najgorszy sposób napisania że chodzi o 20x. Dla mnie ten autor nigdy nie
wykształcił się w C, kopiował z Pascala. Fragment
> typowy dla kodu z BCB.
Jacku slyszalesz o pseudokodzie?
Traktuj ta petle jak przekaz formalny a nie merytoryczny
>> FloatToStr
> Po trzecie jak już bronisz BCB to do pieniążków ma Currency (tu jest symulacja,
więc 'chyba' nie dokładne obliczenie, ale
> wspominam)
Patrz uwagi na temat pseudo kodu
> > StrToFloat(FloatToStr).
> Pobaw się formatami międzynarodowymi, to może byc 'ciekawe'. Ostatnie cyfry
znaczące też ciekawe. BCB "lepiej" zaokrągla od reszty
> branży.
> O kosztach wydajnościowych konwersji tu koledzy pisali.
>
Patrz uwagi na temat pseudo kodu
> O separacji algorytmu, GUI i danych, MVC itd to "rasowego" użytkownika myszki w BCB
nie tylko nie da sie przekonać, ale wręcz nie
> zrozumie o czym mowa.
Tu sie zgadzam, czyli czekam ma Twoja propozycje procedury/funkcji
> W sumie, dzięki że bronisz czegoś co nie do obronienia, bo pokazuje że "subkultura
BCB" nie przyśniła nam się ale istnieje.
BCB i Delphi powstal jako opozycja do MS VB i jako taki spelnil swoje zadanie.
Napisz ta funkcje/procedure lepiej to podyskutujemy.
-
19. Data: 2010-02-09 21:41:55
Temat: Re: BCB Moj ulubiony kod;)
Od: "Bastion" <b...@m...pl>
Użytkownik "Jacek Czerwinski" <...@...z.pl> napisał w wiadomości
news:hkrcd4$tsn$1@news.onet.pl...
> WRonX pisze:
>> Jacek Czerwinski pisze:
>>
>>> b)
>>>> for(int i=1; i<21;i++)
>>> wg mnie najgorszy sposób napisania że chodzi o 20x. Dla mnie ten autor nigdy nie
wykształcił się w C, kopiował z Pascala.
>>> Fragment typowy dla kodu z BCB.
>>
>> Mozesz to wytlumaczyc PHPwcowi? :) Pytam z czystej ciekawosci.
>
> obudź się o 3 w nocy i powiedz ile razy pętla się wykona
> dla mnie tę oczywistość ma (o ile musi od jedynki):
> for(int i=1; i<=20;i++)
Obudz sie dzialam na tablicy (dokladnie to na 2 wymiarowej tablicy dynamicznej)
Dodatkowo tablica jest komponentem w postaci Grida gdzie indeks 1 ma inne znaczenie
niz indeks 0
> gdyby nie musiało od jedynki
> for(int i=0; i<20;i++)
>
> z cyklu "mała rzecz a cieszy"
Nie bardzo rozumiem ale odnosz wrazenie, ze mocno bladzisz....
-
20. Data: 2010-02-09 21:51:19
Temat: Re: BCB Moj ulubiony kod;)
Od: Jędrzej Dudkiewicz <j...@g...com>
Bastion pisze:
> Ciekawe czy ktos zgadnie co oblicza ta prosta procedura:
> void __fastcall TForm1::BitBtn1Click(TObject *Sender)
> {
> StringGrid1->Cells[1][0]=FloatToStr(4000);
> for(int i=1; i<21;i++)
> {
> StringGrid1->Cells[0][i]=FloatToStr(2010+i);
> StringGrid1->Cells[1][i]=FloatToStr
> (
> StrToFloat(StringGrid1->Cells[1][i-1])
> +StrToFloat(StringGrid1->Cells[1][i-1])*0.1
> );
> }
> }
Ze 3, 4 lata temu napisałem parsowanie struktur SMBIOSowych przy
kombinacją: dd if=/dev/mem ... | od ... | awk ...
Ale napisałem to tylko dlatego, że nie było innej możliwości. Pisanie
takich rzeczy jak wyżej to jak używanie do wszystkiego słowników string
-> string.
JD