Download mit dem Inet Control in Verbindung mit App.Path

  • Themenstarter Themenstarter Sam78
  • Beginndatum Beginndatum
S

Sam78

Hallo Leute,

ich will eine Datei von meiner Homepage auf meinen Rechner speichern und weil es nur eine kleine Datei ist, wollte ich das mit dem Inet-Control machen! Leider bekomme ich das nicht richtig hin. Ich mache das so:

Private Sub DOWNLOAD()
ziel = " " & App.Path & "\"
Call Verbinden
Dim Datei As String
Datei = "test.jpg"
Do While Inet1.StillExecuting: DoEvents: Loop
'Inet1.Execute , "GET " & Datei & " C:\Homepage\" & Datei <- so geht es
Inet1.Execute , "GET " & Datei & ziel <- so nicht
Do While Inet1.StillExecuting: DoEvents: Loop
Call Trennen
End Sub

Gebe ich den Pfard ohne die Hilfe von App.Path ein, funktioniert es problemlos, aber mit kommt nichts an! Bekomme aber auch keine Fehlermeldung! Warum, was mache ich falsch? Kann mir jemand helfen?

Sam78
 
Hi Sam78

also wenn ich mir das Codefragment so anschaue, fällt mir auf, dass die Zeile
Code:
ziel = " " & App.Path & "\"
vor Deinen Zielpfad ein Leerzeichen setzt. Ändere es doch mal in
Code:
ziel = App.Path & "\"

Gruß
Das Orakel
 
Also habe das jetzt so probiert,

Inet1.Execute , "PUT " & App.Path & "\test.txt test.txt" <- geht nicht
Inet1.Execute , "PUT C:\Homepage\test.txt test.txt" <- geht

Gebe ich den Pfad ohne App.Path an geht es, mit nicht mehr! Gibt es da evtl. eine Begrenzung, das die Pfadlänge nur Zeichen haben darf, oder so. Der Pfad mit App.Path hat 78 Zeichen (C:\Dokumente und Einstellungen\Benutzername\Eigene Dateien....)

Die Sache mit der Stringvariable war nur ein Test ;) Wußte bzw. weiß einfach nicht was ich falsch mache :confused: :confused: :confused:

Es ist übrigens egal, ob ich es Up- oder Downloaden (PUT oder GET) will, mit App.Path geht es nicht

Sam78
 
Hi,

also nur um ganz sicher zu sein solltest Du mal folgendes probieren:

Inet1.Execute , "PUT " & Chr$(34) & App.Path & "\test.txt" & Chr$(34) & "test.txt"

wenn das auch nicht geht, würde ich mir mal anschauen, was da eigentlich zusammengesetzt wird.

szCommand = "PUT " & Chr$(34) & App.Path & "\test.txt" & Chr$(34) & "test.txt"
MsgBox szCommand.

Und dann poste mal, was da angezeigt wird.

Gruß
Das Orakel
 
also nur um ganz sicher zu sein solltest Du mal folgendes probieren:

Inet1.Execute , "PUT " & Chr$(34) & App.Path & "\test.txt" & Chr$(34) & "test.txt"

Das habe ich gemacht, leider ohne Erfolg. Es fehlen die Leerzeichen, was sicher Chr$(34) sein sollte!

Den Tipp mir Anzeigen zu lassen was er da zusammensetzt, fand ich eigentlich ganz gut, habe das aber selbst schon gemacht ;) Da ich aber absolut ahnungslos bin, habe ich einfach den gesamten Code gelöscht und neu geschrieben. Dabei habe ich mir dann den Zusammengesetzten Teil nochmals anzeigenlassen!

"PUT " & Chr$(34) & App.Path & "\test.txt" & Chr$(34) & "test.txt"

Das ergibt:

PUT C:\Dokumente und Einstellungen\Benutzer\usw\test.txt test.txt

Wenn ich das jetzt richtig sehe, ist das falsch, oder? Das muss doch in " " gesetzt werden. Jedenfalls wenn ich einen direkten Pfad angebe steht der gesamte "Befehl" in Anführungszeichen.

Also habe ich es so versucht:

"""" & "PUT " & Chr$(34) & App.Path & "\test.txt" & Chr$(34) & "test.txt" & """"

So hat er das dann in Anführungszeichen gesetzt. Nur wenn ich jetzt starte, arbeitet er auf 100% CPU Last und ich kann nur noch abbrechen, dabei bekomme ich immer einen Fehler "Es ist kein Remote Computer angegeben" Das kann ja nicht sein, oder? Wenn ich den direkten Pfad angebe, funktioniert das doch und an den Einstellungen habe ich nichts verändert! Ich verstehe langsam gar nichts mehr! Kann es sein, das die Firewall da irgendwas blockt, aber dann müßte ich doch auch ne Meldung bekommen oder? Benutze die WIN XP Firewall. Abgesehn davon hätte sie dann ja nie irgendwas durchlassen dürfen :confused: :confused: :confused:

Also die Firewall ist es nicht, habe die gerade einfach mal abgestellt und es geht immer noch nicht :confused:
Sam78
 
Zuletzt bearbeitet von einem Moderator:
Hi Sam,

Sam78 hat gesagt.:
Code:
szCommand = "PUT " & Chr$(34) & App.Path & "\test.txt" & Chr$(34) & "test.txt"
Das ergibt:

PUT C:\Dokumente und Einstellungen\Benutzer\usw\test.txt test.txt

Das kann es definitiv nicht ergeben. Wie mir eben aufgefallen ist, fehlt ein Leerzeichen. Also müste die Anweisung so lauten:
Code:
szCommand = "PUT " & Chr$(34) & App.Path & "\test.txt" & Chr$(34) & " test.txt"


Und das sollte
Code:
PUT "C:\Dokumente und Einstellungen\Benutzer\usw\test.txt" test.txt
ergeben. Character Code 34 ist nähmlich das doppelte Anführungszeichen.

Wie immer gilt prüfen und noch mal überprüfen. Du hast Leerzeichen in Deiner Pfadangabe, und die können schon mal zu Problemen führen.

Gruß
Das Orakel
 
Zuletzt bearbeitet:
So, habe jetzt einfach eine kleine Test exe erstellt. Diese enthält zwei Command Button´s eine zum Download, eine zum Upload.

Zum Download benutze ich diese Zeile,

Inet1.Execute , "GET " & Datei & " " & App.Path & "\" & Datei

zum Upload diese,

Inet1.Execute , "PUT " & App.Path & "\test.txt" & " test.txt

Lege ich die erstellte exe Datei in ein "kurzes" Verzeichnis z.B: C:\Homepage\ geht es. Lege ich die Datei aber in ein "langes" Verzeichnis z.B. C:\Dokumente und Einstellungen\Benutzer\Eigene Dateien\usw\ geht es nicht mehr. Also liegt es nicht an der Syntax der Zeilen. Nur will ich das Spiel (das Projekt wofür ich das brauche) später an Freunde und Bekannte verteilen und weiß jetzt nicht, wo sie die Dateien auf dem Rechner ablegen! Außerdem kann es ja sein, dass der eine oder andere Benutzer des Spiels nur schreibrechte in ein solches langes Verzeichnis hat! Was kann/muss ich denn jetzt machen?
 
Ich denke, es hat nichts mit der Länge des Verzeichnisses zu tun, sondern dass ein Leerzeichen im Pfadnamen auftaucht. Probier mal, den Pfad dem Inet-Control in Anführungszeichen zu übergeben.

Also so:
Code:
VerzeichnisXY="C:\Dokumente und Einstellungen\Benutzer\Eigene Dateien\usw\ "
Inet1.Execute , "GET" & Datei & " " & vba.Chr$(34) & VerzeichnisXY & "\" & Datei & vba.Chr$(34)

"vba.Chr$(34)" gibt das ASCII-Zeichen Nr.34 aus, das ist das Anführungsstrich-Zeichen. Du könntest statt >vba.Chr$(34)< auch >""""< schreiben.
 
Zuletzt bearbeitet:
Hallo,

Also ich bin ja nicht grad der VB profi.. Aber ich würd sagen der Pfad ist falsch..
Leerzeichen sind in urls und browsern mit %20 zu bezeichnen..

Also

Alles ohne Leerschlag
entspricht
Alles%20ohne%20Leerschlag

solltest du also Dokumente%20und%20Einstellungen machen.. dann sollte es gehen..
 
Zurück