Entwickler-Ecke
Dateizugriff - Datei Runterladen
wer_ist_wo - Mo 14.03.11 22:41
Titel: Datei Runterladen
Hallo
Ich lade per Button klick eine Datei runter.
Der Code sieht folgendermaßen aus:
Delphi-Quelltext
1:
| UrlDownloadtofile(nil,PChar('url_zu_meiner_datei'),PChar(ExtractFilePath(Application.Exename) + 'EXE Name'),0,nil); |
Doch ich will das diese Datei in einen Ordner reingeladen wird der in Programm verzeichnis liegt.
Könnt ihr mir helfen wie das geht?
lg
Moderiert von
Narses: Topic aus VCL (Visual Component Library) verschoben am Mo 14.03.2011 um 22:25
Dude566 - Mo 14.03.11 22:45
Wo ist dein Problem? Den Pfad des Anwendungsverzeichnisses bekommst du mit:
Delphi-Quelltext
1:
| ExtractFilePath(ParamStr(0)) |
wer_ist_wo - Mo 14.03.11 22:51
nein ich hab ja bereits das programm verzeichnis aber will die exe in ein von mir angelegten ordner reinladen das programm liegt unter c:// und da bei einen click auf den button wird ein ordner erstellt da soll die datei rein
lg
Dude566 - Mo 14.03.11 22:56
Na dann musst du prüfen ob der Ordner bereits existiert und wenn nicht musst du MkDir verwenden:
http://www.delphibasics.co.uk/RTL.asp?Name=MkDir
Delphi-Quelltext
1: 2: 3: 4: 5:
| procedure TForm1.btnTestDirClick(Sender: TObject); begin if NOT DirectoryExists(ExtractFilePath(ParamStr(0)) + '\test') then MkDir(ExtractFilePath(ParamStr(0)) + '\test'); end; |
jaenicke - Mo 14.03.11 22:59
wer_ist_wo hat folgendes geschrieben : |
Doch ich will das diese Datei in einen Ordner reingeladen wird der in Programm verzeichnis liegt. |
Dir ist ja hoffentlich klar, dass das dann nur bei dir funktioniert, da im Programmverzeichnis normalerweise kein Programm Schreibrechte hat. Jedenfalls, wenn man seinen PC ordentlich eingerichtet hat.
http://www.delphi-library.de/viewtopic.php?p=548600
wer_ist_wo - Mo 14.03.11 23:06
so sieht mein gesamter code bei button klick aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| begin if not DirectoryExists(ExtractFilePath(Application.Exename)+ 'test') then begin ForceDirectories(ExtractFilePath(Application.Exename)+ 'test'); end; If IdHTTP1.Get('http://www.zensiert.de//version.txt') <> version then begin Showmessage('Download gestartet'); UrlDownloadtofile(nil,PChar('http://www.zensiert.de/version.txt'),PChar(ExtractFilePath(Application.Exename) + 'wecker.exe'),0,nil); UrlDownloadtofile(nil,PChar('http://www.zensiert.de/patch.exe'),PChar(ExtractFilePath(Application.Exename) + 'patch.exe'),0,nil); UrlDownloadtofile(nil,PChar('http://www.zensiert.de/test/test.exe'),PChar(ExtractFilePath(Application.Exename) + 'project1.exe'),0,nil); Showmessage('Download beendet'); ShellExecute(Handle, nil, 'patch.exe', nil, nil, SW_SHOW); application.Terminate; end; |
Der Ordner wenn nicht existiert, wird er erstellt.
In diesen eben Erstellten ordner will ich die test.exe unter test reinladen lassen.
lg
haentschman - Mo 14.03.11 23:15
Hallo...
wie sieht denn der komplette Pfad dieses Konstruktes aus ?
Zitat: |
ExtractFilePath(Application.Exename) + 'wecker.exe' |
...und jetzt schreibe mal auf Papier wie der komplette Pfad lautet wo es hin soll... Fällt dir was auf ?
wer_ist_wo - Mo 14.03.11 23:16
Nein mir fällt nichts auf, was denn?
lg
haentschman - Mo 14.03.11 23:20
schreib mal die 2 Pfadangaben (ist und soll) hier auf...
wer_ist_wo - Mo 14.03.11 23:23
Also das Programmverzeichnis befindet sich unter c://
Wenn ich den Button klicke wird unter c:// ein ordner namens test erstellt.
In diesen Ordner soll einen der dateien rein.
lg
haentschman - Mo 14.03.11 23:27
... gaaaanz laaangsam zum Ausfüllen:
1. wo befindet sich deine EXE (Pfadangabe komplett) ?
2. wie soll der Pfad (komplett) heißen wo die Downloads hin sollen ?
3. was bitte ist bei deiner Logik das "Programmverzeichnis" ?
beantworte doch einfach mal die Nachfragen... ohne zu denken :zwinker:
PS: unter Windows gibt es kein C:// ... eher C:\
wer_ist_wo - Mo 14.03.11 23:30
1. C:\Users\Andreas\Downloads
2.C:\Users\Andreas\Downloads/test
3.Nicht jeder user hat das verzeichniss wie ich deswegen soll der ordner da erstellt werden, wo der user sein programm hat.
lg
haentschman - Mo 14.03.11 23:34
gut...
also die EXE des gestarteten Programmes liegt im Verzeichnis wie 1. ...
1. was für eine Pfadangabe liefert ExtractFilePath(Application.Exename) ?
2. welchen Pfad ergibt ExtractFilePath(Application.Exename) + 'wecker.exe' im Download ?
3. und wo soll der Download hin ?
fällt dir nun etwas auf ?
Dude566 - Mo 14.03.11 23:37
wer_ist_wo hat folgendes geschrieben : |
2.C:\Users\Andreas\Downloads/test
|
Abgesehen davon kann das auch in die Hose gehen wie
jaenicke schon geschrieben hat.
Wo genau liegt denn jetzt dein Problem bzw. was funktioniert nicht? :roll:
haentschman - Mo 14.03.11 23:39
das Problem ist sonnenklar... :zwinker:
Die Dateien sind nach dem Download nicht in "Test"... (unabhängig von den anderen Problemchen)
Ich wills nur nicht vorkauen... er soll es selbst sehen
wer_ist_wo - Mo 14.03.11 23:40
haentschman hat folgendes geschrieben : |
gut...
also die EXE des gestarteten Programmes liegt im Verzeichnis wie 1. ...
1. was für eine Pfadangabe liefert ExtractFilePath(Application.Exename) ?
2. welchen Pfad ergibt ExtractFilePath(Application.Exename) + 'wecker.exe' im Download ?
3. und wo soll der Download hin ?
fällt dir nun etwas auf ? |
1. Das liefert mir den pfad C:\Users\Andreas\Downloads
2. das ergibt den gleichen pfad nur das die exe in wecker.exe umbenannt wird.
3. Der download soll unter C:\Users\Andreas\Downloads\test rein
lg
Dude566 - Mo 14.03.11 23:42
Ja sollte doch klar sein, dass er sowas meint:
Delphi-Quelltext
1: 2: 3:
| var filepath : string; filepath := ExtractFilePath(ParamStr(0)) + 'test\wecker.exe'; |
haentschman - Mo 14.03.11 23:44
:evil: wie soll er was lernen...
zu 1. ist das der komplette Pfad oder ist am Ende ein \ ?
zu 2. wecker.exe wird an den Pfad zu 1. angehängt (durch das + ... Stringoperation) wie sieht der komplette Pfad nun aus ?
zu 3. und was fehlt nun im Downloadpfad beim UrlDownloadtofile ?
wer_ist_wo - Mo 14.03.11 23:47
Aber wie bau ich das ins programm ein damit nur die eine datei da hingeladen wird?
lg
haentschman - Mo 14.03.11 23:53
...meine Tischkante kriegt schon langsam Beulen... :zwinker:
du hast ein Problem noch nicht verstanden und kommst gleich mit neuen Fragen.
Arbeite Stück für Stück unsere Konversation von vorne noch mal ab. Schreibe es auf Papier (die Pfadangaben). Dann siehst du was falsch ist.
Tipp: es fehlt was in der Pfadangabe im UrlDownloadToFile
...ich guck morgen noch mal rein :wave:
Delete - Mo 14.03.11 23:57
Und warum mischt du eine Komponente mit einer WinAPI Funktion? Warum nimmst du für den Download nicht auch die Komponente? Kann es sein, dass hier ohne Sinn und Verstand Code zusammenkopiert wird?
wer_ist_wo - Mo 14.03.11 23:59
Ich benutze keine Componente für das Update.
Und danke an alle die viel geuduld mit mir haben
Hab es nun gecheckt.
lg
haentschman - Di 15.03.11 00:00
Zitat: |
Hab es nun gecheckt. |
...dann erkläre mal genauer, was du verstanden hast :wink:
wer_ist_wo - Di 15.03.11 00:02
ExtractFilePath(Application.Exename) + 'wecker.exe'
Hier hab ich vor wecker.exe das hier geschrieben /test
lg
haentschman - Di 15.03.11 00:05
:lol: ich könnte ja noch weiter bohren... aber erst mal gut.
Denke mal über folgende Probleme nach (Forumsuche)
1. was passiert in deinem Programm wenn während des Downloads ein Fehler auftritt ?
2. was passiert in deinem Programm wenn der Ordner nicht erstellt werden kann ?
Stichworte: try / except, Rückgabewert einer Funktion
...kleine Aufgaben bis zum nächsten Mal :wink:
Delete - Di 15.03.11 00:08
Und genau das ist der Punkt. Die API Funktion wird keine Exception auslösen. Die Komponente aber schon.
Dude566 - Di 15.03.11 10:05
haentschman hat folgendes geschrieben : |
:evil: wie soll er was lernen...
zu 1. ist das der komplette Pfad oder ist am Ende ein \ ?
zu 2. wecker.exe wird an den Pfad zu 1. angehängt (durch das + ... Stringoperation) wie sieht der komplette Pfad nun aus ?
zu 3. und was fehlt nun im Downloadpfad beim UrlDownloadtofile ? |
Auf mich wirkte er nicht so als wolle er es verstehen, deshalb die fertige Lösung. Da er aber wohl nicht mal die Grundlagen gelernt hat schätze ich, wird ihm das eh nicht viel bringen. ;)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!