Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Download mehrerer Dateien wird bei Fehler gestoppt (https://www.delphipraxis.net/79652-download-mehrerer-dateien-wird-bei-fehler-gestoppt.html)

silentAMD 26. Okt 2006 00:07


Download mehrerer Dateien wird bei Fehler gestoppt
 
hi,
ich habe hier folgenden code zum dateien-downloaden.
die variable "sta" ist vom typ tstrings, deren einträge ordnerpfade enthalten

Delphi-Quellcode:
directory := '';
SelectDirectory('Ordner auswählen', '' , directory);
if(directory = '') then
  exit;
directory := IncludeTrailingPathDelimiter(directory);
id_http := TidHTTP.Create(Application);
for i := 1 to str.Count - 1 do
begin
  load := StringReplace('http://localhost/'+str[i], ' ', '%20', [rfReplaceAll]);
  try
    fs := TFileStream.Create(directory+extract_filename(str[i]), fmCreate);
    id_http.Get(load, fs);
  finally
    fs.Free;
  end;
end;
falls allerdings eine datei nicht existiert, kommt eine fehlermeldung und das script wird komplett abgebrochen!!
wie kann ich dies verhindern??


PLEASE HELP!!!

Luckie 26. Okt 2006 00:57

Re: Download mehrerer Dateien wird bei Fehler gestoppt
 
In dem du die Ausnahme behandelst mit einem try-except-Block. Tust du das nicht, wird die Ausnahme bis in das Application-Objekt weitergereicht und damit bist du aus der Schleife raus. Schöne ist es natürlcih vorher zu prüfen, ob die Datei existiert.

Und was ist mit der ersten Datei:
Delphi-Quellcode:
for i := 1 to str.Count - 1 do
Die StringListe fängt bei null an.

Zitat:

Zitat von silentAMD
die variable "sta" ist vom typ tstrings, deren einträge ordnerpfade enthalten

Was für eine Variable sta? Ich hoffe du hast sie nicht mit TStringList instanziert und nicht als TStrings.

silentAMD 26. Okt 2006 15:30

Re: Download mehrerer Dateien wird bei Fehler gestoppt
 
@Luckie: danke für die hilfe! ich werde es gleich probieren ob es mit except klappt! im laufe des tages ist mir auch einfgefallen, dass ich direkt in meinem php-script, das sich um die ausgabe an die delphianwendung kummert, überprüfen könnte, ob die datei existiert

Zitat:

Zitat von Luckie
Und was ist mit der ersten Datei:
Delphi-Quellcode:
for i := 1 to str.Count - 1 do
Die StringListe fängt bei null an.

das ist mir bewusst...ich muss bei der liste eben beim eintrag "1" anfangen, weil eintrag "0" den bestätigungs/fehlercode enthält, dne ich aus dem internet von einem phpscript geschickt bekomme


Zitat:

Zitat von Luckie
Zitat:

Zitat von silentAMD
die variable "sta" ist vom typ tstrings, deren einträge ordnerpfade enthalten

Was für eine Variable sta? Ich hoffe du hast sie nicht mit TStringList instanziert und nicht als TStrings.


verschreiben darf ich mich ja wohl noch ;) genau wie du (siehe den letzten satz :P ) was meinst du damit? sind tstrings nicht geeignet? tstringlist muss man erstellen, tstrings meines wissens nicht... mich würde eh der unterschied mal interessieren von den beiden

silentAMD 26. Okt 2006 15:32

Re: Download mehrerer Dateien wird bei Fehler gestoppt
 
(eintrag kann gelöscht werden... bin ausversehen auf zitat statt edit gekommen^^)

Luckie 26. Okt 2006 19:32

Re: Download mehrerer Dateien wird bei Fehler gestoppt
 
Natürlich muss auch eine Instanz von TStrings erzeugen, wenn man damit arbeiten will. Nur macht es nicht viel Sinn mit TStrings zu arbeiten, da es eine abstrakte Klasse ist und somit fast nur aus leeren Methodenrümpfen besteht. Bei
Delphi-Quellcode:
var
  sl: TStrings;
begin
  sl := TStrings.Create
  try
    sl.Add('foobar');
wird es zum Beispiel krachen, da die Methode Add nicht implementiert ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:18 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