🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.delphi
13 messages
13 total messages Started by goo-mlyny Thu, 04 Jul 2019 10:13
TOpenDialog i zawieszenie IDE
#347039
Author: goo-mlyny
Date: Thu, 04 Jul 2019 10:13
15 lines
1838 bytes
Telepie mi się po głowie, że temat był opisany i rozwiązany ale za nic nie mogę tego rozwiązania odszukać. Może ktoś ma lepszą pamięć?

W kodzie mam banalną konstrukcję:
  dlg := TOpenDialog.Create(nil);
  dlg.InitialDir := KatalogCel;
  dlg.FileName := Cel;
  try
    if dlg.Execute() then  //na tej linii się zawiesza

Jak uruchamiam w IDE - to na tej linii IDE się zawiesza.
To zjawisko występowało sporadycznie, ale jakoś od kilku dni występuje za każdym uruchomieniem. Delphi 10.3, system W10 64 bit.

Ktoś, coś?

Andrzej
Re: TOpenDialog i zawieszenie IDE
#347040
Author: Marek
Date: Fri, 05 Jul 2019 09:33
23 lines
1969 bytes
W dniu 04.07.2019 o 12:13, goo-mlyny@ciach.net pisze:
> Telepie mi się po głowie, że temat był opisany i rozwiązany ale za nic nie mogę tego rozwiązania odszukać. Może ktoś ma lepszą pamięć?
> 
> W kodzie mam banalną konstrukcję:
>    dlg := TOpenDialog.Create(nil);
>    dlg.InitialDir := KatalogCel;
>    dlg.FileName := Cel;
>    try
>      if dlg.Execute() then  //na tej linii się zawiesza
> 
> Jak uruchamiam w IDE - to na tej linii IDE się zawiesza.
> To zjawisko występowało sporadycznie, ale jakoś od kilku dni występuje za każdym uruchomieniem. Delphi 10.3, system W10 64 bit.

   Może ten folder startowy KatalogCel to jakaś lokalizacja sieciowa lub inna, która przymula przy dostępie do niej
albo jest niedostępna?
   A może to okno dialogowe wyświetla się pod innym oknem (z ustawieniem "On top") lub na drugim (wyłączonym) monitorze
i czeka na Twoją reakcję?

A jak w eksploratorze chcesz wejść do tego folderu, to da się szybko?

-- 
Pzdr.
Marek
Re: TOpenDialog i zawieszenie IDE
#347041
Author: goo-mlyny
Date: Sun, 07 Jul 2019 21:38
12 lines
2054 bytes
W dniu piątek, 5 lipca 2019 11:34:02 UTC+2 użytkownik Marek napisał:
>    Może ten folder startowy KatalogCel to jakaś lokalizacja sieciowa lub inna, która przymula przy dostępie do niej
> albo jest niedostępna?
nie - katalog jest lokalny, na C

>    A może to okno dialogowe wyświetla się pod innym oknem (z ustawieniem "On top") lub na drugim (wyłączonym) monitorze
> i czeka na Twoją reakcję?
nie, w 99% nic się nie wyświetla, ten 1% - wyświetli się tylko ramka od okna dialogowego


> A jak w eksploratorze chcesz wejść do tego folderu, to da się szybko?
Da się szybko, zresztą w mojej aplikacji też da się szybko (bez żadnego zawieszania się aplikacji), jeśli uruchomię ją poza IDE.
Re: TOpenDialog i zawieszenie IDE
#347042
Author: marfi
Date: Mon, 08 Jul 2019 20:05
12 lines
1751 bytes
Użytkownik <goo-mlyny@ciach.net> napisał w wiadomości 
news:55249779-4fde-410d-9f4a-e740cce1b254@googlegroups.com...
...

> A jak w eksploratorze chcesz wejść do tego folderu, to da się szybko?
Da się szybko, zresztą w mojej aplikacji też da się szybko (bez żadnego 
zawieszania się aplikacji), jeśli uruchomię ją poza IDE.

Firewall?

-- 
marfi
Re: TOpenDialog i zawieszenie IDE
#347043
Author: suazael
Date: Tue, 09 Jul 2019 07:24
22 lines
2092 bytes
> 
> > A jak w eksploratorze chcesz wejść do tego folderu, to da się szybko?
> Da się szybko, zresztą w mojej aplikacji też da się szybko (bez żadnego 
> zawieszania się aplikacji), jeśli uruchomię ją poza IDE.
> 
> Firewall?
> 
> -- 
> marfi

Witam.

Albo antywirus. Mi kiedyś podobne niespodzianki robił BitDefender... co prawda nie z OpenDialog'iem, ale był problem z dostępem do dysków spod IDE (zwłaszcza do C: ).

Pomagało uruchomienie Delphi w trybie administratora...

A z OpenDialog'iem miałem bardzo podobny problem (pokazywała się pusta ramka), ale w przypadku, kiedy próbowałem "przerobić" go dodając nowe opcje.

To tylko sugestie, ale może na coś naprowadzą?

Pozdrawiam
Sławek
Re: TOpenDialog i zawieszenie IDE
#347044
Author: goo-mlyny
Date: Tue, 09 Jul 2019 12:04
5 lines
2115 bytes
W dniu wtorek, 9 lipca 2019 09:24:04 UTC+2 użytkownik sua...@gmail.com napisał:

> 
> To tylko sugestie, ale może na coś naprowadzą?
No nic - będę kombinował. Najgorzej mnie denerwuje, że pamiętam, że miałem już kiedyś ten problem, nie pamiętam rozwiązania, w necie jest też opisany, ale wszystkie linki do rozwiązania prowadzą w miejsca, których już nie ma...
Re: TOpenDialog i zawieszenie IDE
#347045
Author: Jan Drawski
Date: Tue, 09 Jul 2019 12:48
33 lines
2636 bytes
W dniu 2019-07-04 o 12:13, goo-mlyny@ciach.net pisze:
> Telepie mi się po głowie, że temat był opisany i rozwiązany ale za nic nie mogę tego rozwiązania odszukać. Może ktoś ma lepszą pamięć?
> 
> W kodzie mam banalną konstrukcję:
>    dlg := TOpenDialog.Create(nil);
>    dlg.InitialDir := KatalogCel;
>    dlg.FileName := Cel;
>    try
>      if dlg.Execute() then  //na tej linii się zawiesza
> 
> Jak uruchamiam w IDE - to na tej linii IDE się zawiesza.
> To zjawisko występowało sporadycznie, ale jakoś od kilku dni występuje za każdym uruchomieniem. Delphi 10.3, system W10 64 bit.
> 
> Ktoś, coś?
> 
> Andrzej

Coś (część sugestii pewnie już była):
1. Program antywirusowy, firewall, spyware (kiedyś miałem problemy z 
SpyBootem). Czasami wyłączenie takiego programu nic nie daje bo jakiś 
serwis od niego dalej potrafi coś mieszać.
2. Sprawdenie jak jest na innych komputerach. Wtedy będzie wiadomo czy 
to wina kompa (też np. w katalogach, plikach może być coś skopane) czy 
softu.
3. Część OpenDialogów się sypie jak jest włączone o ile dobrze pamiętam 
"MULTITHREADED".
4. Zmiana lub ustawienie katalogu startowego.
5. Czy czysty projekt z takim OpenDialogiem dobrze działa? Może gdzieś 
nadpisujesz pamięć i efekty akurat tu widać albo jakaś biblioteka coś 
miesza.

-- 
Janek
Re: TOpenDialog i zawieszenie IDE
#347046
Author: goo-mlyny
Date: Tue, 09 Jul 2019 12:57
19 lines
2637 bytes
W dniu wtorek, 9 lipca 2019 14:49:02 UTC+2 użytkownik Jan Drawski napisał:

> Coś (część sugestii pewnie już była):
> 1. Program antywirusowy, firewall, spyware (kiedyś miałem problemy z 
> SpyBootem). Czasami wyłączenie takiego programu nic nie daje bo jakiś 
> serwis od niego dalej potrafi coś mieszać.
> 2. Sprawdenie jak jest na innych komputerach. Wtedy będzie wiadomo czy 
> to wina kompa (też np. w katalogach, plikach może być coś skopane) czy 
> softu.
> 3. Część OpenDialogów się sypie jak jest włączone o ile dobrze pamiętam 
> "MULTITHREADED".
A możesz na ten temat coś więcej napisać, bo to mi trochę coś się kojarzy, ale nie mogę sobie przypomnieć istoty sprawy.

> 4. Zmiana lub ustawienie katalogu startowego.
Jeszcze posprawdzam, liczyłem, że ktoś ma mniejszą sklerozę, niż ja :)

> 5. Czy czysty projekt z takim OpenDialogiem dobrze działa?
W tej chwili działa źle, zrobiłem nowy projekt, tylko z wywołaniem OpenDialog i w IDE d...
Coś się zmieniło w ciągu ostatnich kilku tygodni, bo problemu jeszcze niedawno nie było, niestety nie potrafię żadnej zmiany skojarzyć...
Re: TOpenDialog i zawieszenie IDE
#347047
Author: Jan Drawski
Date: Tue, 09 Jul 2019 14:11
25 lines
2264 bytes
>> "MULTITHREADED".
> A możesz na ten temat coś więcej napisać, bo to mi trochę coś się kojarzy, ale nie mogę sobie przypomnieć istoty sprawy.

Jak się korzysta z jakiegoś API Windows (nie pamiętam konkretnie przy 
czym) to MS zaleca korzystanie z tego. Ustawiam tak: CoInitializeEx(nil, 
COINIT_MULTITHREADED);
Google pewnie wie więcej na ten temat. Z niektórych komponentów nie 
można skorzystać, jest problem z parentami.

> Jeszcze posprawdzam, liczyłem, że ktoś ma mniejszą sklerozę, niż ja :)

Tak to jest jak się coś robi za szybko :)

>> 5. Czy czysty projekt z takim OpenDialogiem dobrze działa?
> W tej chwili działa źle, zrobiłem nowy projekt, tylko z wywołaniem OpenDialog i w IDE d...
> Coś się zmieniło w ciągu ostatnich kilku tygodni, bo problemu jeszcze niedawno nie było, niestety nie potrafię żadnej zmiany skojarzyć...

Wiem, że to może brzmieć trochę niedorzecznie ale możesz sprawdzić jak 
będzie przy nieaktywnym połączeniu z internetem. Czasami coś może się 
starać coś przesłać, odczytać i jak się nie udaje to mogą zdarzać się 
takie problemy. W WMI były takie niespodzianki.

-- 
Pozdrawiam
Janek
Re: TOpenDialog i zawieszenie IDE
#347048
Author: wloochacz
Date: Wed, 10 Jul 2019 10:25
49 lines
3234 bytes
W dniu 09.07.2019 o 16:11, Jan Drawski pisze:
>>> "MULTITHREADED".
>> A możesz na ten temat coś więcej napisać, bo to mi trochę coś się 
>> kojarzy, ale nie mogę sobie przypomnieć istoty sprawy.
> 
> Jak się korzysta z jakiegoś API Windows (nie pamiętam konkretnie przy 
> czym) to MS zaleca korzystanie z tego. Ustawiam tak: CoInitializeEx(nil, 
> COINIT_MULTITHREADED);

Głównie chodzi o inicjalizowanie COMów.
Np. IXMLDocument albo jakieś ADO, albo dowolny inne coś działające jako 
Component Object Model.

> Google pewnie wie więcej na ten temat. Z niektórych komponentów nie 
> można skorzystać, jest problem z parentami.
> 
>> Jeszcze posprawdzam, liczyłem, że ktoś ma mniejszą sklerozę, niż ja :)
> 
> Tak to jest jak się coś robi za szybko :)
> 
>>> 5. Czy czysty projekt z takim OpenDialogiem dobrze działa?
>> W tej chwili działa źle, zrobiłem nowy projekt, tylko z wywołaniem 
>> OpenDialog i w IDE d...
>> Coś się zmieniło w ciągu ostatnich kilku tygodni, bo problemu jeszcze 
>> niedawno nie było, niestety nie potrafię żadnej zmiany skojarzyć...
> 
> Wiem, że to może brzmieć trochę niedorzecznie ale możesz sprawdzić jak 
> będzie przy nieaktywnym połączeniu z internetem. Czasami coś może się 
> starać coś przesłać, odczytać i jak się nie udaje to mogą zdarzać się 
> takie problemy. W WMI były takie niespodzianki.
> 
Miałem (może) podobny przypadek, ale jednak ciut inny.
Problem również dotyczył OpenDialog, ale zachowywało się to tak, że 
otwarcie OpenDialog powodowało, że proces który go odpalił masowo zżerał 
pamięć.
I to w tempie ok. kilku MiB na sekundę.
Tak czy siak normalna aplikacja umierała w kilkanaście minut od otwarcia 
OpenDialog z braku pamięci.

Nie znaleźliśmy rozwiązania i w końcu zdecydowałem, że napiszemy sobie 
taki wrapper na OpenDialog (jako osobny program/proces), którego jedynym 
zadaniem jest obsługa OpenDialog.

Ciekawe jest to, że takie zachowanie było tylko u jednego klienta, ale 
na wszystkich jego komputerach.


-- 
wloochacz
Re: TOpenDialog i zawieszenie IDE
#347049
Author: Jan Drawski
Date: Wed, 10 Jul 2019 12:22
27 lines
2432 bytes
> Miałem (może) podobny przypadek, ale jednak ciut inny.
> Problem również dotyczył OpenDialog, ale zachowywało się to tak, że 
> otwarcie OpenDialog powodowało, że proces który go odpalił masowo zżerał 
> pamięć.
> I to w tempie ok. kilku MiB na sekundę.
> Tak czy siak normalna aplikacja umierała w kilkanaście minut od otwarcia 
> OpenDialog z braku pamięci.
> 
> Nie znaleźliśmy rozwiązania i w końcu zdecydowałem, że napiszemy sobie 
> taki wrapper na OpenDialog (jako osobny program/proces), którego jedynym 
> zadaniem jest obsługa OpenDialog.
> 
> Ciekawe jest to, że takie zachowanie było tylko u jednego klienta, ale 
> na wszystkich jego komputerach.

Czyli ten sam OpenDialog w czystym programie działał już poprawnie? Na 
szybko spojrzałem i kiedyś jak mi coś nie działało to starałem się 
skorzystać bezpośrednio z interfejsu IFileDialog, używałem też:
1. TOpenFileName(OFN.Flags := OFN_EXPLORER or OFN_LONGNAMES or 
OFN_FILEMUSTEXIST or OFN_PATHMUSTEXIST or OFN_HIDEREADONLY or 
OFN_DONTADDTORECENT or OFN_FORCESHOWHIDDEN;)
2. TBrowseInfo (browse_info.ulFlags := BIF_RETURNONLYFSDIRS;)
// or BIF_NEWDIALOGSTYLE; or BIF_USENEWUI; - not for multithreaded
3.TFileOpenDialog (OD.Options := [fdoPickFolders];).

-- 
Janek
Re: TOpenDialog i zawieszenie IDE
#347050
Author: wloochacz
Date: Thu, 11 Jul 2019 10:53
31 lines
2833 bytes
W dniu 10.07.2019 o 14:22, Jan Drawski pisze:
/ciach/

> Czyli ten sam OpenDialog w czystym programie działał już poprawnie? 
Na komputerach klienta czysty program nie działał poprawnie.
I czysty program zżera pamięć na komputerach klienta.

> Na 
> szybko spojrzałem i kiedyś jak mi coś nie działało to starałem się 
> skorzystać bezpośrednio z interfejsu IFileDialog, używałem też:
> 1. TOpenFileName(OFN.Flags := OFN_EXPLORER or OFN_LONGNAMES or 
> OFN_FILEMUSTEXIST or OFN_PATHMUSTEXIST or OFN_HIDEREADONLY or 
> OFN_DONTADDTORECENT or OFN_FORCESHOWHIDDEN;)
> 2. TBrowseInfo (browse_info.ulFlags := BIF_RETURNONLYFSDIRS;)
> // or BIF_NEWDIALOGSTYLE; or BIF_USENEWUI; - not for multithreaded
> 3.TFileOpenDialog (OD.Options := [fdoPickFolders];).
Sprawa ma już dość czasu, aby nie pamięć szczegółów.
Poza tym, szkoda mi było prądu na dokładne rozpoznanie "po co, na co i 
dlaczego".
O ile dobrze pamiętam, to jeśli OpenDialog nie miał włączonego podglądu 
pliku to zachowywał się poprawnie i pamięć nie znikała w tempie 
katastrofalnym.

Ja raczej stawiałem na jakiś ShellExtension, które oni mieli wszędzie 
poinstalowane (jakiś viewer w powłoce systemu dla plikow CAD/CAM), a 
którego my nie mieliśmy.

Tak czy siak, metoda czołgowa zadziałała w moim przypadku idealnie.

-- 
wloochacz
Re: TOpenDialog i zawieszenie IDE
#347051
Author: mmm
Date: Thu, 11 Jul 2019 13:43
10 lines
1538 bytes
> Ja raczej stawiałem na jakiś ShellExtension, które oni mieli wszędzie 
> poinstalowane (jakiś viewer w powłoce systemu dla plikow CAD/CAM), a 
> którego my nie mieliśmy.
Tez bym celował ze to bedzie to.

Najszybsza metoda aby to sprawdzić to wyłączyć wszystko co 
niestandardowe za pomoca programu Autoruns (ze stajni Sysinternals)
na zakładce Explorer

M
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads