Zawieszające się programy na innym kompie

0

Dzień dobry,

Mam Delphi-ego 10.3 i problem z brakiem jakiś bibliotek na kompie z niezainstalowanym kompilatorem Delphi.
Aktualnie problem dotyczy bibliotek do obsługi FTPa (IdFtp).

Poprawnie działa obsługa serwerów FTP, ale przy próbie przelistowania IdFTP1.List(Lista, '', True) na innym kompie aplikacja zawisa...

Jak to naprawić?

Pozdrawiam.
Marek

PS: w załączniku pokazałem moje ustawienia.

0

problem z brakiem jakiś bibliotek na kompie z niezainstalowanym kompilatorem Delphi.
na innym kompie aplikacja zawisa...

Na pewno to kwestia braku kompilatora albo bibliotek? Proponowałbym postawić wirtualny system i tam potestować własny program.
https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/
Tu są darmowe systemu do testów na jaki czas.

0

Nie jestem pewien czy testowanie na innych systemach/kompach ma sens. Sprawdziłem ten program na siedmiu różnych komputerach z Windowsem 7 i 10.
Czy trzeba coś ustawić w kompilatorze?

1

Na 99,99% jest to problem nie związany z Delphi, tylko z trybem pasywnym/aktywnym FTP. Sprawdź zwykłym poleceniem FTP z linii poleceń Windows, w jakim trybie działa/nie działa listowanie na obu kompach.

0

Czy listowanie wykorzystuje konieczność przejścia do jednego z trybów (pasywny/aktywny)?
Czy tryby pasywny/aktywny nie wykorzystuje się tylko podczas zapisu/czytania plików?

0

Wywołuj kod w wątku lub (gorsza opcja) po prostu dodaj komponent TIdAntiFreeze powinno pomóc.

1
Mariusz Bruniewski napisał(a):

Odbiegnę troszkę od wątku. Ja miałem problem z kodem napisanym pod Windows 7, gdzie kompilował się i smigał, a w XP działał dziwnie.

Jakoś mnie to nie dziwi – w końcu te systemy bardzo wiele różni. Kod skompilowany pod Windows XP będzie działał na wszystkich późniejszych systemach (jeśli się nie stosuje dziwnych technik), natomiast w drugą stronę niekoniecznie.

Mój CTCT pisałem na WinXP w Lazarusie i działa perfekcyjnie na WinXP, Win7 i Win10 – absolutnie żadnych problemów. Tyle że pisałem go w Lazarusie, a nie w Delphi.

Xp był tak szlachetny, że nie reagował na pewne polecenia kodu tak jak pod Windows 7.

Nie dorabiaj do tego wszystkiego jakiejś dziwnej, magicznej otoczki – skoro program nie działał prawidłowo, to tylko dlatego, że nie posiadał lub nie wspierał funkcji, które zostały dodane w kolejnej wersji systemu.

Jeśli miałbym pisać program, który by miał być wspierany na systemach od WinXP wzwyż, to kod dla WinXP kompilowałbym na WinXP, a dla późniejszych systemów na późniejszym systemie (np. na Win10). Dla mnie takie podejście jest sensowne i dzięki temu nie miałbym żadnych kłopotów z deweloperką. A że lapka z legalnym WinXP można kupić za kilka stówek, to warto z takiej opcji skorzystać.

Tyle że dla kogoś tworzącego oprogramowanie w Lazarusie, system to żaden problem (w końcu wsparcie sięga całej linii NT oraz masy innych platform), ale dla użytkowników innych IDE takie podejście może być nieosiągalne – np. najnowszego VS na WinXP nie zainstaluje, głównie ze względu na wymaganą przez niego wersję .NET (i pewnie wielu innych wymogów).

Reszty nie skomentuję, bo to nie po polsku napisane.

0

TIdAntiFreeze, pomaga o tyle, że nie zawiesza formy ale dalej miejsce z IdFTP1.List-owaniem się zawiesza.
Macie pomysły jak to rozwiązać?

0

Masz w uses IdAllFTPListParsers? Jak nie to spróbuj dodać.
W dalszym kroku przed wywołaniem IdFTP.List spróbuj wstawić coś takiego IdFTP.UseMLIS:= IdFTP.CanUseMLS. Poza tym jak dalej nie zadziała zrób jakiś test co zwraca IdFTP.CanUseMLS. Niby w teorii nie ma to nic do tego (odpowiada za wyświetlenia daty pliku w czasie lokalnym lub UTC) ale zauważyłem, że na serwerach gdzie CanUseMLS zwracało False kiedyś były problemy (być może w obecnej wersji Indy już nie). To czy czy na komputerze jest Delphi czy nie nie powinno mieć znaczenia (nie wymaga żadnych dodatkowych bibliotek) raczej chodzi o konfigurację serwera dlatego pytanie czy na tym komputerze gdzie nie ma Delphi łączysz się z tym samym serwerem FTP? Ewentualnie czy jest taki sam system?
No i w razie czego pokaż kod.

1

@markoni Czy ten drugi komputer jest w tej samej sieci? Jeśli nie, to nadal uważam, że problem jest w ustawieniu odpowiedniego trybu /aktywny/pasywny.
Sprawdź z linii poleceń na obu komputerach, czy listowanie działa.

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