Zamykanie aplikacji

0

Witam

Mam pytanko. Czy ktoś z was <ort>natchnął </ort>się na problem, że przy zamykaniu aplikacji program zostawał na belce i nie reagował ? Generalnie nie jest to regułą na wszystkich komputerach. Jak sobie zrobiłem zapis do logu, to program przechodzi całą prockę FormCloseQuery, przechodzi całe FormClose, ale do Destroy ani FormDestroy nie wchodzi.
Jakieś pomysły ?

Pozdrawiam

0
b0bik napisał(a)

Witam

Mam pytanko. Czy ktoś z was natchnął się na problem, że przy zamykaniu aplikacji program zostawał na belce i nie reagował ? Generalnie nie jest to regułą na wszystkich komputerach. Jak sobie zrobiłem zapis do logu, to program przechodzi całą prockę FormCloseQuery, przechodzi całe FormClose, ale do Destroy ani FormDestroy nie wchodzi.
Jakieś pomysły ?

Pozdrawiam

nie wiem co masz na mysli mowiac "zapis do logu"? uzyj debuggera, to raz.
dwa: jesli jakims cudem nie dochodzi do destroy to moze daj to na koniec w onCloseQuery.
trzy: a jak dziala application.terminate;? tak samo?
cztery: tez tak czasem mam w programie, ale on jest troche rozbudowany, metnie napisany i byc moze czasami nie zwolni z czegos pamieci, z tym, ze u mnie nie widac go na pasku zadan, tylko proces sobie "zyje" przez pewien czas.

pozdraiam
wilq

0
cimak napisał(a)

nie wiem co masz na mysli mowiac "zapis do logu"? uzyj debuggera, to raz.

Sęk w tym że u mnie na kompie raczej się zamyka OK. Na innych kompach czasem zawisa.

cimak napisał(a)

dwa: jesli jakims cudem nie dochodzi do destroy to moze daj to na koniec w onCloseQuery.

No jest to jakieś rozwiązanie - ale nie jestem przekonany że to zadziała ale spróbuje.

cimak napisał(a)

trzy: a jak dziala application.terminate;? tak samo?

Sprawdze, pytanie tylko kiedy to wywoływać. Nie wiem czy w przypadku użycia Application.Terminate zostanie wywołany destruktor formatki. No ale można by to wypróbować.

cimak napisał(a)

cztery: tez tak czasem mam w programie, ale on jest troche rozbudowany, metnie napisany i byc moze czasami nie zwolni z czegos pamieci, z tym, ze u mnie nie widac go na pasku zadan, tylko proces sobie "zyje" przez pewien czas.

Tutaj to nie jest pewien czas. Program po prostu wisi na pasku i nie reaguje.

Tak czy siak dzięki za podpowiedzi.

Pozdrawiam

0

A te "zapisywanie do logu" masz w jakim zdarzeniu tzw. w OnClose czy onDistroy czy gdzie? Najprawdopodobniej jest problem z tym zapisywaniem i to dlatego program wisa. Wrzuć kod odpowiedzialny za zapisywanie.

0
piochu napisał(a)

A te "zapisywanie do logu" masz w jakim zdarzeniu tzw. w OnClose czy onDistroy czy gdzie? Najprawdopodobniej jest problem z tym zapisywaniem i to dlatego program wisa. Wrzuć kod odpowiedzialny za zapisywanie.

To nie tak, program zwisał, więc dołożyłem zapisywanie do logu, żeby sprawdzić przez jakie procki przechodzi. Dałem to w OnClose, OnCloseQuery, OnDestroy, OnFormDestroy.

Zapisywanie do logu = Otwarcie pliku (assignFile(F, 'ściżka jakaś'); append(F) lub rewrite(F), wrteLN(F,'jakiś tekst'); i finally CloseFile(F);

0

Przy Application.Terminate wszystkie destruktory automatycznie tworzonych formatek zostaną wywołane (tworzone ręcznie, rzecz jasna, musisz sprzątnąć samodzielnie).

0
b0bik napisał(a)
piochu napisał(a)

A te "zapisywanie do logu" masz w jakim zdarzeniu tzw. w OnClose czy onDistroy czy gdzie? Najprawdopodobniej jest problem z tym zapisywaniem i to dlatego program wisa. Wrzuć kod odpowiedzialny za zapisywanie.

To nie tak, program zwisał, więc dołożyłem zapisywanie do logu, żeby sprawdzić przez jakie procki przechodzi. Dałem to w OnClose, OnCloseQuery, OnDestroy, OnFormDestroy.

Zapisywanie do logu = Otwarcie pliku (assignFile(F, 'ściżka jakaś'); append(F) lub rewrite(F), wrteLN(F,'jakiś tekst'); i finally CloseFile(F);

to nie tak sie robi....
ustaw sobie breakpointa np w OnCloseQuery i odpal program....
w momencie kiedy zacznie wykonywc procedury w miejscu breakpointa zatrzyma sie i bedzie czekal az nacisniesz F7. wtedy przeskoczy o jedna linie kodu wiecej. mozesz wiec podejrec dzialanie programu, wykonywac go linijka po linijce kodu. jak sie zatrzyma na wykonywaniu to bedziesz wiedzial gdzie jest blad. a w ogole to Debugowanie

pozdr

0
cimak napisał(a)

to nie tak sie robi....
ustaw sobie breakpointa np w OnCloseQuery i odpal program....
w momencie kiedy zacznie wykonywc procedury w miejscu breakpointa zatrzyma sie i bedzie czekal az nacisniesz F7. wtedy przeskoczy o jedna linie kodu wiecej. mozesz wiec podejrec dzialanie programu, wykonywac go linijka po linijce kodu. jak sie zatrzyma na wykonywaniu to bedziesz wiedzial gdzie jest blad. ...

: > Jak się debuguje to ja wiem : > Pisałem wyżej że u mnie na kompie przechodzi wszystko jak należy i program się zakańcza prawidłowo. Tylko na niektórych innych kompach się zawiesza : ( (na których nie ma Delphi)

Pozdro

1 użytkowników online, w tym zalogowanych: 0, gości: 1