AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi .zip-Archiv in bestimmtes Archiv herunterladen
Thema durchsuchen
Ansicht
Themen-Optionen

.zip-Archiv in bestimmtes Archiv herunterladen

Ein Thema von Premaider · begonnen am 10. Apr 2012 · letzter Beitrag vom 10. Apr 2012
Antwort Antwort
Seite 4 von 5   « Erste     234 5      
Andreas L.

Registriert seit: 23. Mai 2011
Ort: Furth im Wald
308 Beiträge
 
Delphi 11 Alexandria
 
#31

AW: .zip-Archiev in bestimmtes Archiev herunterladen

  Alt 10. Apr 2012, 15:56
Sieht jetzt bei mir so aus:
urldownloadtofile(nil,'http://img3.imagebanana.com/img/k789yl2d/AssassinsCreed_Dx102008061616351998.jpg','UserAppData\.minecraft\texturepacks',0,nil);
Du hast den Funktionsnamen UserAppData in den String geschrieben statt ihn damit zu verbinden. So ist es richtig:
urldownloadtofile(nil,'http://img3.imagebanana.com/img/k789yl2d/AssassinsCreed_Dx102008061616351998.jpg',GetUserAppData + '\.minecraft\texturepacks',0,nil);
Ist es möglich dabei einige downloadinfos anzeigen zu lassen ? Weil bei der 30MB .zip-Datei kann das ja schon etwas dauern, also downloadgeschwindigkeit und restdauer oder so
Ob und wie das mit URLDownloadToFile geht weiß ich nicht. Mit den Indy-Komponente ist es aber ganz einfach: Einfach TIdHTTP auf das Form ziehen und folgenden Code ausführen:
Delphi-Quellcode:
const
  DownloadFile = 'http://img3.imagebanana.com/img/k789yl2d/AssassinsCreed_Dx102008061616351998.jpg';
var
  DownloadPath: String;
  fs: TFileStream;
begin
  DownloadPath := GetUserAppData;

  fs := TFileStream.Create(DownloadPath + 'Dateiname.jpg', fmCreate);
  try
    IdHTTP1.Get(DOWNLOAD_FILE, fs);
  finally
    FreeAndNil(fs);
  end;
end;
Im Objekt-Inspektor kannst du der IdHTTP-Komponente verschiedene Ereignisse zuweisen, so z. B. auch um die restliche Downloadzeit zu ermitteln oder eine ProgressBar zu aktualisieren...
Andreas Lauß
Blog
  Mit Zitat antworten Zitat
Premaider

Registriert seit: 31. Mär 2012
160 Beiträge
 
#32

AW: .zip-Archiev in bestimmtes Archiev herunterladen

  Alt 10. Apr 2012, 15:56
Zudem sollte sichergestellt werden, dass der Pfad, in den du schreiben willst, überhaupt existiert!
DirectoryExists und ForceDirectories wären hier zwei nützliche Methoden.
Es existiert in jedem Fall
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#33

AW: .zip-Archiev in bestimmtes Archiev herunterladen

  Alt 10. Apr 2012, 15:56
Und nochmal im Ganzen, damit das hoffentlich mal weitergeht:
Delphi-Quellcode:
uses SHFolder;

function SpecialFolder(CSIDL: integer): string;
const
  SHGFP_TYPE_CURRENT = 1;
begin
  SetLength(Result, MAX_PATH);
  SHGetFolderPath(0, CSIDL, 0, SHGFP_TYPE_CURRENT, PChar(Result));
  SetLength(Result, StrLen(PChar(Result)));
end;

function UserAppData: string;
begin
  Result := SpecialFolder(CSIDL_APPDATA);
end;

...

var
  Pfad: string;
  Datei: string;
begin
  Pfad := IncludeTrailingPathDelimiter(UserAppData) + '.minecraft\texturepacks';
  if not DirectoryExists(Pfad) then
    if not ForceDirectories(Pfad) then
      raise Exception.CreateFmt('Verzeichnis %s kann nicht angelegt werden.', [Pfad]);
  Datei := IncludeTrailingPathDelimiter(Pfad) + 'Test.jpg';
  urldownloadtofile(nil, 'http://img3.imagebanana.com/img/k789yl2d/AssassinsCreed_Dx102008061616351998.jpg', PChar(Datei), 0, nil);
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.163 Beiträge
 
Delphi 12 Athens
 
#34

AW: .zip-Archiev in bestimmtes Archiev herunterladen

  Alt 10. Apr 2012, 15:58
Zitat:
Code:
[Fehler] Unit1.pas(29): Undefinierter Bezeichner: 'SpecialFolder'
Diese Meldung besagt "Kenn ich nicht".
Wenn du die genannte Funktion verwenden möchtest, dann mußt du diese natürlich in dein Programm einbauen, da sie im Delphi nicht automatisch vorhanden ist.
Alternativ, falls es diese irgendwo gibt, muß man die entsprechende Unit einbinden.
Zitat:
Code:
[Fehler] Unit1.pas(39): Inkompatible Typen: 'String' und 'PAnsiChar'
Die Funktion will einen PChar als Parameter, da kannst du nicht einfach einen String übergeben, da diese Beiden sich nicht vertragen,
sondern mußt eventuell vorher den Typ casten (umwandeln) und anpassen. (das sieht man aber auch an den hier gezeigten Beispielen)

@DeddyH: DirectoryExists ist im ForceDirectories schon eingebaut.
Das muß man daher nicht unbedingt selber nochmal prüfen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (10. Apr 2012 um 16:05 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#35

AW: .zip-Archiev in bestimmtes Archiev herunterladen

  Alt 10. Apr 2012, 15:59
Folgende Fehler wenn ich deine Methode benutze
Muss ich noch eine Unit einbinden oder für SpecialFolder eine Variable setzen ?
Delphi-Quellcode:
[Fehler] Unit1.pas(29): Undefinierter Bezeichner: 'SpecialFolder'
[Fehler] Unit1.pas(39): Inkompatible Typen: 'String' und 'PAnsiChar'
[Fehler] Unit1.pas(39): Inkompatible Typen: 'String' und 'PAnsiChar'
[Fataler Fehler] Project1.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden
Schau dir nochmals ganz scharf den Beitrag und den hier an.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Premaider

Registriert seit: 31. Mär 2012
160 Beiträge
 
#36

AW: .zip-Archiev in bestimmtes Archiev herunterladen

  Alt 10. Apr 2012, 16:01
Und nochmal im Ganzen, damit das hoffentlich mal weitergeht:
Delphi-Quellcode:
uses SHFolder;

function SpecialFolder(CSIDL: integer): string;
const
  SHGFP_TYPE_CURRENT = 1;
begin
  SetLength(Result, MAX_PATH);
  SHGetFolderPath(0, CSIDL, 0, SHGFP_TYPE_CURRENT, PChar(Result));
  SetLength(Result, StrLen(PChar(Result)));
end;

function UserAppData: string;
begin
  Result := SpecialFolder(CSIDL_APPDATA);
end;

...

var
  Pfad: string;
  Datei: string;
begin
  Pfad := IncludeTrailingPathDelimiter(UserAppData) + '.minecraft\texturepacks';
  if not DirectoryExists(Pfad) then
    if not ForceDirectories(Pfad) then
      raise Exception.CreateFmt('Verzeichnis %s kann nicht angelegt werden.', [Pfad]);
  Datei := IncludeTrailingPathDelimiter(Pfad) + 'Test.jpg';
  urldownloadtofile(nil, 'http://img3.imagebanana.com/img/k789yl2d/AssassinsCreed_Dx102008061616351998.jpg', PChar(Datei), 0, nil);
end;
Danke funktioniert jetzt endlich !
Da die richtige Datei aber ca. 30 MB groß ist wäre eine ProgressBar oder eine "Restzeit"-Anzeige doch ganz praktisch. Denkt ihr das könnt ihr jemandem mit meinem Wissen erklären ?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.163 Beiträge
 
Delphi 12 Athens
 
#37

AW: .zip-Archiv in bestimmtes Archiv herunterladen

  Alt 10. Apr 2012, 16:18
Wie gesagt, du brauchst einen Callback, welcher dich während des Downloads über den Fortschritt informiert.

MSDN-Library durchsuchenURLDownloadToFile ... der letzte Parameter (k.A. aber irgendwo in der DP oder über Google findet man eventuell ein Beispiel)

Ansonsten Delphi-Referenz durchsuchenURLDownloadToFile ===> z.B. http://www.delphipraxis.net/100570-u...-anzeigen.html

Oder INDY.
TIdHTTP sollte es im D7 schon geben und hier findet man mit großer Sicherheit irgendwo ein Beispiel dafür.
Und im Netz schwirren viele Tutorials rum. Du mußt nur aufassen daß es "alt" ist, da die Schnittstellen verändert wurden.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#38

AW: .zip-Archiv in bestimmtes Archiv herunterladen

  Alt 10. Apr 2012, 16:31
Ich weiß nicht ob die Frage inzwischen geklärt ist, ich benutze gelegentlich eine 10 Jahre alte Komponente: http://www.utilmind.com/delphi und dort nach HTTP GET suchen. Da steht bis Delphi 6, aber bei 7 funktioniert die auch. Auf jeden Fall ist sie einfach zu handhaben, und liefert auch den Wert für ProgressBar und einiges mehr. Dabei ist ein Beispielprojekt.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#39

AW: .zip-Archiv in bestimmtes Archiv herunterladen

  Alt 10. Apr 2012, 16:32
Ansonsten hilft auch ein Blick in die CodeLib.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Premaider

Registriert seit: 31. Mär 2012
160 Beiträge
 
#40

AW: .zip-Archiv in bestimmtes Archiv herunterladen

  Alt 10. Apr 2012, 16:36
€: Hat sich dank DeddyH erledigt!! VIEEELEEEN DANK Und natürlich auch den Anderen ein dickes Danke ;D

Jetzt steht nurnoch die Frage wie ich ein .jpg über einen Link einbinde. Und wie ich es überhaupt auf der GUI platziere

Geändert von Premaider (10. Apr 2012 um 16:48 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 5   « Erste     234 5      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:07 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