![]() |
idFTP erhängt sich nach einer halben Stunde
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo und frohe Weihnachten zusammen!
Ich schreibe ein kleines Filesharingprogramm und hab ein kleines Problem mit der IndyKompo. Grundsätzlich funktioniert alles, aber nach ziemlich genau nach einer halben Stunde läuft das Log nicht weiter (Verbinde immer wieder und trenne die Verbindung dann wieder) und wenn man auf irgendeinen Button drückt erhängt sich das Programm... Ich hab ehrlich gesagt, keine Ahnung, wo der Fehler liegt, aber wäre sehr dankbar, wenn mir jemand weiterhelfen könnte! Mfg Admirandis |
Re: idFTP erhängt sich nach einer halben Stunde
hast du mal Pause gedrückt und geschaut an welcher Stelle er hängt?
|
Re: idFTP erhängt sich nach einer halben Stunde
Ich würds mir ja mal ansehen, aber da es ohne JVCL nicht geht, werd ich mir das auch nicht ansehen. :zwinker:
|
Re: idFTP erhängt sich nach einer halben Stunde
um die verbindung zu nem ftp server aufrecht zu erhalten gibt es denn noop (mein ich zumindest das der so heißt ^^) befehl... probiers doch damit mal ;-)
|
Re: idFTP erhängt sich nach einer halben Stunde
@Andidreas: Mit dem Noop hab ichs grad probiert, aber da erhängt er sich noch schneller! Nichtmal 1,5 min! Vorher hab ich ja immer connected und wieder disconnected! Wobei das mit dem Noop schöner wäre...
@Muhkuh: Hier ist der intressante Part:
Delphi-Quellcode:
Viele Grüße
procedure TForm1.threadRun(Sender: TIdThreadComponent);
var zefux: String; cnt: integer; begin if JvHLEditor1.Lines.Count > 15 then JvHLEditor1.Clear; // Das ist nur ein Log von mir; hat nix mit der Funktion zu tun! ak.Host := 'werdasliestistdoof.com'; ak.Username := 'angela'; ak.Password := 'merkel'; while ak.Connected = false do begin ak.Connect; ak.ChangeDir('officeclipper'); JvHLEditor1.Lines.Add('connected @ '+timetostr(now)); //Daten ins Log end; ak.List(listbox1.Items, '', false); if ((listbox1.Items.IndexOf(you) <> -1) and (hinti = false)) then begin hinti := true; end; if listbox1.Items.IndexOf(you) <> -1 then begin download := true; end; if upload = true then begin noti.Hide; progi.Show; form1.Caption := 'Uploading'; JvTrayIcon1.BalloonHint('Upload', 'Sie laden jetzt eine Datei hoch xD', btInfo, 5000, true); richi.Lines.SaveToFile('C:\'+me); if listbox1.Items.IndexOf(me) <> -1 then ak.Delete(me); ak.Put('C:\'+me, me+'up', true); ak.Rename(me+'up', me); upload := false; form1.Caption := 'Upload succesful!'; richi.Clear; progi.Hide; noti.Show; end; if download = true then begin noti.Hide; progi.Show; form1.Caption := 'Downloading'; JvTrayIcon1.BalloonHint('Download', 'Es wird eine Datei heruntergeladen', btInfo, 5000, true); ak.Get(you, 'C:\'+you, true); ak.Delete(you); richi.Lines.LoadFromFile('C:\'+you); download := false; richi.SelectAll; richi.CopyToClipboard; form1.Caption := 'Download succesful!'; hinti := false; zefux := richi.text; if length(zefux) < 5 then zefux := 'Datei wurde heruntergeladen und ist im Clipboard!'; progi.Hide; noti.Show; JvTrayIcon1.BalloonHint('Clipboard', zefux, btInfo, 5000, true); end; if delall = true then begin for cnt := 0 to listbox1.Count-1 do ak.Delete(listbox1.items[cnt]); showmessage('Server ist wieder clean ;-)'); end; { while ak.Connected = true do ak.disconnect; } ak.Noop; // Vorher hab ich den Client wieder disconnected (s.o.). Der Noop klappt blöderweise auch net! JvHLEditor1.Lines.Add('refreshed @ '+timetostr(now)) // Und wieder was für das Log ;-) end; Admirandis |
Re: idFTP erhängt sich nach einer halben Stunde
Guten Morgen,
wozu ist denn diese Schleife gut?
Delphi-Quellcode:
Wäre es nicht besser:
while ak.Connected = false do
begin ak.Connect; ak.ChangeDir('officeclipper'); JvHLEditor1.Lines.Add('connected @ '+timetostr(now)); //Daten ins Log end;
Delphi-Quellcode:
Und noch zweie kleine Anmerkung, man sollte nicht auf = true oder = false
if not ak.Connected then
begin ak.Connect; ak.ChangeDir('officeclipper'); JvHLEditor1.Lines.Add('connected @ '+timetostr(now)); //Daten ins Log end; prüfen. Zugriffe auf GUI (VCL) Elemente sollten synchronisiert erfolgen. Grüße Klaus |
Re: idFTP erhängt sich nach einer halben Stunde
Zitat:
Zitat:
Zitat:
Grüße Admirandis |
Re: idFTP erhängt sich nach einer halben Stunde
Zitat:
Zitat:
es kann zu Zugriffsverletzungen kommen wenn aucs einem Thread auf die GUI zugegriffen wird. Du kannst mal hier im Forum nach synchronize suchen - Du wirst dann einige Beispiele finden. Wäre es eventuell nich sinnvoller das Design zu ändern? z.b. soll eine Datei geladen werden - wird ein download thread gestartet soll eine Datei hochgeladen werden - wird ein uploadthread gestartet. Also zwei Threads, einer für den DownLoad und einer für den Upload. Grüße Klaus |
Re: idFTP erhängt sich nach einer halben Stunde
Zitat:
Ich würde mehr das hier vorschlagen:
Delphi-Quellcode:
try
ak.Connect; except on E: Exception do raise Exception.Create(E.Message); // kleine Fehlerbehandlung end; if ak.Connected then // Weitermachen mit dem restlichen Code Zitat:
![]() |
Re: idFTP erhängt sich nach einer halben Stunde
@Klaus: Anfangs hatte ich die ganze idFTP-Kompo auch erst während der Laufzeit erstellt (Womit das synchronisieren wegfallen sollte), aber da wusste ich nicht, wie ich an die Daten für die Progressbar(AWorkCount etc.) komme... Wenn du mir sagst, wie ich das bewerkstellige wäre ich überglücklich =)
@Muhkuh: Ok, klingt logisch; werd das gleich mal ausprobieren! Und danke für den Link. Man lernt nie aus ;-) Grüße Admirandis |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz