Danke vielmals an alle, die mir bei der Problemstellung wertvolle Hilfe und Empfehlungen gegeben haben.
Ich persönlich habe das Gefühl, dass je mehr ich lerne, ich desto weniger verstehe.
Ich kann mir natürlich die Erklärung zur Data Section durchlesen, aber verstehen und dann sogar umsetzen tue ich sie nicht.
Sollte vielleicht doch lieber bei etwas zum "Anfassen" bleiben und nicht zu einem so abstrakten Thema neigen.
Oder die Aufgabe ist einfach zu hoch gesteckt für mich.
Trotzdem danke, lasse es auf mich wirken.
HTML mit Parameterübergabe, Post
-
- Beiträge: 19
- Registriert: 23.03.2017 11:05
- Computerausstattung: Win7 64bit, PureBasic 5.61 64bit
Linux Mint 19.1 64bit, PureBasic 5.71 64bit
VM (WinXP 32bit, PureBasic 5.71) - Wohnort: Kreis RE
Re: HTML mit Parameterübergabe, Post
Inzwischen 61 Jahre alt.
Leider immer noch keine große Programmiererfahrung; nach Burn-Out vor fünf Jahren, starke Schwächen mit der Merkfähigkeit.
Körperlich und geistig schreitet der Verfall eben voran.
Trotzdem möchte ich versuchen etwas programmieren zu lernen und bin dankbar für jede Hilfe.
Leider immer noch keine große Programmiererfahrung; nach Burn-Out vor fünf Jahren, starke Schwächen mit der Merkfähigkeit.
Körperlich und geistig schreitet der Verfall eben voran.
Trotzdem möchte ich versuchen etwas programmieren zu lernen und bin dankbar für jede Hilfe.
- juergenkulow
- Beiträge: 188
- Registriert: 22.12.2016 12:49
- Wohnort: :D_üsseldorf-Wersten
Re: HTML mit Parameterübergabe, Post
Hallo,
nehme einen leeren Programm-Editor und beginne mit dem Testen.
Spätestens nach 25 Minuten ist Pause für mindestens 5 Minuten.
nehme einen leeren Programm-Editor und beginne mit dem Testen.
Spätestens nach 25 Minuten ist Pause für mindestens 5 Minuten.
Code: Alles auswählen
; Beispiel für den Zugriff auf Daten die fest im Programm gespeichert sind.
Define Wert.d ; Wert ist eine Kommazahl.
For i=1 To 5 ; Führe die Befehle bis Next 5 mal aus.
Read.d Wert.d ; Lese einen Kommazahl von der DataSection
Debug Wert ; Gebe diesen Kommazahl aus.
Debug FormatNumber(Wert,4) ; Gebe Kommazahl mit 4 Nachkommastellen aus.
Next
Define String.s="", SammelString.s="" ; String und SammelString sind leere Strings.
For i=1 To 4 ; Führe die Befehle bis Next 4 mal aus.
Read.s String ; Lese einen Stringwert von der DataSection
Debug String ; Gebe diesen Stringwert aus.
SammelString = SammelString + String ; Verbinde diesen String mit dem Sammelstring.
Next
Debug SammelString
End
DataSection ; Anfang des Datenbereichs im Programm
Data.d 4711, 471.1 , 47.11, 4.711, 0.4711 ; Kölner Hausnummer aus der Zeit Napolions. Punkt steht für Komma.
Data.s "Hallo ", "sichtbares ", "Universum", "." ; Hier stehen vier Beispiel Strings.
EndDataSection ; Ende des Datenbereichs im Programm
-
- Beiträge: 19
- Registriert: 23.03.2017 11:05
- Computerausstattung: Win7 64bit, PureBasic 5.61 64bit
Linux Mint 19.1 64bit, PureBasic 5.71 64bit
VM (WinXP 32bit, PureBasic 5.71) - Wohnort: Kreis RE
Re: HTML mit Parameterübergabe, Post
Hallo,
muss mich doch noch einmal zu diesem Thema melden.
Habe mir einen Code aus deinen Beispielen gebastelt, mit dem ich erst einmal eine bestimmte Anzahl von Zugnummern abfragen würde.
Mir geht es darum, die Abfrage so hinzubekommen, dass ich mit variablen Werten durch Hochzählen arbeiten kann, wie das auch mit den Kommentierungen bei den Anne-Will-seiten der Fall war. Ich begreife es sonst nicht.
Dein Vorschlag mit der Data.Section ist zwar sehr gut, aber davon sehe ich mich momentan noch meilenweit entfernt.
Habe also folgendes gebastelt:
Beim Ausführen des Codes werden die Textdateien mit der Nummer 10001 bis 10011 angelegt, nach der Nummer 10011 bekomme ich einen Fehler mit der Meldung
[15:34:56] Warte auf den Start des Executable...
[15:34:56] Executable-Typ: Windows - x64 (64bit, Unicode)
[15:34:56] Executable gestartet.
[15:37:40] [ERROR] Zeile: 14
[15:37:40] [ERROR] Das angegebene '*MemoryID' ist null.
Ist da der Speicher zu voll gelaufen oder wurde meine Anfrage vom Server beendet, weil ich zu oft innerhalb zu kurzer Zeit Anfragen gestellt habe?
Wie leere ich den entsprechenden Speicherbereich und gebe ihn wieder frei?
Wie könnte ich eine Verzögerung einbauen, damit ich den Server nicht zu sehr strapaziere?
muss mich doch noch einmal zu diesem Thema melden.
Habe mir einen Code aus deinen Beispielen gebastelt, mit dem ich erst einmal eine bestimmte Anzahl von Zugnummern abfragen würde.
Mir geht es darum, die Abfrage so hinzubekommen, dass ich mit variablen Werten durch Hochzählen arbeiten kann, wie das auch mit den Kommentierungen bei den Anne-Will-seiten der Fall war. Ich begreife es sonst nicht.
Dein Vorschlag mit der Data.Section ist zwar sehr gut, aber davon sehe ich mich momentan noch meilenweit entfernt.
Habe also folgendes gebastelt:
Code: Alles auswählen
; Abfrage der Zugverbindungen nach hoch gezählten Zugnummern
EnableExplicit
InitNetwork()
Define Zug$=""
Define i.i
For i=10000 To 10100
Zug$=Zug$ + Str(i)
Zug$=ReplaceString(Zug$," ","%20")
Define *Speicher=ReceiveHTTPMemory("http://reiseauskunft.bahn.de/bin/trainsearch.exe/dn?ld=15061&country=DEU&rt=1&trainname="+Zug$)
Define Dateiname$="Zug" + Zug$ + ".txt"
If CreateFile(0, "E:\" + "Zug" + Zug$ + ".txt") ; wir erstellen eine neue Text-Datei mit der entsprechenden Zugnummer
WriteData(0,*Speicher,MemorySize(*Speicher))
CloseFile(0) ; die zuvor geöffnete Datei schließen und damit die geschriebenen Daten endgültig speichern
Else
Debug "Konnte die Datei nicht erstellen!"
EndIf
Zug$ = ""
Next
[15:34:56] Warte auf den Start des Executable...
[15:34:56] Executable-Typ: Windows - x64 (64bit, Unicode)
[15:34:56] Executable gestartet.
[15:37:40] [ERROR] Zeile: 14
[15:37:40] [ERROR] Das angegebene '*MemoryID' ist null.
Ist da der Speicher zu voll gelaufen oder wurde meine Anfrage vom Server beendet, weil ich zu oft innerhalb zu kurzer Zeit Anfragen gestellt habe?
Wie leere ich den entsprechenden Speicherbereich und gebe ihn wieder frei?
Wie könnte ich eine Verzögerung einbauen, damit ich den Server nicht zu sehr strapaziere?
Inzwischen 61 Jahre alt.
Leider immer noch keine große Programmiererfahrung; nach Burn-Out vor fünf Jahren, starke Schwächen mit der Merkfähigkeit.
Körperlich und geistig schreitet der Verfall eben voran.
Trotzdem möchte ich versuchen etwas programmieren zu lernen und bin dankbar für jede Hilfe.
Leider immer noch keine große Programmiererfahrung; nach Burn-Out vor fünf Jahren, starke Schwächen mit der Merkfähigkeit.
Körperlich und geistig schreitet der Verfall eben voran.
Trotzdem möchte ich versuchen etwas programmieren zu lernen und bin dankbar für jede Hilfe.
- juergenkulow
- Beiträge: 188
- Registriert: 22.12.2016 12:49
- Wohnort: :D_üsseldorf-Wersten
Re: HTML mit Parameterübergabe, Post
Hallo,
Programm berichtigt um FindString(Antwort,"Keine oder fehlerhafte Verbindung") und
Antwort.s=PeekS(*Speicher,MemorySize(*Speicher),#PB_UTF8) .
Entsprechen die erzeugten Dateien den Erwartungen?
Code: Alles auswählen
; Abfrage der Zugverbindungen nach hoch gezählten Zugnummern
EnableExplicit
InitNetwork()
Define Zug$=""
Define i.i
For i=10000 To 10100
Zug$=Zug$ + Str(i)
Zug$=ReplaceString(Zug$," ","%20")
Define *Speicher=ReceiveHTTPMemory("http://reiseauskunft.bahn.de/bin/trainsearch.exe/dn?ld=15061&country=DEU&rt=1&trainname="+Zug$)
; Wenn der Aufruf der Webseite nicht geklappt hat, gibt ReceiveHTTPMemorry 0 zurück und wird in *Speicher gespeichert.
Delay(100) ; Ich probiere einfach mal eine Zentelsekunde zu warten.
If *Speicher=0 ; Wenn die Webseite nicht geladen werden konnte, gebe eine Fehlermeldung aus und
; erzeuge keine Datei. Wenn *Speicher gleich Null ist und auf den *Speicher zugegriffen
; wird, gibt es einen Programmabbruch und die Meldung Das angegebene '*MemoryID' ist null.
Debug "Webseite bei Zug nicht gefunden:"+Str(i)
Else
Define Antwort.s=PeekS(*Speicher,MemorySize(*Speicher),#PB_UTF8) ; Kopiere Inhalt von *Speicher in einen String.
If FindString(Antwort,"Keine oder fehlerhafte Verbindung") ; Steht in Antwort "Keine oder fehlerhafte Verbindung?
Debug "Keine oder fehlerhafte Verbindung bei Zug :"+Str(i)
EndIf
Define Dateiname$="E:\" + "Zug" + Zug$ + ".html"
If CreateFile(0, Dateiname$) ; wir erstellen eine neue Text-Datei mit der entsprechenden Zugnummer
WriteData(0,*Speicher,MemorySize(*Speicher))
CloseFile(0) ; die zuvor geöffnete Datei schließen und damit die geschriebenen Daten endgültig speichern
Else
Debug "Konnte die Datei "+Dateiname$+" nicht erstellen!"
EndIf
FreeMemory(*Speicher) ; Aufräumen - *Speicher wird nicht mehr gebraucht.
EndIf
Zug$ = ""
Next
; Keine oder fehlerhafte Verbindung bei Zug :10012
; Keine oder fehlerhafte Verbindung bei Zug :10017
; Keine oder fehlerhafte Verbindung bei Zug :10018
; Keine oder fehlerhafte Verbindung bei Zug :10042
; Keine oder fehlerhafte Verbindung bei Zug :10049
; Keine oder fehlerhafte Verbindung bei Zug :10050
; Keine oder fehlerhafte Verbindung bei Zug :10059
; Keine oder fehlerhafte Verbindung bei Zug :10060
; Keine oder fehlerhafte Verbindung bei Zug :10070
; Keine oder fehlerhafte Verbindung bei Zug :10071
; Keine oder fehlerhafte Verbindung bei Zug :10072
; Keine oder fehlerhafte Verbindung bei Zug :10073
; Keine oder fehlerhafte Verbindung bei Zug :10092
Antwort.s=PeekS(*Speicher,MemorySize(*Speicher),#PB_UTF8) .
Entsprechen die erzeugten Dateien den Erwartungen?