![]() |
Probleme bei Download auf delphilosen Pc
Hallo,
habe eine Problem mit meinem kleinen Installationsprogramm, das die Dateien von meiner Homepage in einen Ordner kopieren soll. Dies klappt auch soweit, nur nicht auf meinem Pc. Mein Pc hat kein Delphi noch die dafür nötigen Installationen. Der Pc hat Windows Xp SP2. Habe dies schon im ![]() Ist es vlt. ein Problem mit der uses UrlMo
Delphi-Quellcode:
const
HELPURL = 'http://meinehomepage.de/help.ini';
Delphi-Quellcode:
Die Ini sieht so aus
procedure Tfrm_InstallVocTrainer.bbtn_installClick(Sender: TObject);
var Ziel, UFile : String; Ini : TIniFile; loop, i : Integer; 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; begin if ed_InstallDir.Text='' then ed_InstallDir.Text := GetProgDir; //Gibt Ordner der Programme zurueck (C:\Programme\) Try Ziel := ed_InstallDir.Text+'VokabelTrainer\'; UrlDownloadToFile(nil, HELPURL, PChar(Ziel+ExtractUrlFileName(HELPURL)), 0, nil); Except ShowMessage('Fehler bei Download'); End; Ini := TIniFile.Create(Ziel+ExtractUrlFileName(HELPURL)); Try Try i := Ini.ReadInteger('D-Files','FCount', 0); Memo1.Clear; Memo1.Lines.Add('Download gestartet'); //Diese beiden sind als einzige im Memo sichtbar Memo1.Lines.Add(''); //Diese auch, bin ratlos for loop := 1 to i do begin UFile := Ini.ReadString('D-Files', 'File'+IntToStr(loop), ''); UrlDownloadToFile(nil, Pchar(UFile), PChar(Ziel+ExtractUrlFileName(UFile)), 0, nil); Memo1.Lines.Add(UFile+' nach:'); Memo1.Lines.Add(Ziel+ExtractUrlFileName(UFile)+' gedownloadet'); end; Except ShowMessage('Download fehlgeschlagen!'); End; Finally Ini.Free; End; end;
Code:
[D-Files]
FCOUNT=5 File1=http://meinehomepage.de/Options.ini File2=http://meinehomepage.de/VocabularyTeacher.exe File3=http://meinehomepage.de/s_neutral.bmp File4=http://meinehomepage.de/s_right.bmp File5=http://meinehomepage.de/s_wrong.bmp |
Re: Probleme bei Download auf delphilosen Pc
Wo liegt denn die ini
wenn die beim Programm liegt fehlen vieleicht entsprechende Rechte. XP und Vista ist da etwas pingelich. Inis sollten immer im Userverzeichnis/Anwendungsdaten abgelegt werden Gruß Matthias |
Re: Probleme bei Download auf delphilosen Pc
Ich hatte vor die help.ini in das Programmverzeichnis abzulegen (C:\Programme\VokabelTrainer\help.ini). Admin rechte besitze ich.
Edit: Auch wenn ich einen Ordner am Desktop auswähle funzt es nicht, doch dann müsste doch eine Exeption auftreten?? |
Re: Probleme bei Download auf delphilosen Pc
du schreibst das du ein Problem hast. Wo liegt das genau bzw. wie äußert es sich? Kommt eine Fehlermeldung? Wann ja welche? Wenn nicht, was passiert was hätte nicht passieren sollen?
Gibt dir URLDownloadToFile nichts zurück? Anhand des Namens würde ich vermuten das dir da ein Status zurück gegeben wird ob es geklappt hat oder nicht wenn nicht sogar direkt den Fehler. |
Re: Probleme bei Download auf delphilosen Pc
Das Problem äussert sich indem man im Memo sieht:
Code:
Keine Exception auftritt und der Ordner leer bleibt, der Button wird aber wieder "losgelassen" und das Formular kann noch betätigt werden, schreibe momentan den Code um und versuche raise eine exception auszulösen wenn URlDownloadToFile nicht S_Ok zurückgibt (
Download gestartet
![]() |
Re: Probleme bei Download auf delphilosen Pc
das sieht dann so aus als wenn deine for-schleife nicht ein einziges mal durchläuft.
lass dir mal den wert von i ausgeben. der wird sicher <= 0 sein. |
Re: Probleme bei Download auf delphilosen Pc
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:
Mfg, Jeff
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; Edit: Ich glaube das Problem war vorher dass der Ordner nicht angelegt war dies habe ich mit FoceDirectory behoben. |
Re: Probleme bei Download auf delphilosen Pc
URLDownloadToFile(..) blockt nunma deine anwendung solange es läuft/downloaded.
wenn du das verhindern willst würde ich n eigenen thread für die aufgabe erstellen. der läuft/downloaded, aber deine anwendung reagiert noch normal. |
Re: Probleme bei Download auf delphilosen Pc
Liste der Anhänge anzeigen (Anzahl: 1)
Ok danke für deine Infos! Soll ich ein TThread Objekt benutzen oder CreateThread ??
Und noch eine Frage wie könnte ich einfach und schnell den Download per Button abbrechen? Kann jemand bitte die Exe testen und posten ob es übertrieben lange dauert? Ps: Hab's nochmal auf meinem altem Pc (der arme) probiert ist wieder fast zusammengebrochen |
Re: Probleme bei Download auf delphilosen Pc
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz