Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Delphi 7.0 - variable might not have been inititialized

mati211p 25 Sie 2012 00:52 840 3
  • #1 25 Sie 2012 00:52
    mati211p
    Specjalista - HDD i odzyskiwanie danych

    Napisałem program, ale jego część nie działa jak należy. Program sam działa, ale nie robi chyba tego co powinien, podczas uruchamiania wyskakują ostrzeżenia,
    variable 'c' might not have been initialized itd.
    Fragment programu gdzie to się między innymi pojawia:

    Kod: delphi
    Zaloguj się, aby zobaczyć kod


    Jak zlikwidować ten błąd by nie wyskakiwało variable might not have been initialized?

    Proszę pamiętać o używaniu znaczników syntax. Opcja Listing kodu. [adamas_nt]

    0 3
  • Pomocny post
    #2 25 Sie 2012 02:37
    mickpr
    Poziom 39  

    mati211p napisał:
    Jak zlikwidować ten błąd by nie wyskakiwało variable might not have been initialized?

    Poprzez inicjację zmiennej (np. wartością 0), zanim ją użyjesz w warunku "IF" (na początku kodu),
    np:
    Kod: delphi
    Zaloguj się, aby zobaczyć kod

    0
  • Pomocny post
    #3 25 Sie 2012 09:10
    Dżyszla
    Poziom 42  

    Co prawda z logicznego punktu widzenia nie ma możliwości, aby zmienna c nie była zainicjowana. Jednak kompilator nie jest w stanie analizować tak dogłębnie kodu - dla nie go w case nie ma wymienionych wszystkich możliwych przypadków (wszystkich liczb z zakresu Integer).

    Ale można łatwo go oszukać nie dokładając żadnej instrukcji. Wystarczy zamiast jednego warunku (np. 0) dać instrukcję else i tam dokonać przypisania:

    Kod: Delphi
    Zaloguj się, aby zobaczyć kod


    BTW - umieszczaj kod w znacznikach [syntax]!

    A na marginesie - czemu tak komplikujesz? nie wystarczy:
    Kod: Delphi
    Zaloguj się, aby zobaczyć kod
    ???


    Chciałbym jeszcze odnieść się do porady poprzednika. Owszem, ostrzeżenie zostanie wyeliminowane. Jednak: A. Taki zapis nie daje nic z logicznego punktu widzenia (wszak niespełnienie warunków case nie jest możliwe); B. Spowolni program dodatkową, zupełnie niepotrzebną instrukcją.

    0
  • #4 25 Sie 2012 10:44
    mati211p
    Specjalista - HDD i odzyskiwanie danych

    adamas_nt dzięki za pouczenie. Faktycznie teraz przypisałem c:=0; i działa, być może wcześniej się pogubiłem i dałem za if bo nie chciało działać, ale jest ok, dzięki za pomoc . Dopiero uczę się programować, dzięki za cenne rady na przyszłość
    Pozdrawiam.

    0