AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi FTP Fehler Fenster nicht anzeigen
Thema durchsuchen
Ansicht
Themen-Optionen

FTP Fehler Fenster nicht anzeigen

Ein Thema von Stread · begonnen am 14. Jul 2011 · letzter Beitrag vom 14. Jul 2011
Antwort Antwort
Stread

Registriert seit: 25. Jun 2011
23 Beiträge
 
Delphi XE Architect
 
#1

FTP Fehler Fenster nicht anzeigen

  Alt 14. Jul 2011, 19:29
Hi,
ich realisiere über FTP einen Upload.
Wenn man nun keine Internetverbindung hat, oder per Firewall den Internetzugriff verhindert, kommt ein ziemlich häßliches Hinweisfenster.

Wie kann ich dieses Fenster (siehe Anhang) unterdrücken und die Nachricht stattdessen in ein Label ausgeben?

Hier mein (ziemlich einfacher) Code:
Delphi-Quellcode:
procedure TFormSys.BtFTPClick(Sender: TObject);
  begin
BtSpeichern.Click;
IdFTP1.Host:= '***';
IdFTP1.Port:= (21);
IdFTP1.Username:= '***';
IdFTP1.Password:= '***';
IdFTP1.Connect;
IdFTP1.Put(ExtractFilePath(ParamStr(0)) +'Systeminfos '+ GetUsername + '.txt',
    ExtractFileName('Systeminfos '+ GetUsername + '.txt'));
IdFTP1.Disconnect;
end;
Miniaturansicht angehängter Grafiken
14.07-20.17.26.jpeg   14.07-20.23.22.jpeg  
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#2

AW: FTP Fehler Fenster nicht anzeigen

  Alt 14. Jul 2011, 19:33
Schau dir mal try-except und try-finally an Guckst du hier.
Delphi-Quellcode:
procedure TFormSys.BtFTPClick(Sender: TObject);
begin
  BtSpeichern.Click;
  IdFTP1.Host:= '***';
  IdFTP1.Port:= (21);
  IdFTP1.Username:= '***';
  IdFTP1.Password:= '***';
  try
    IdFTP1.Connect;
  except
    on E : Exception do
    begin
      LabelError.Caption := 'Could not connect to server: ' + E.Message;
      Exit;
    end;
  end;
  try
    try
      IdFTP1.Put(ExtractFilePath(ParamStr(0)) +'Systeminfos '+ GetUsername + '.txt',
        ExtractFileName('Systeminfos '+ GetUsername + '.txt'));
    except
      on E : Exception do
      begin
        LabelError.Caption := 'Could not put data to server: ' + E.Message;
      end;
    end;
  finally
    IdFTP1.Disconnect;
  end;
end;
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)

Geändert von s.h.a.r.k (14. Jul 2011 um 19:42 Uhr)
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: FTP Fehler Fenster nicht anzeigen

  Alt 14. Jul 2011, 19:39
Ich habe es bei mir so, bin aber nicht zu 100% sicher.

Delphi-Quellcode:
  try
    idftp1.Connect;
    try
      idftp1.Put(..
    except
      // putError
    end;
    idftp1.DisConnect;
  except
    // ConnectError
  end;
//Edit: Shark war schneller
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#4

AW: FTP Fehler Fenster nicht anzeigen

  Alt 14. Jul 2011, 19:42
Hatte noch einen Fehler oben, da ich das Exit beim ersten except-Block vergessen hatte.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

AW: FTP Fehler Fenster nicht anzeigen

  Alt 14. Jul 2011, 20:08
Schau dir mal try-except und try-finally an Guckst du hier.
Delphi-Quellcode:
procedure TFormSys.BtFTPClick(Sender: TObject);
begin
  BtSpeichern.Click;
  IdFTP1.Host:= '***';
  IdFTP1.Port:= (21);
  IdFTP1.Username:= '***';
  IdFTP1.Password:= '***';
  try
    IdFTP1.Connect;
  except
    on E : Exception do
    begin
      LabelError.Caption := 'Could not connect to server: ' + E.Message;
      Exit;
    end;
  end;
  try
    try
      IdFTP1.Put(ExtractFilePath(ParamStr(0)) +'Systeminfos '+ GetUsername + '.txt',
        ExtractFileName('Systeminfos '+ GetUsername + '.txt'));
    except
      on E : Exception do
      begin
        LabelError.Caption := 'Could not put data to server: ' + E.Message;
      end;
    end;
  finally
    IdFTP1.Disconnect;
  end;
end;
aua. Warum die verschachtelten try-except-Blöcke? Dazu nutzt man doch Exceptions, dass man genau so was nicht machen muss.

Delphi-Quellcode:
.. := Create(..);
try
  try
    Connect;
    Put;
  except
    on E: Exception do
     // Ausnahmefehler behandeln
  end;
finally
  ..Free;
end;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#6

AW: FTP Fehler Fenster nicht anzeigen

  Alt 14. Jul 2011, 21:29
aua. Warum die verschachtelten try-except-Blöcke? Dazu nutzt man doch Exceptions, dass man genau so was nicht machen muss.
Das hat den Grund, dass ich meist nicht so viel Vertrauen in *gute* Exception-Meldungen habe. Somit habe ich die Möglichkeit auf das jeweilige Problem genauer einzugehen. Ebenso muss ich dann nicht wissen, was für ein Typ von Exception den geworfen wird. Wenn man in deinem Exception-Block landet, dann weiß man nicht, ob man da gelandet ist, weil die Verbindung nicht aufgebaut werden konnte oder weil das Hochladen -- evtl. aufgrund fehlender Rechte -- nicht geklappt hat. Wobei sowas halt immer darauf ankommt, verstehe deine Aussage aber voll und ganz
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

AW: FTP Fehler Fenster nicht anzeigen

  Alt 14. Jul 2011, 21:45
Wieso? Wenn die Verbindung nicht aufgebaut werden konnte, bekommst du eine Exception von der Connect-Methode mit entsprechender Fehlermeldung, wird die Exception von der Put-Methode geworfen bekommst du eine entsprechend von der Put-Methode mit zugehörigem Fehlertext. Du weißt also ganz genau wer warum eine Exception schmeißt. Und wenn du dir noch die Dokumentation anguckst, kannst du gezielt reagieren:
Delphi-Quellcode:
on E: EConnectError do
  ...;
on E: EPutError do
  ...;
on E: Exception do
  ...;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

AW: FTP Fehler Fenster nicht anzeigen

  Alt 14. Jul 2011, 22:08
Delphi-Quellcode:
procedure TForm16.FooBar;
begin
  try
    IdFTP1.Connect;
    IdFTP1.ChangeDir('html');
    IdFTP1.Put('D:\Computer\exclude.lst', 'exclude.lst');
  except
    on E: Exception do
      ShowMessage(E.ClassName);
  end;
end;
Und guckt dir mal an, was für unterschiedliche Exceptions geworfen werden. Auf die kannst du gezielt reagieren.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz