Entwickler-Ecke

Internet / Netzwerk - Datei Runterladen mit IdHttp


chickenfigt1989 - So 04.04.10 19:12
Titel: Datei Runterladen mit IdHttp
Hallo
Ich habe per Button klick eine Datei aus dem Internet geladen mit IdHTTP.
Mein Code dafür sah folgendermaßen aus:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
var FS:Tfilestream;
    URL:Sring;
Begin
URL:='http://www.chiller4fun.de/addons/serverjumper.zip';
FS:=Tfilestream.Create('serverjumper.zip' ,fmCreate);
IdHTTP1.Get(URL,FS);
FS.Free;


Jetzt hab ich Indy10 und wollte fragen ob mir jemand den Code dazu sagen kann.
Wen ich den Code von oben nimm kommt immer:
[Error] es.pas(12401): Undeclared identifier: 'Sring'
[Error] es.pas(12405): Undeclared identifier: 'IdHTTP1'
[Fatal Error] helper.dpr(535): Could not compile used unit 'es.pas'

Lg


Moderiert von user profile iconGausi: Topic aus VCL (Visual Component Library) verschoben am Mo 05.04.2010 um 13:11


Xentar - So 04.04.10 19:16

Ach komm, das ist nicht dein Ernst, dass du dafür Hilfe von den Leuten hier brauchst, oder?
Der erste ist ja wohl nur simpel, und zum zweiten: Entweder du hast kein Objekt IdHTTP1, oder die Prozedur die du uns hier zeigst, ist keine Methode des Formulars.


jaenicke - So 04.04.10 19:28

Mal davon abgesehen fehlt da noch die Fehlerbehandlung (Stichwort: try..finally).

Außerdem fehlt eine Pfadangabe [http://www.delphi-library.de/viewtopic.php?p=499701]. Was bringt es dir die Datei herunterzuladen, wenn du die dann an einem mehr oder weniger zufälligen Ort auf der Platte speicherst und nie wiederfindest... :roll:


chickenfigt1989 - So 04.04.10 19:47

Wieso an einen Zufälligen Ort. Die Datei wird im Programm ordner gespeichert und ne Idhttp komponente hab ich auch auf der Form.
lg


Delete - So 04.04.10 20:02

user profile iconchickenfigt1989 hat folgendes geschrieben Zum zitierten Posting springen:
Wieso an einen Zufälligen Ort.

Aber nur rein zufällig, weil das gerade das aktuelle Arbeitsverzeichnis ist.


chickenfigt1989 - So 04.04.10 21:26

Wenn ich das so will, dann will ich das halt so.
Das war aber nicht meine Frage.
Gruß


Xentar - So 04.04.10 21:46

Das hat nichts mit "wollen" zu tun, sondern damit, dass man die Konsequenzen kennt..

Und zu deinem Problem hab ich doch oben schon was geschrieben: Du hast ne Prozedur, und keine Methode des Formulars.


Delete - So 04.04.10 21:51

Das mag zwar nicht deine Frage gewesen sein. Aber deine Frage deutet daraufhin, dass du absolut keine Erfahrung hast. deswegen war das nur ein gut gemeinter Tipp, um weitere Fehlerquellen von vorne herein auszuschließen. Aber wenn du das ignorierst ist das deine sache. dann komm aber morgen nicht an und frag uns, wo denn die Datei geblieben ist, die du runtergeladen hast.


chickenfigt1989 - Mo 05.04.10 01:57

Ja ich weiß
naja heut und morgen sind eh meine Letzten Tage hier.
Und wie muss die Methode aussehen?
wegen dem Pfad wie soll ich des sonst anders machen?
Ich hatte vorher nen Pfad das es unter c gespeichert wird aber bei jedem ist die Ordnerstruktur anders.
Lg


elundril - Mo 05.04.10 02:08

deswegen gibts zum beispiel den SaveDialog oder methoden um die eigenen Dateien des benutzers zu finden oder andere Bestimmte ordner die auf jedem PC vorhanden sind.

Nun ja du könntest entweder ein "TForm1." (oder wie die Form halt sonst heißt auf der das IdHttp1 liegt) vor den Namen der Procedure schreiben oder du schreibst ein Form1 (oder wie die Form halt sonst heißt auf der das IdHttp1 liegt) vor das "IdHTTP1.Get(URL,FS);"

lg elundril


chickenfigt1989 - Mo 05.04.10 02:20

Oke dankeschön hat geklappt.
Und jetzt noch wegen dem Speichern unter.
Reicht es da wen ich bei idhttp bei onworkbegin die speichern unter prozedur aufrufe?
lg


elundril - Mo 05.04.10 05:43

woher sollen wir denn wissen wie deine speichern unter Prozedur aussieht? Demnach kann es durchaus möglich sein, das es reicht diese aufzurufen, aber wenn nicht kannst du zumindest den gleichen Savedialog verwenden.

lg elundril


chickenfigt1989 - Mo 05.04.10 12:09

Meine Speicher Prozedur sieht so aus:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TForm1.Speichernunter1Click(Sender: TObject);
var Dateiname: string;
begin
  if SaveDialog1. Execute then
  begin
    if ExtractFileExt(SaveDialog1.FileName) = '' then
      case SaveDialog1.FilterIndex of
        1: DateiName := ChangeFileExt(SaveDialog1.FileName,'.py');
        2: DateiName := ChangeFileExt(SaveDialog1.FileName,'.uem');

      end
    else
      Dateiname := SaveDialog1.FileName;
    SynEdit1.Lines.SaveToFile(Dateiname);
    SynEdit1.Modified := false;  
  end;
end;

lg


ALF - Mo 05.04.10 12:31

Oh, grosser Meister user profile iconchickenfigt1989. Verzeih den Unwissenden hier und mir, das wir nicht verstehen die Prüfungen die Du uns auferlegst, vor allen Dein Willen zu akzeptieren.
Und da Du grosser Meister keine Zeit für banale Forensuche oder Delphihilfe hast, erkennbar an Zeilen in Deinen Prog < 12405, versuche ich mein kleines Wissen Dir zu geben!

Du kannst nun Deine 'Speichernunter1Click Procedure' erweitern, um die Datei die Du oben in der anderen Procedure in 'FS' stehen hast zu speichern, bevor Du FS.Free gibst oder, Du verwendest oben in Deiner Procedure den Savedialog1, in etwas abgewandelter form, um diese Datei zu Speichern ebenfalss bevor Du FS.Free gibst!
Beides setzt vorraus das der Download ordungsgemäss beendet ist!

Ich hoffe das ich Dir eine Hilfe sein konnte!?

Gruss Alf


Gausi - Mo 05.04.10 13:10

Was hat diese Speicher-Methode denn mit dem Problem aus dem ersten Posting zu tun :gruebel:? Dort soll eine runtergeladene Zip-Datei aus dem Netz gespeichert werden, und hier kommt jetzt was mit nem Synedit?


ALF - Mo 05.04.10 13:15

@Gausi, dies ist doch die Antwort auf dieser Frage :wink:
user profile iconelundril hat folgendes geschrieben Zum zitierten Posting springen:
woher sollen wir denn wissen wie deine speichern unter Prozedur aussieht? ....
lg elundril


Gruss Alf


Gausi - Mo 05.04.10 13:38

Das ist schon klar. Aber wenn man diese Synedit-Saveto-Methode da vor dem Download aufruft, dann hilft das ungefähr gar nichts.

Wenn ich mit dem Auto irgendwohin fahren will, und das nicht klappt, dann hilft es auch nicht, wenn ich vorher die Waschmaschine anstelle. :nixweiss:


jaenicke - Mo 05.04.10 13:44

Kennt ihr das Spiel denn noch nicht? Lotto: 20 Befehle aus 5000 oder so.

Die Wahrscheinlichkeit für ein sinnvolles Programm könnt ihr selbst ausrechnen. :mrgreen:


ALF - Mo 05.04.10 13:58

Och Leute! Wir sollen Ihm Quellcode liefern und nicht in Rätseln schreiben :flehan:
zumal der Begriff Savedialog ihm nicht bekannt ist!?
Gruss Alf


elundril - Mo 05.04.10 16:23

user profile iconALF hat folgendes geschrieben Zum zitierten Posting springen:
@Gausi, dies ist doch die Antwort auf dieser Frage :wink:
user profile iconelundril hat folgendes geschrieben Zum zitierten Posting springen:
woher sollen wir denn wissen wie deine speichern unter Prozedur aussieht? ....
lg elundril


Gruss Alf


das war eher mehr darauf abgezielt das er selber denken soll und nicht seinen Quellcode posten soll.


ALF - Mo 05.04.10 17:43

Richtig user profile iconelundril :zustimm: und damit erübrigt sich jede seiner Frage(n), wie und wo er eine Datei abspeichern soll und mit was,
da er es ja schon kennt, mhh... hoffe ich :gruebel:
Gruss Alf