URLDownloadToFile funktioniert bei mir nicht

Anfängerfragen zum Programmieren mit PureBasic.
PureNoob
Beiträge: 33
Registriert: 25.09.2007 15:30

URLDownloadToFile funktioniert bei mir nicht

Beitrag von PureNoob »

Hi Leute,

ich stehe mal wieder total auf dem Schlauch, weil ich folgendes Problem habe: Ich möchte gerne den Rang meines Games auf einer sogenannten Ranking-seite auslesen. Dieses Ranking soll dann in meinem Programm neben dem jeweiligen Image für die Ranking-Seite stehen.

Ich habe den Code hier von Scarabol ausprobiert, bekomme aber immer einen Error. Woran liegt das?

Code: Alles auswählen

If URLDownloadToFile_(0,"www.purebasic.fr/german/","C:\test.html",0,0) = #S_OK
  OpenFile(1, "c:\test.html")
    While Eof(1) = 0
      Code$+ReadString(1)+Chr(10)
    Wend
  Code$ = Right(Code$, Len(Code$)-FindString(Code$, "<body", 0)+1)
  Code$ = Left(Code$, FindString(Code$, "</body", 0))
  CreateFile(2, "test.txt")
  WriteString(2, Code$)
  CloseFile(2)
  End
  MessageRequester("Info", Code$)
  End
Else
  MessageRequester("Error","Couldn't download file...",0)
EndIf 
Scarabol oder Kiffi, wisst Ihr wie ich da eine Lösung für mein Problem finde? Man beachte, es ist eine Ranking Seite und das Ranking kann sich jederzeit durch die In´s und Out´s verändern.

Gruss PureNoob
Benutzeravatar
Scarabol
Beiträge: 1427
Registriert: 30.11.2005 21:00

Beitrag von Scarabol »

Hi,

also erstma es liegt nicht an meinem Code. :D

Das Problem ist die fehlende Antwort des Server oder die Unfähigkeit einiger API Programierer...

Muss aber zugeben das das Beispiel ein wenig vermurkst ist, also im folgenden hat es bei mir funktioniert:

Code: Alles auswählen

If URLDownloadToFile_(0,"http://www.arndt-bruenner.de/mathe/scripts/kubspline.htm","C:\test.html",0,0) = #S_OK
  MessageRequester("Info", "Download successfull.", #MB_ICONINFORMATION)
Else
  MessageRequester("Error","Couldn't download file...",16)
EndIf
Scheint wohl an der fehlenden Dateiangabe in der Zieladresse gelegen zu haben...

Gruß
Scarabol
Abgeschlossen Projekte:
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea

PB-V: 4
WinXP
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

@PureNoob:

das fehlt das http://

... und ersetze bitte das OpenFile() durch ReadFile()
... und teste bitte immer, ob ReadFile() oder CreateFile() auch geklappt hat

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
Scarabol
Beiträge: 1427
Registriert: 30.11.2005 21:00

Beitrag von Scarabol »

@Kiffi
War nicht sein Fehler...ist wie gesagt mein Code :oops:

@PureNoob
Trotzdem hat er recht...

Gruß
Scarabol
Abgeschlossen Projekte:
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea

PB-V: 4
WinXP
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Scarabol hat geschrieben:@Kiffi
War nicht sein Fehler...ist wie gesagt mein Code :oops:
dann mal schnell ausbessern, bevor der nächste (Pure)Noob darauf reinfällt ;-)

Please press Edit-Button: http://www.purebasic.fr/german/viewtopi ... ile#170827

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
Scarabol
Beiträge: 1427
Registriert: 30.11.2005 21:00

Beitrag von Scarabol »

Achtung Bilderrätsel!

:shock: und :o

Gruß
Scarabol
Abgeschlossen Projekte:
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea

PB-V: 4
WinXP
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Scarabol hat geschrieben: :shock: und :o
:shock: und :allright:

Grüße ... Kiffi
a²+b²=mc²
PureNoob
Beiträge: 33
Registriert: 25.09.2007 15:30

Alles in einer Datei oder geht das nicht?

Beitrag von PureNoob »

Hallo,

nachdem ich mich dann etwas mehr mit dem Quelltext beschäftigt habe, habe ich es dann auch hinbekommen. Wenn ich diesen Code hier starte:

Code: Alles auswählen

If URLDownloadToFile_(0,"http://www.gamesites200.com/wowprivate/details-2137.html","C:\test.html",0,0) = #S_OK
ReadFile(1, "c:\test.html")
    While Eof(1) = 0
      Code$+ReadString(1)+Chr(10)
    Wend
  Code$ = Right(Code$, Len(Code$)-FindString(Code$, "Current Rank:</b></td><td>", 0)+1)
  Code$ = Left(Code$, FindString(Code$, "Site URL:", 0))
  CreateFile(2, "C:\test.txt")
  WriteString(2, Code$)
  CloseFile(2)
  End 
  MessageRequester("Info", "Download successfull.", #MB_ICONINFORMATION)
Else
  MessageRequester("Error","Couldn't download file...",16)
EndIf 
Dann schreibt er mir wie angegeben 2 Dateien. Einmal die Test.html und die test.txt. Jetzt will ich aber 6 verschiedene Seite abfragen und die ergebnisse sollen denn z.B. so in der test.txt stehen, damit ich sie auslesen kann:

Code: Alles auswählen

Current Rank:</b></td><td>18</td></tr><tr class="b"><td><b>S
Current Rank:</b></td><td>36</td></tr><tr class="b"><td><b>S
Current Rank:</b></td><td>5</td></tr><tr class="b"><td><b>S
Current Rank:</b></td><td>44</td></tr><tr class="b"><td><b>S
Current Rank:</b></td><td>112</td></tr><tr class="b"><td><b>S
Current Rank:</b></td><td>38</td></tr><tr class="b"><td><b>S
Nur leider schreibt mir das Programm nur Müll in die txt Datei wenn ich im Programm mehrere ReadFile Strings hintereinander setze. Die beiden MessageRequester habe ich drin gelassen und nur mit einem END davor beendet, weil mir sonst jedesmal der AntiVir anspringt, wenn ich die wegmache. Ich will auch nicht für jede Webseite die ich auslese eine extra Datei erstellen. Oder muss ich das?

Könnt ihr mir da bitte nochmal helfen?

Gruss PureNoob
Benutzeravatar
Scarabol
Beiträge: 1427
Registriert: 30.11.2005 21:00

Beitrag von Scarabol »

Verwend doch mal bitte den Code den ich oben editiert hab...

Gruß
Scarabol
Abgeschlossen Projekte:
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea

PB-V: 4
WinXP
PureNoob
Beiträge: 33
Registriert: 25.09.2007 15:30

Code verwenden

Beitrag von PureNoob »

Das ist ja ok, ich kann den Code ja verwenden, er schreibt mir dann alles was die Datei die heruntergeladen wurde enthält, untereinander in eine Datei.

Wie sieht das denn mit mehreren Dateien aus? Z.B. Ich rufe auf server 1 die x.html auf und lasse die in die datei auslesen, dann rufe ich auf server 2 die y.hmtl auf und lasse die ebenfalls in die "gleiche" datei unten dran auslesen, so dass ich nur noch eine datei später mit meinem Programm auszulesen brauche um an die Rankings zu kommen.

War das jetzt kompliziert formuliert? :?

Gruss PureNoob
Antworten