Autor Beitrag
Marduk
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Di 24.09.02 13:24 
Hi Leute,
Ich habe ein Programm geschrieben, welches 1 mal wöchentlich eine Datei downloaden soll. Das klappt auch wunderbar, solange eine Internetverbindung vorhanden ist (logisch :lol: ).
Ist keine Verbindung da, bekomme ich einen Socketfehler (auch noch klar). Da das Programm aber auf nicht überwachten Rechnern laufen soll, soll da nicht die Fehlermeldung ewig stehen bleiben sondern das Programm weiterarbeiten, also eine Woche später den nächsten Versuch starten.
Ich habe es mit try...except versucht bekomme es aber nicht hin.
Ich schreib jetzt hier mal das Stückchen Quelltext rein,denke das ist die richtige stelle.
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
var

desttext,url:string;
dest:tfilestream;
log:textfile;

begin
dest.free;
desttext:=edit1.text;
DeleteFile(desttext+'\update.zip');
zeit.Caption := FormatDateTime('d. mmmm yyyy  hh:mm:ss', Now);
statusbar1.SimpleText:='Bitte warten.Datei wird heruntergeladen';
url:=edit2.text;
dest:= tfilestream.create(desttext+'\update.zip',fmcreate,fmsharedenynone);
idhttp1.get(url,dest);
statusbar1.simpletext:='Download erfolgreich.';
dest.free;

Hab jetzt mal meine Versuche mit dem Fehlerhandling komplett rausgelassen. So wie es jetzt ist funzt das Programm, nur eben noch ohne Fehlerhandling :(
CenBells
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: Di 24.09.02 13:35 
hi

probier das mal
ausblenden Quelltext
1:
2:
3:
4:
5:
try
  idhttp1.get(url,dest); 
except 
  statusbar1.simpletext:='Download nicht erfolgreich.';
end;

wenn das noch nicht klappt musst du wahrscheinlich für die komponente idhttp1 noch das ausschmeißen der fehlermeldung deaktivieren.

Gruß
Ken
Marduk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Di 24.09.02 13:51 
und wo geht das ?
Marduk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Di 24.09.02 15:02 
Jetzt bekomme ich ständig eine Adress Violation.
Hier mein Quelltext:
ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
begin
idhttp1.get(url,dest);
statusbar1.simpletext:='Download erfolgreich.';
dest.free;
WinExec(PChar('unzip.exe -o '+desttext+'/update.zip -d '+desttext),
                     SW_HIDE);

  NMSMTP1.Host   := config.Items[7];
  NMSMTP1.UserID := config.Items[8];
  NMSMTP1.Connect;
  NMSMTP1.PostMessage.FromAddress       := config.items[9];
  NMSMTP1.PostMessage.ToAddress.Text    := config.items[10];
  NMSMTP1.PostMessage.Body.Text         := 'Festplatte: '+chr(10)+label11.caption+chr(10)+label12.caption+chr(10)+prozent.caption+chr(10)+'Festplattenbelegung: '+sternletext.caption+chr(10)+'Download URL:'+edit2.text+chr(10)+' Gespeichert nach: '+edit1.text+chr(10)+'Gesendet am '+zeit.caption+chr(10)+'Gesendet durch: '+name.caption;
  NMSMTP1.PostMessage.Subject           := domain.caption+' / '+zeit.caption+config.items[11];
  NMSMTP1.SendMail;
  Statusbar1.simpletext:='Download erfolgreich. Mail wurde verschickt!';
  NMSMTP1.Disconnect;
  AssignFile(log,'log.txt');
  Append(log);
  Writeln(log,zeit.caption+': Update durchgeführt. Mailversand an: '+config.items[10]+'.');
  CloseFile(log);
  DeleteFile(desttext+'\update.zip');
  end;

except
on EIdException do begin
   statusbar1.simpletext:='Download nicht erfolgreich. Vielleicht stimmen ihre Proxy-Einstellungen nicht.';
   AssignFile(log,'log.txt');
   Append(log);
   Writeln(log,zeit.caption+': Fehler beim Download der Datei');
   CloseFile(log);
   end;

end;

end;


Ausserdem verschwinden plötzlich meine Buttons für den Download :evil: beim draufdrücken. Aber erst seit ich das Fehlerhandling eingebaut hab.
Bitte helft mir.... :crying:
Marduk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Di 24.09.02 15:04 
Hier nochmal die abgekürzte Version ohne überlange Zeilen
ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
try
begin
idhttp1.get(url,dest);
statusbar1.simpletext:='Download erfolgreich.';
dest.free;
WinExec(PChar('unzip.exe -o '+desttext+'/update.zip -d '+desttext),
                     SW_HIDE);

  NMSMTP1.Host   := config.Items[7];
  NMSMTP1.UserID := config.Items[8];
  NMSMTP1.Connect;
  NMSMTP1.PostMessage.FromAddress       := config.items[9];
  NMSMTP1.PostMessage.ToAddress.Text    := config.items[10];
  NMSMTP1.PostMessage.Body.Text         := 'Festplatte: '+chr(10);
  NMSMTP1.PostMessage.Subject           := domain.....;
  NMSMTP1.SendMail;
  Statusbar1.simpletext:='Download erfolgreich. Mail wurde verschickt!';
  NMSMTP1.Disconnect;
  AssignFile(log,'log.txt');
  Append(log);
  Writeln(log,zeit.caption+': Update durchgeführt. Mailversand;
  CloseFile(log);
  DeleteFile(desttext+'\update.zip');
  end;

except
on EIdException do begin
   statusbar1.simpletext:='Download nicht erfolgreich. Vielleicht...; 
   AssignFile(log,'log.txt');
   Append(log);
   Writeln(log,zeit.caption+': Fehler beim Download der Datei');
   CloseFile(log);
   end;

end;

end;
CenBells
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: Di 24.09.02 16:28 
an welcher stelle bekommst du denn nun genau die accessviolation?

Du solltest aber eher ShellExecuteEx oder sogar Createprocess verwenden anstelle von WinExec

Des weiteren brauchst du kein begin end zwischen try except