Aktuelle Zeit: 20.10.2020 14:15

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: InitNetwork / MessageRequester
BeitragVerfasst: 18.10.2020 01:02 
Offline

Registriert: 17.10.2020 01:06
Hallo,
ich möchte gern eine Internetseite downloaden und als Textdatei speichern (mit ReceiveHTTPFile) - das Speichern des Downloads funktioniert.
ABER:

Egal, ob ich den entsprechenden Programmabschnitt mit dem InitNetwork von einem Menü aus aufrufe, oder (siehe Codebeispiel) vorher noch einen MessageRequester eingesetzt habe, es passieren die unerklärliche Dinge ! Ich vermute, dass durch den Aufruf InitNetwork die Windows-Events beeinflusst werden - kann das sein ? .. und wie kann man das vermeiden ?

Ok, ich bin PureBasic Anfänger - finde aber in der Doku keine Erklärung für das Problem. Freue mich auf ein Feedback.
Lucky

Beispiel-Programm für Ubuntu 18.04 LTS, Lubuntu (X86_64)
Code:
ExamineDesktops()
Define.c Breite, Hoehe
Breite = DesktopWidth(0)
Hoehe = DesktopHeight(0)
Define.i J_N

OpenWindow(0,0,0,Breite,Hoehe,"Test Internet")

J_N = MessageRequester("Frage:", "Internetseite Holen ?", #PB_MessageRequester_YesNo)
If J_N = #PB_MessageRequester_No
  End
EndIf
 
InitNetwork()
 
; Zeit um zu verdeutlichen, dass der MessageRequester nicht - wie zu erwarten - sofort verschwindet !
Delay (2000)

; XXXX bitte bei der Ziel-Adresse den jeweiligen User-Namen eingetragen !
ReceiveHTTPFile("https://www.tagesschau.de/", "/home/XXXX/Seite.txt")

; Text so positionieren, dass er an der Position des Messagerequestors geschrieben werden soll
Hoehe = Hoehe/2
Breite = Breite/2 -230

StartDrawing(WindowOutput(0))
FrontColor(RGB(0,0,0))
BackColor(RGB(240,240,240))
DrawText(Breite, Hoehe,"Hello World - Hello World - Hello World - Hello World - Hello World")
StopDrawing()

Repeat
  Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow

End


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: InitNetwork / MessageRequester
BeitragVerfasst: 18.10.2020 09:48 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Hallo Lucky,

was für unerklärliche Dinge passieren den?

Zitat:
Egal, ob ich den entsprechenden Programmabschnitt mit dem InitNetwork von einem Menü aus aufrufe, oder (siehe Codebeispiel) vorher noch einen MessageRequester eingesetzt habe, es passieren die unerklärliche Dinge ! Ich vermute, dass durch den Aufruf InitNetwork die Windows-Events beeinflusst werden - kann das sein ? .. und wie kann man das vermeiden ?


Ein direktes Zeichnen auf das Fenster mit WindowOutput() ist zuvermeiden, weil ein Repaint den vorher dargestellten Inhalt vernichtet.

Dieses Repaint erfolgt hier automatisch.

Besser so ähnlich:
Code:
ExamineDesktops()
Define.c Breite, Hoehe
Breite = DesktopWidth(0)
Hoehe = DesktopHeight(0)
Define.i J_N

OpenWindow(0,0,0,Breite,Hoehe,"Test Internet")


J_N = MessageRequester("Frage:", "Internetseite Holen ?", #PB_MessageRequester_YesNo)
If J_N = #PB_MessageRequester_No
  End
EndIf

InitNetwork()

;Zeit um zu verdeutlichen, dass der MessageRequester nicht - wie zu erwarten - sofort verschwindet !
Delay (2000)

;XXXX bitte bei der Ziel-Adresse den jeweiligen User-Namen eingetragen !
ReceiveHTTPFile("https://www.tagesschau.de/", "/home/XXXX/Seite.txt")

; Text so positionieren, dass er an der Position des Messagerequestors geschrieben werden soll


If CreateImage(0, Breite, Hoehe, 24, #PB_Image_Transparent)
 
  StartDrawing(ImageOutput(0))
  DrawingMode(#PB_2DDrawing_Transparent)
  Hoehe = Hoehe/2
  Breite = Breite/2 -230
  FrontColor(RGB(0,0,0))
  BackColor(RGB(240,240,240))
  DrawText(Breite, Hoehe,"Hello World - Hello World - Hello World - Hello World - Hello World")
  StopDrawing()
 
EndIf

ImageGadget(0, 0, 0, Breite, Hoehe, ImageID(0))

Repeat
  Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow

End


Was ist eigentlich das korrekte Problem ?
Was hat es damit aufsich:
Zitat:
;Zeit um zu verdeutlichen, dass der MessageRequester nicht - wie zu erwarten - sofort verschwindet !
Delay (2000)


Verschwindet der MessageRequester bei dir erst nach Ablauf des Delays, oder noch später, oder gar nicht?

Hast du auch schon mal den letzten Parameter bei ReceiveHTTPFile mit der Übergabe der Konstante #PB_HTTP_Asynchronous probiert?

_________________
Betriebssysteme: MX Linux 19 / Windows 10 / Mac OS 10.15.2 / Android 7.0 ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: InitNetwork / MessageRequester
BeitragVerfasst: Gestern 11:21 
Offline

Registriert: 17.10.2020 01:06
Vielen Dank an ccode_new für die schnelle Antwort; ich werde noch das ein- oder andere ausprobieren, um mein Anliegen besser zu verdeutlichen.
Wird aber etwas Zeit in Anspruch nehmen - bin jetzt erstmal weg.
Lucky


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: InitNetwork / MessageRequester
BeitragVerfasst: Gestern 18:29 
Offline
Benutzeravatar

Registriert: 22.12.2016 12:49
Wohnort: :D_üsseldorf-Wersten
Hallo Lucky,

Code:
; Gebe den HTML-Text der Internetseite tagesschau.de auf dem Bildschirm aus.
If 0=InitNetwork() ; Ist Netzwerk hergestellt?
  MessageRequester("Netzwerkfehler","InitNetwork() fehlgeschlagen.")
  End 1 ; Gebe Fehler Nummer 1 zurück.
EndIf
URL$=InputRequester("Seite","Seite:","http://www.tagesschau.de/") ; Gebe eine Internet-Seite ein.
*Buffer = ReceiveHTTPMemory(URL$) ; Lade die Internetseite in den Speicher *Buffer.
If *Buffer=0 ; Wenn das Laden nicht funktiert hat gebe eine Fehlermeldung aus und beende.
  MessageRequester("Fehler","Konnte Internetseite nicht laden.")
  End 2
EndIf 
Text$ = PeekS(*Buffer,-1,#PB_UTF8) ; Wandle den Inhalt des *Buffer im UTF8-Format in Unicode String um.
ExamineDesktops() ; Ermittle Informationen über angeschlossene Bildschirme
Flags = #PB_Window_SystemMenu|#PB_Window_MinimizeGadget; Fenster-Parameter
If OpenWindow(0,0,0,DesktopWidth(0),DesktopHeight(0),URL$,Flags) ;Öffne ein Fenster
  EditorGadget(0,0,0,DesktopWidth(0),DesktopHeight(0)) ; Erstelle ein Editor-Gadget.
  SetGadgetText(0, Text$)  ; Ändere den Inhalt auf Editor-Gadgets auf den geladenen Text.
  Repeat ; Hauptschleife
    Event = WaitWindowEvent()
  Until Event = #PB_Event_CloseWindow ; Warte auf ALT-F4 Eingabe
  CloseWindow(0)
Else
  MessageRequester("Fensterfehler","Konnte Fenster nicht öffnen.")
  End 3
EndIf
FreeMemory(*Buffer) ; Gebe den Speicher *Buffer zurück.
If OpenWindow(0,0,0,DesktopWidth(0),DesktopHeight(0),URL$,Flags) ;Öffne ein Fenster
  WebGadget(0, 0, 0, DesktopWidth(0),DesktopHeight(0), URL$) ; Erstelle ein WebGadget mit der URL$ Seite.
  ; WebSeite darstellen.
  Repeat ; 2. Hauptschleife
    Event = WaitWindowEvent()
  Until Event = #PB_Event_CloseWindow ; Warte auf ALT-F4 Eingabe
Else
  MessageRequester("Fensterfehler","Konnte Web-Fenster nicht öffnen.")
  End 4   
EndIf


Code:
; Ausgabe von DrawText bei #PB_Event_Repaint PB 5.72 Linux 64bit
;
ExamineDesktops() ; Ermittle Informationen über angeschlossene Bildschirme.
OpenWindow(0,0,0,DesktopWidth(0),DesktopHeight(0),"Test DrawText") ; Öffne ein Fenster.
Start=ElapsedMilliseconds() ; Stelle Zeitpunkt fest.
Startpaint=0 ; -1 male 0 Init 1..10 zähle #PB_Event-None
ende=#False
Repeat ; ende
  Event=WindowEvent() ; Fand ein Ereignis statt?
;   If Event<>0
;     Debug Event
;   EndIf   
  Select Event ; Aufwahl Ereignis.
    Case  -1 ;, #PB_Event_Minus1
      If Startpaint<>-1
        Startpaint=1
      EndIf
    Case #PB_Event_Repaint
      If Startpaint<>-1 ; Wenn noch nicht gemalt werden darf prüfe ob schon 0,2 Sekunden vorbei sind.
        If ElapsedMilliseconds()-Start>200 ; Nach 0,2 Sekunden darf gemalt werden.
          Startpaint=-1
        EndIf
      EndIf
      If Startpaint=-1
        StartDrawing(WindowOutput(0))
        FrontColor(RGB(0,0,0))
        BackColor(RGB(240,240,240))
        DrawText(10,10,"Hello World - Hello World - Hello World - Hello World - Hello World")
        StopDrawing()
      EndIf
    Case #PB_Event_CloseWindow
      ende = #True
    Case #PB_Event_None
      Delay(1) ;Wenn kein Ereignis auftritt warte 1 Millisekunde.
      If Startpaint>=1
        If Startpaint<10 ; Wenn Startpaint noch nicht 10 ist zähle es 1 hoch.
          Startpaint+1
        Else  ; Wenn Startpaint auf 10 hochgezhält ist, darf gemalt werden.
          Startpaint=-1
          PostEvent(#PB_Event_Repaint) ; Rufe Event #PB_Event_Repaint über Ereigniswarteschleife auf.
        EndIf
      EndIf
    Default
  EndSelect
Until ende
CloseWindow(0)
End


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 21 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye