| Autor |
Beitrag |
kulka1
      
Beiträge: 81
|
Verfasst: Di 02.06.09 13:29
Hallo!
ich möchte, das wenn ich auf ein Button klicke, eine Datei von meinem Server heruntergeladen wird, und diese Datei soll dann in einem Ordner eine gleichnamige Datei ersetzen!
Wenn möglich sollte der Fortschritt mit einer Progressbar angezeigt werden
Könnt ihr mir weiterhelfen? =)
mfg kulka1
p.s. codes sind auch erwünscht :P Moderiert von Narses: Topic aus Datenbanken verschoben am Di 02.06.2009 um 14:10
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 02.06.09 14:15
Schon die Forensuche bemüht oder in der entsprechenden Sparte mal geguckt?
|
|
whirl
Hält's aus hier
Beiträge: 10
|
Verfasst: Di 02.06.09 15:16
Wohin soll die Datei denn heruntergeladen werden? Wenn sie auf deinem Rechner landen soll, dann ist das doch eine lokale Angelegenheit, die mit der eigentlichen Programmierung gar nichts zu tun hat. Oder verstehe ich dich falsch?
Beschreib dein Problem doch bitte noch einmal etwas konkreter, es ist schwer sich etwas darunter vorzustellen.
Gruß, Whirl
|
|
Tropby
      
Beiträge: 71
Erhaltene Danke: 4
Vista, Win XP, Win 89
Turbo Delphi Ex.
|
Verfasst: Di 02.06.09 17:14
Diese Funktion kann dir die Datei herunterladen und sollte auch eine bestehende Datei überschreiben.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34:
| function DownloadFile( url: string; const destinationFileName: string): boolean; var hInet: HINTERNET; hFile: HINTERNET; localFile: File; buffer: array[1..1024] of byte; bytesRead: DWORD; begin result := False;
url := Strtourl(url); hInet := InternetOpen(PChar(application.title), INTERNET_OPEN_TYPE_DIRECT,nil,nil,0); hFile := InternetOpenURL(hInet, PChar(url), nil, 0, INTERNET_FLAG_PRAGMA_NOCACHE, 0); if Assigned(hFile) then begin AssignFile(localFile,destinationFileName); Rewrite(localFile,1); repeat InternetReadFile(hFile,@buffer,SizeOf(buffer),bytesRead); BlockWrite(localFile,buffer,bytesRead); until bytesRead = 0; CloseFile(localFile); result := true; InternetCloseHandle(hFile); end; InternetCloseHandle(hInet); end; |
|
|
kulka1 
      
Beiträge: 81
|
Verfasst: Di 02.06.09 23:35
hey... ähm, was für variablen muss ich da denn benutzen??
und wo genau muss bei dem beispiel die url vom download hin und der Pfad zum hinspeichern und ersetzen?
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 02.06.09 23:41
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Di 02.06.09 23:42
kulka1 hat folgendes geschrieben : | | und wo genau muss bei dem beispiel die url vom download hin und der Pfad zum hinspeichern und ersetzen? |
Werden als Parameter beim Aufruf mit gegeben.
Und welche Unit du dafür unter uses hinzufügen musst, steht evtl. in der Hilfe. Markier einfach mal einen der unbekannten Begriffe und drück F1, da sollte irgendwo stehen, welche Unit dafür benötigt ist.
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
kulka1 
      
Beiträge: 81
|
Verfasst: Di 02.06.09 23:44
uups  , da ist mir was durche hosenträger gegangen 
ich habe nicht den ganzen teil gelesen, wusste nicht das da noch mehr ist  , hab nur am dem begin teil alles gesehen^^... ma eben ausprobiern 
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 02.06.09 23:50
Xentar hat folgendes geschrieben : | | Und welche Unit du dafür unter uses hinzufügen musst, steht evtl. in der Hilfe. |
Nicht nötig, einfach rechte Maustaste drauf, "Refactoring" --> "Find Unit...", bestätigen, fertig. In diesem Fall wird die Unit dabei auch gefunden.
Bei Delphi 7 oder früher muss man nachschauen, allerdings wohl nicht in der Hilfe sondern der MSDN Dokumentation.
|
|
kulka1 
      
Beiträge: 81
|
Verfasst: Di 02.06.09 23:57
Delphi-Quelltext 1: 2: 3:
| function DownloadFile( http: const 'Software\EA Sports\FIFA 09\data\cmn': string): boolean; |
habe das jetzt so, aber da ich habe da mit sicherheit was falsch eingetragen   , weil er erkennt jetzt "const" nicht mehr^^, iwas
also er soll das in den ordner Software\EA Sports\FIFA 09\data\cmn speichern, dort ist auch schon eine fifa.db.
und von der seite foliga.de/fifa.db läd er eine andere .db runter und ersetzt die ältere im genannten ordner!
|
|
Tropby
      
Beiträge: 71
Erhaltene Danke: 4
Vista, Win XP, Win 89
Turbo Delphi Ex.
|
Verfasst: Mi 03.06.09 00:00
Du musst das ungefähr so aufrufen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| function DownloadFile(url: string; const destinationFileName: string): boolean; begin
end;
procedure TForm1.Button1Click(Sender : TObject); begin DownloadFile('http://foliga.de/fifa.db', 'c:\Software\EA Sports\FIFA 09\data\cmn'); end; |
_________________ Tropby
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Mi 03.06.09 00:02
Du veränderst da gerade den Funktionskopf -> Nix gut.
Die Parameter musst du beim AUFRUF angeben, also z.B. in nem ButtonClick oder sowas. Siehe www.christian-stelzm...oaded/#_Toc180058867
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
kulka1 
      
Beiträge: 81
|
Verfasst: Mi 03.06.09 00:10
was ist denn nu richtig^^, also wenn ich dieshier einfüge:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| function DownloadFile(url: string; const destinationFileName: string): boolean; begin
end;
procedure TForm1.Button1Click(Sender : TObject); begin DownloadFile('http://foliga.de/fifa.db', 'c:\Software\EA Sports\FIFA 09\data\cmn'); end; |
dann zeigt er mir
Undefinierte Bezeichner an: HINTERNET, Strtourl, Internetopen, INTERNET OPEN TYPE DIRECT, InternetOpenURL, INTERNET_FLAG_PRAGMA_NOCACHE, InternetReadFile, InternetCloseHandle
der button ist bei einem vorhanden erstellten webbrowser, nur zur info
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Mi 03.06.09 00:14
kulka1 hat folgendes geschrieben : |
Undefinierte Bezeichner an: HINTERNET, Strtourl, Internetopen, INTERNET OPEN TYPE DIRECT, InternetOpenURL, INTERNET_FLAG_PRAGMA_NOCACHE, InternetReadFile, InternetCloseHandle
|
Jo.
Und dazu, siehe oben:
Xentar hat folgendes geschrieben : | | Und welche Unit du dafür unter uses hinzufügen musst, steht evtl. in der Hilfe. Markier einfach mal einen der unbekannten Begriffe und drück F1, da sollte irgendwo stehen, welche Unit dafür benötigt ist. |
und
jaenicke hat folgendes geschrieben : | Nicht nötig, einfach rechte Maustaste drauf, "Refactoring" --> "Find Unit...", bestätigen, fertig. In diesem Fall wird die Unit dabei auch gefunden.
Bei Delphi 7 oder früher muss man nachschauen, allerdings wohl nicht in der Hilfe sondern der MSDN Dokumentation. |
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
kulka1 
      
Beiträge: 81
|
Verfasst: Mi 03.06.09 00:27
das mit f1 hat nicht geklappt, da steht das der dienst bei windows vista nicht unterstützt wird (Die Hilfe für dieses Programm wurde in einem Windows-Hilfeformat erstellt, das in früheren Versionen von Windows verwendet wurde. Es wird in Windows Vista nicht unterstützt.)
und das von jaenicke fügt oder zeigt mir auch nicht die gesuchte uses klausel, oder vllt liegt das mit dieser komisches hilfe dingsbums zusammen  ... bzw ich habe es auf englisch nicht genau gefunden, weils auf deutsch ist, unter Fehlersuche war das jedenfalls nicht dabei  und auch sonst nichts das das zum laufne bringt -.-
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 03.06.09 00:42
kulka1 hat folgendes geschrieben : | | das mit f1 hat nicht geklappt, da steht das der dienst bei windows vista nicht unterstützt wird |
Wie du das hinbekommst habe ich hier geschrieben...
www.delphi-library.d...ewtopic.php?p=544403
kulka1 hat folgendes geschrieben : | | und das von jaenicke fügt oder zeigt mir auch nicht die gesuchte uses klausel |
Das liegt daran, dass du eine alte Version von Delphi hast (wie man an dem Fehler mit der Hilfe sieht), da funktioniert das mit dem Refactoring in der Tat noch nicht, da muss man die Unit manuell suchen, wie die ganzen anderen Sachen auch. Das kann halt noch nicht so viel selbst.
In deinem Fall ist das die Unit WinINet, wie du in der MSDN Dokumentation wie gesagt siehst...
|
|
kulka1 
      
Beiträge: 81
|
Verfasst: Mi 03.06.09 01:44
ich denke ich habe den ganzen sinn jetzt verstanden
die hilfe geht jetzt bei mir =)... allerdings weiß ich noch nciht wie du "wininet" herausgefunden hast
jetzt möchte er von mir nur noch wissen:
Delphi-Quelltext
aber welche uses klausel dafür verwendet werden muss hab ich konnte ich nicht so leicht herausfinden wie du 
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 03.06.09 02:36
|
|
kulka1 
      
Beiträge: 81
|
Verfasst: Mi 03.06.09 09:45
okay danke =)
das programm läuft jetzt, aber noch nicht fehlerfrei
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36:
| function DownloadFile(url: string; const destinationFileName: string): boolean; var hInet: HINTERNET; hFile: HINTERNET; localFile: File; buffer: array[1..1024] of byte; bytesRead: DWORD; begin result := False;
hInet := InternetOpen(PChar(application.title), INTERNET_OPEN_TYPE_DIRECT,nil,nil,0);
hFile := InternetOpenURL(hInet, PChar(url), nil, 0, INTERNET_FLAG_PRAGMA_NOCACHE, 0); if Assigned(hFile) then begin AssignFile(localFile,destinationFileName); Rewrite(localFile,1); repeat InternetReadFile(hFile,@buffer,SizeOf(buffer),bytesRead); BlockWrite(localFile,buffer,bytesRead); until bytesRead = 0; CloseFile(localFile); result := true; InternetCloseHandle(hFile); end; InternetCloseHandle(hInet); end;
procedure TForm1.Button5Click(Sender: TObject); begin DownloadFile('http://foliga.de/fifa.db', 'c:\Software\EA Sports\FIFA 09\data\cmn'); end; |
zeile 21 wird dann markiert und es kommt diese fehlermeldung:
| Zitat: | | Im WebBrow.exe ist eine Exeption der Klasse EInOutError aufgetreten. Meldung 'Ungültiger Dateiname'. Prozess wurde angehalten. Mit einzelne Anweisung oder Start fortsetzen. |
was bedeutet das?
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Mi 03.06.09 10:24
Steht doch da: Der Dateiname ist ungültig.
Hast dich vielleicht im Ordnernamen vertippt? Sicher, dass es c:\Software ist, und nicht c:\Programme ?
Außerdem hast du keine Dateiendung angegeben..
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
|