Einzelnen Beitrag anzeigen

Jeff93

Registriert seit: 25. Mär 2008
Ort: Luxemburg
58 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Probleme bei Download auf delphilosen Pc

  Alt 28. Jul 2008, 16:47
i ist 5^^

habe hier mal einen neuen Code geschrieben, doch mein Programm läuft unsauber, die Form verwackelt und mein alter Pc geht dabei fast drauf, wo kann ich noch ein paar Code-Schnipsel zur Optimierung einbauen?

Delphi-Quellcode:
procedure Tfrm_InstallVocTrainer.bbtn_installClick(Sender: TObject);
var
  Target, UrlFile, Path : String;

  //Name eines Datei im Url-Pfad ausgeben
  function ExtractUrlFileName(Url:String) : String;
  var SPos : Integer;
  begin
    SPos := Pos('/', Url);
    if SPos <> 0 then
    begin
      Result := ExtractUrlFileName(Copy(Url, SPos+1, Length(Url)-1));
    end
    else
    begin
      Result := Url;
    end;
  end;

  //Fehlgeschlagener Download -> Exception auslösen
  function DownloadFile(AFrom, ATo : String) : Boolean;
  var
    Answer : Boolean;
  begin
    Result := True;
    Try
      UrlDownloadToFile(nil, Pchar(AFrom), PChar(ATo), 0, nil);
      Answer := FileExists(ATo);
      if not Answer then raise EDownloadError.Create('Der Download konnte nicht beendet werden');
    Except
      on E : EDownloadError do ShowMessage('Download fehlgeschlagen:'+#13#10+
                                           AFrom+' nach'+#13#10+ATo)
      else ShowMessage('Download fehlgeschlagen:'+#1310+AFrom+' nach'+#13#10+ATo);
      Result := False;
    End;
    Application.ProcessMessages;
  end;

procedure ReadIniFile(HelpIni : String);
  var
    Ini : TIniFile;
    loop, i : Integer;
    Answer : Boolean;
  begin
    Ini := TIniFile.Create(HelpIni);
    Try
      Memo1.Lines.Add('Download gestartet');
      Memo1.Lines.Add('');
      i := Ini.ReadInteger('D-Files','FCount', 0); //Wieviele Dateien
      for loop := 1 to i do
      begin
        UrlFile := Ini.ReadString('D-Files', 'File'+IntToStr(loop), '');
        Answer := DownloadFile(UrlFile, Path + ExtractUrlFileName(UrlFile));
        if Answer then
        begin
          Memo1.Lines.Add('Download erfolgreich');
        end
        else
        begin
          Memo1.Lines.Add('Download von '+UrlFile+' fehlgeschlagen');
        end;
      end;
    Finally
      Ini.Free;
    End;
  end;

begin
  Memo1.Clear;
  //leeres Edit abfangen
  if ed_InstallDir.Text= 'then
    ed_InstallDir.Text := GetProgDir;


  Path := IncludeTrailingBackslash(ed_InstallDir.Text)+'VokabelTrainer\';
  ForceDirectories(Path);
  if DownloadFile(HELPURL, Path+ExtractUrlFileName(HELPURL)) then
  begin
    Memo1.Lines.Add('Hilfsdatei heruntergeladen');
    ReadIniFile(Path+ExtractUrlFileName(HELPURl));
  end;
end;
Mfg, Jeff

Edit: Ich glaube das Problem war vorher dass der Ordner nicht angelegt war dies habe ich mit FoceDirectory behoben.
  Mit Zitat antworten Zitat