Eine Datei in dem selben Programm-Verzeichnis herunterladen
Hallo
wie kann ich eine Datei von Internet in dem selben Ordner der Anwendung herunterladen? |
Re: Eine Datei in dem selben Programm-Verzeichnis herunterla
Normaluser mit Vista und aktiver UAC? Gar nicht.
|
Re: Eine Datei in dem selben Programm-Verzeichnis herunterla
Zitat:
|
Re: Eine Datei in dem selben Programm-Verzeichnis herunterla
OK, hätte ich dazu schreiben können. Aber ich wollte lediglich darauf hinweisen, dass es eine Unsitte ist, im Verzeichnis der eigenen Anwendung Daten ablegen zu wollen.
|
Re: Eine Datei in dem selben Programm-Verzeichnis herunterla
Zitat:
|
Re: Eine Datei in dem selben Programm-Verzeichnis herunterla
Das ist falsch, es immer so zu verallgemeinern. Es gibt Fälle, da ist es sinnvoll, Daten im Anwendungsverzeichnis abzulegen. Meist ist es jedoch schlecht u.a. aufgrund fehlender Rechte bzw. aufgrund der Strukturierung, und dann hast du Recht (Edit: @Detlef).
Worin liegt denn dein Problem, Thomas? Den Anwendungspfad erhälst du beispielsweise über
Delphi-Quellcode:
was dir die Suchfunktion geliefert hätte. Wie man Dateien herunterlädt steht auch in der DP: URLDownloadToFile oder mit den Indys über "IdHTTP.Get()".
Path := ExtractFilePath(ParamStr(0));
Also nutze die Suche zukünftig, dafür ist sie da. Grüße, Matze |
Re: Eine Datei in dem selben Programm-Verzeichnis herunterla
IOch bin mir ziemlich sicher, dass wenn das Programm im Ordner "eigen dateien" liegt, dass es dann eine Datei runterladen und im eigenem Order speichern kann, weil es dort Schreibrechte hat.
Und es muss keine Unsitte sein. Es kommt eben auf den Verwendungszweck an. Programme die extra für USB-Sticks entwicklet wurden, sollten schon ihre dateien im eigenem ordner speichern. Programme, die für ein mehrbenutzersystem entwickelt wurden, sollten dies natürlich nicht tun, wenn es um benutzerspezifische dateien geht. |
Re: Eine Datei in dem selben Programm-Verzeichnis herunterla
Wenn wir doch mal ehrlich sind, wird der eigene Anwendungsordner meist deshalb verwendet, weil er so schön bequem zu finden ist. Das meinte ich mit Unsitte. Und wenn ich dann noch in gewissen Systemvoraussetzungen lesen muss "Windows XP oder Windows Vista mit deaktivierter Benutzerkontensteuerung" geht mir der Hut hoch.
|
Re: Eine Datei in dem selben Programm-Verzeichnis herunterla
Zitat:
[Edit] noch etwas dazu geschrieben ;) |
Re: Eine Datei in dem selben Programm-Verzeichnis herunterla
Meist <> nur (liest eigentlich niemand genau, was ich hier schreibe?). Und portable Anwendungen stellen eher die Minderheit dar (behaupte ich einfach mal). Ist aber auch egal, ich habe gesagt, was ich zu sagen hatte.
|
Re: Eine Datei in dem selben Programm-Verzeichnis herunterla
Zitat:
|
Re: Eine Datei in dem selben Programm-Verzeichnis herunterla
Mit diesem Code, was ich hier in DP gefunden habe, funktioniert aber es erscheint ein Problem zu sein und zwar: Beim ab zweiter Aufruf, wird nicht die Datei direkt vom Server downloadet sondern vom Temp :mrgreen:
Ich ändere die Quelle in Server aber wenn ich die Datei downloade, dann finde ich dass der Code die alte Datei vom temp wahrscheinlich geholt hat !!!
Delphi-Quellcode:
http://www.delphipraxis.net/internal...downloadtofile
uses
URLMon; procedure TForm1.Button1Click(Sender: TObject); var Datei,Ziel:PChar; begin try Datei := 'http://www.DieSeite/DieDatei.txr'; Ziel := 'C:\Windows\Desktop\DieDatei.txt'; UrlDownloadToFile(nil, Datei, Ziel, 0, nil); except ShowMessage('Ein Fehler ist aufgetreten! Programm wird beendet!'); Form1.Close; end; end; end; |
Re: Eine Datei in dem selben Programm-Verzeichnis herunterla
Das liegt am Cache vom IE (und der wird bei dem Aufruf genutzt) ... das gleiche Verhalten hast du nämlich auch mit dem IE direkt.
IE-Cache löschen und es geht wieder ;) |
Re: Eine Datei in dem selben Programm-Verzeichnis herunterla
Zitat:
Und so hast du weder ein Problem mit den Rechten noch mit der Möglichkeit der portablen Verwendung. |
Re: Eine Datei in dem selben Programm-Verzeichnis herunterla
Hier ist eine Funktion, die eine Datei direkt ohne cache downloadet aber
das Aufruf der Funktion klappt bei mir nicht: 3. Funktion ganz unten : http://www.swissdelphicenter.ch/torr...ode.php?id=412
Delphi-Quellcode:
es passiert nichts
procedure TForm1.Button1Click(Sender: TObject);
var s,k: String; begin k:='http://xxx.com/test.gif'; s:='test.gif'; DownloadURL_NOCache(k, s); end; |
Re: Eine Datei in dem selben Programm-Verzeichnis herunterla
Wie wäre es denn, wenn du einfach mit den Indy Komponenten (die ja bei den meisten Delphiversionen bis auf die ganz alten Personal Editions dabei sind) die Datei direkt in den Speicher herunterlädst? Dann landet die gar nicht erst auf der Festplatte.
Da ist ganz einfach die Frage was du vor hast. Wenn du z.B. eine Versionsüberprüfung machen willst, dann ist das die einzig sinnvolle Lösung. Dass der Download nicht klappt, könnte am fehlenden Pfad liegen, ausprobiert habe ich das jetzt nicht. |
Re: Eine Datei in dem selben Programm-Verzeichnis herunterla
Zitat:
Grüße Klaus |
Re: Eine Datei in dem selben Programm-Verzeichnis herunterla
Indy ist bei mir installiert, gibt es ein Beispiel ?
Ja, es geht um eine Update. Ich wollte die Anwendung updaten Es geht nur um eine Datei Die Überprüfung der Update funktioniert wunderbar Ich habe Delphi 7 Pro |
Re: Eine Datei in dem selben Programm-Verzeichnis herunterla
Gib als Speicherpfad für die Datei generell einen absoluten Pfad an. Wer weiß wo die Datei sonst landet.
Merke dir einfach: Nutze nie relative Pfade. Dann kannst du solche Fehler schonmal ausschließen. |
Re: Eine Datei in dem selben Programm-Verzeichnis herunterla
Zitat:
Genauso geht das auch mit einer Datei, nur dass du als zweiten Parameter einen Stream angeben musst. Dann wird die Datei in den Stream gelegt, das kann ein TFileStream sein. Wie das geht siehst du z.B. hier: http://www.delphipraxis.net/internal...ct.php?t=44279 Hast du eigentlich die benötigten Adminrechte für ein Update berücksichtigt? Die saubere Vorgehensweise wäre für ein Programmupdate so: Die neue Datei ins Verzeichnis für temporäre Dateien (GetTempPath) herunterladen. Dann einen Updater mit Adminrechten starten, der entweder extra mitgeliefert wird oder in der Exe mitgeliefert wird oder die Exe selbst mit entsprechenden Parametern. Unter Vista wird dann die UAC angezeigt, der Nutzer bestätigt die Adminrechte, und dann kannst du erst eine Datei unter c:\programme ersetzen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:04 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