Einzelnen Beitrag anzeigen

gee21

Registriert seit: 3. Jan 2013
199 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Schleife, IdFtp, Stringlisten, optimieren?

  Alt 12. Okt 2017, 19:02
Ja, nur weil etwas langsam ist, kann man da erstmal nichts dadurch verbessern, wenn man das so blos 1-zu-1 in einen Thread verschiebt.
Wird sogar langsamer, da dort dann zusätzlich eine Synchronisierung mit der VCL rein muß.

Aber man könnte das innerhalb der Schleife auf mehrere Threads verteilen und so parallel mehrere Dateien runterladen/entpacken, was schneller werden könnte.
- falls der einzelne Download nicht eh schon die gesamte Bandbreite ausnutzt
- falls das Entpacken nicht die Festplatte auslastet
> da würden die sich parallel natürlich gegenseitig ausbremsen




Zitat:
TipTop funktioniert
Nunja, funktionieren vielleicht, aber da liegt so Einiges im Argen.

Warum ist A eine glöbale Varialbe?
Dass diese StringListe immer wieder neu erzeigt und nie freigegeben wird, wurde schon erwähnt.

Da A eine globale Variable ist, warum hat die dann soo einen extem ungünstigen Namen?
Form1, Form2, Form3 und Form6 .... ähhhhhhhhhhhh

if ... = true then sollte man auch nie machen, also das Vergleichen mit diesen Konstanten.
> if ... then oder if not ... then

Zitat:
if a.Strings[4]='Optional=NEINthen begin
Meinst du nicht eher if a.Values['Optional'] = 'NEINthen begin oder if SameText(a.Values['Optional'], 'NEIN') then begin ,
denn was mag wohl passieren, wenn das mal nicht in Zeile 5 steht oder die Groß-/Kleinschreibung nicht stimmt? (vielleicht auch noch ein Trim mit rein)

Zitat:
Delphi-Quellcode:
except
  Addline('ERROR: Download '+a.Strings[0]+'.zip - Code 963' );
end;
Für solche Fehlerbehandlungen sollte man bestraft werden.
Was ist "Code 963" und sicher, dass es dieser Fehler ist?
Immerhin vernichtest du fahrlässig die eigentliche Fehlerursache, welche in der Exception-Message erwähnt wird, welche du nicht beachtest.

Die Codeformatierung (spezielL die Einrückung) sollte man hier besser nicht erwähnen.

Besten Dank für dieses Infos. Das hilft mir sehr weiter.
Ich habe nun alle deine Verbesserungen übernommen und ausprobiert. Funktioniert alles gut.

Das aufteilen der Downloads auf mehrere Threads gibts da ne spezielle Methode wie mann das macht?
Oder kann ich einfach 3 Threads erstellen und diese hintereinander starten? würde es dann nicht probleme geben mit der idftp Komponente?
Robert
  Mit Zitat antworten Zitat