Czy to jest bezpieczne

dział ogólny

Czy to jest bezpieczne

Nowy postprzez usermaw » niedziela, 1 listopada 2009, 11:04

Witam Was Kochani
Poniżej kod jakich pełno w sieci do kolorowania wierszy DBGrid w zdarzeniu DrawColumnCell. Kod Działa, więc nie o rozwiązanie chodzi. Moje pytanie brzmi. Czy poniższy kod jest bezpieczny? Wiem, że to temat międlony wiele razy. Mi jednak chodzi o stabilność.

Kod: Zaznacz cały
        if(DBGrid1->DataSource->DataSet->RecNo %2 != 0)
        {
            DBGrid1->Canvas->Brush->Color=clYellow;
        }
        else
        {
            DBGrid1->Canvas->Brush->Color=clWhite;
        }
        if((State.Contains(gdSelected))||(State.Contains(gdFocused)))
        {
            DBGrid1->Canvas->Font->Color=clHighlightText;
            DBGrid1->Canvas->Brush->Color=clHighlight;
        }
       DBGrid1->DefaultDrawColumnCell(Rect,DataCol,Column,State); // *1


A konkretnie, czy całośc, z wyjątkiem *1 powinna być objeta jakimś warunkiem osiągnięcia ostaniego rekordu? Np:
Kod: Zaznacz cały
if(DBGrid1->DataSource->DataSet->RecNo < DBGrid1->DataSource->DataSet->RecordCount)
Avatar użytkownika
usermaw
Homos antropiczny
Homos antropiczny
 
Posty: 55
Dołączył(a): piątek, 2 stycznia 2009, 20:43
PodziÄ™kowaÅ‚ : 2
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    NieznanyNieznana

Re: Czy to jest bezpieczne

Nowy postprzez Cyfrowy Baron » niedziela, 1 listopada 2009, 11:23

Kod wygląda prawidłowo, ale trudno coś stwierdzić nie mając wiedzy na temat konstrukcji całego programu. Jeżeli zapewniłeś obsługę wszystkich wyjątków jakie mogą wystąpić, to kod będzie działał stabilnie. Najlepiej sprawdzić go w różnych sytuacjach. Daj program do przetestowania osobie postronnej nie posiadającej wiedzy na temat konstrukcji kodu. Tak to już jest, że programista zawsze wie jak prawidłowo posługiwać się własnym programem.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Czy to jest bezpieczne

Nowy postprzez usermaw » niedziela, 1 listopada 2009, 11:32

Cyfrowy Baron napisał(a):Kod wygląda prawidłowo, ale trudno coś stwierdzić nie mając wiedzy na temat konstrukcji całego programu.


Kod wystarczy wkleic do zdarzenia i juz dziala, bez zadnych przymiarek i poprawek.

Mi chodzi o owo "RecNo". Bo to jak by leciec zmienna w nieskonczonosc i oczekiwac, ze ona sama ma wiedziec, kiedy ma zastopowac.

Nigdzie w sieci nikt nie podejmowal tematu bezpieczenstwa takiego kodu (bez warunku na koncu mojego pytania w poprzednim poscie).

Mozna zaryzykowac stwierdzienie, że zdarzenie ma gdzies ukryte informacje, kiedy przestac z RecNo.

Kod jest tak popularny w sieci, ze trudno nad nim sie rozczulac.
Czy to sie zachowa stabilnie w przypadku czestego odswierzania tabelki, zmiany rekordów itp.
Może ktos na tym popularnym kodzie juz się potknął

pozdro
Avatar użytkownika
usermaw
Homos antropiczny
Homos antropiczny
 
Posty: 55
Dołączył(a): piątek, 2 stycznia 2009, 20:43
PodziÄ™kowaÅ‚ : 2
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    NieznanyNieznana

Re: Czy to jest bezpieczne

Nowy postprzez Cyfrowy Baron » niedziela, 1 listopada 2009, 13:32

Kod: Zaznacz cały
if(DBGrid1->DataSource->DataSet->RecNo %2 != 0)


Mi chodzi o owo "RecNo". Bo to jak by leciec zmienna w nieskonczonosc i oczekiwac, ze ona sama ma wiedziec, kiedy ma zastopowac.


Jak widać kod nie będzie się wykonywał w nieskończoność, tylko dopóty, dopóki warunek będzie spełniony.
Używanie warunków w zdarzeniach OnDraw... nie niesie ze sobą niebezpieczeństwa, gdyż warunek albo jest spełniany, albo nie. Prawdziwym niebezpieczeństwem są dopiero pętle umieszczane w zdarzeniach OnDraw...

Za ten post autor Cyfrowy Baron otrzymał podziękowanie od:
usermaw
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przeglÄ…da forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 4 gości