[B+] First real BB Webbrowser

Übersicht BlitzBasic Codearchiv

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

Jan_

Ehemaliger Admin

Betreff: [B+] First real BB Webbrowser

BeitragDi, Okt 25, 2005 10:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Moin Leute,

Ich wollte nur mal zeigen, wie man einen Webbrowser macht.
Ohne Htmlview, sondern alles selber.
Das ist kein Projekt, und wird deswegen von mir, nie beendet.

BlitzBasic: [AUSKLAPPEN]
;http://www.downloads24.com/kategorie_6_Shooterspiele_Seite_1.html
;init the Window:
Global Proxy_Adress$,Proxy_port%

Proxy_Adress$=\"\"
Proxy_port%=0
main_window=CreateWindow(\"Netz durchstöberer\",0,0,GadgetWidth(Desktop()),GadgetHeight(Desktop()),0,9)
seite=CreateTextField(0,1,230,20,main_window)
canvas = CreateCanvas(2,25,GadgetWidth(Desktop())-12,GadgetHeight(Desktop())-75,main_window)
btn_go=CreateButton(\"Los!\",250,1,100,20,main_window,1)

SetBuffer CanvasBuffer(canvas)
ClsColor (255,255,255)
Cls
Color 0,0,0
Get_Site(\"http://www.inarie.de/nav.php?where=main&show=home\")
FlipCanvas canvas
Repeat
;If GetKey()=27 Then End
Local event=WaitEvent()
Select event
Case 1025 ;Taste Gedrückt
;Stop
Select EventSource()
Case btn_go
ClsColor (255,255,255)
Cls
Color 0,0,0
Get_Site(TextFieldText(seite))
FlipCanvas canvas
End Select
Case $803 : End
End Select
Forever




Function Get_Site(Adresse$,SX=0,SY=0,port=80)
;Http herrausschneiden
If Left(Upper(Adresse$),7)=\"HTTP://\" Then
Adresse$ = Mid(adresse$,8,-1)
EndIf

Local x%,y%
Local Server$, Seite$

;Unterseite auf dem Server finden:
x=Instr(Adresse$,\"/\")
If x =0 Then
Server$=Adresse$
Seite$=\"/\"
Else
Server$=Left(Adresse$,x-1)
Seite$=Right(Adresse$,Len(Adresse$)-x+1)
EndIf

Local Htmlzeichen$,HTML_Keyword$,l
Local txt$,m,g,i,tcp,Zeile$,Buchstabe$
Local in_Body%
x=0
y=0

;verbingung Öffnen
tcp = HttpGet(Server$,Seite$,port,Proxy_Adress$,Proxy_port%) ; the last 3 points, are for the Proxy and Ports.
If tcp = False RuntimeError \"unable to connect to address\"

;Seite auslesen
While Eof(tcp) = False
zeile$=ReadLine$(tcp) ; Zeile zum bearbeiten
;txt$=\"\"
DebugLog zeile$
For i =1 To Len(zeile$)

; HTML Quelltext bearbeiten
If Mid(zeile$,i,1)=\"<\" Then m=m+1:g=i
If Mid(zeile$,i,1)=\">\" Then
m=m-1

Htmlzeichen$ = Lower(Mid(zeile$,g+1,i-g-1))
l=Instr(Htmlzeichen$,\" \")
If l Then
Html_keyword$=Left(Htmlzeichen$,l-1)
Else
Html_keyword$=Htmlzeichen$
EndIf
Select Html_keyword$
Case \"body\"
in_body=1
Case \"br\"
Text x-sx,y-sy,txt$
txt$=\"\"
y=y+15
Case \"/body\"
Text x-sx,y-sy,txt$
txt$=\"\"
in_body=0
End Select
;If Upper(Mid(zeile$,g+1,i-g-1)) = \"BR\"
; txt$=txt$+Chr(13)+Chr(10)
;EndIf

EndIf
If m<0 Then m=0
buchstabe$=Mid(zeile$,i,1)
If buchstabe$=\">\" Then Buchstabe$ = \"\"
; Text aufnehmen
If m=0 And in_body Then txt$=txt$+Buchstabe$
Next

;Leerzeichen, am ende, der Zeile
If Not(Trim(txt$) = \"\")
txt$ = txt$+\" \"
EndIf

Wend
CloseTCPStream(tcp)
End Function
;function
Function HttpGet(server$,path$,port=80,proxy$=\"\",proxyport=0)
Local www
If Len(proxy$) = 0 proxy$ = server$
If proxyport = 0 proxyport = port
www = OpenTCPStream(proxy$,proxyport)
If www = False Return False
WriteLine www,\"GET http://\" + server$ + \":\" + port + path$ + \" HTTP/1.1\" + Chr$(13)+Chr$(10) + \"Host: \" + server$ + Chr$(13)+Chr$(10) + \"User-Agent: blitzbasic\" + Chr$(13)+Chr$(10) + \"Accept: */*\" + Chr$(13)+Chr$(10)
Return www
End Function
between angels and insects

bear1

BeitragMi, Jan 11, 2006 16:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey, das ist gut. Darf ich das in einem kleinen Programm verwenden? Ich bin nämlich schon seit längerer Zeit auf der Suche nach so was...
Bitte Crying or Very sad

bear1
Ja, ne...

Zum virtuellen Staat Eranien:
http://www.eranien.de
Zu meinem Blog:
http://www.erixpage.de

Jan_

Ehemaliger Admin

BeitragMi, Jan 11, 2006 16:27
Antworten mit Zitat
Benutzer-Profile anzeigen
immer doch!

Dafür ist es das Code Arsch.ief,

würde mich freuen, wenn du uns deinee ändereungen andem Code postest, das es vielleicht mehr leute später einmal nutzten können und es ein wichtiger bestanntteil der Community wird.
between angels and insects

bear1

BeitragMi, Jan 11, 2006 18:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich denke, dass vor allem die Implementierung von HTML-Styletags wichtig ist, Veränderung der Größe, Ausrichtung und Schriftart usw. Um CSS kann man sich ja dann später kümmern.
Vielleicht könnte man auch ein Projekt daraus machen, Next-Generation-BB-Browser oder sowas... ich hätte Interesse daran und könnte auch ein eigenes Forum bereitstellen.
Ja, ne...

Zum virtuellen Staat Eranien:
http://www.eranien.de
Zu meinem Blog:
http://www.erixpage.de

BlitzChecker

BeitragMi, Jan 11, 2006 19:01
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hätt lust auf so ein projekt!
hab grad gemacht, dass die &nbsp; und so ersetzt werden werd gleich wohl mal style machen und so.
www.xairro.com

bear1

BeitragMi, Jan 11, 2006 19:23
Antworten mit Zitat
Benutzer-Profile anzeigen
So, habe jetzt alle Änderungen vorgenommen, die vorzeitig wohl mal notwendig waren. Sind verzeichnet im neuen CHANGELOG; Ich bitte auch die anderen Mitentwickler, ihre Änderungen dort einzutragen!

BlitzBasic: [AUSKLAPPEN]

;--------------------------CHANGELOG OF THIS PROGRAM-------------------------------
;
;
;An alle, die diesen Code verändern wollen: Bitte diesen Changelog-Block benutzen und das Phasen-
;level (bei 0.0.0.1 ist 1 das Phasenlevel) um eins höher setzen. ALLE Änderungen sollten in diesem
;Changelog verzeichnet werden, damit jeder Entwickler weiß, was der andere gemacht hat!
;
;
;_________________________________________
;
;
;
;
;---------> Versionsnummer 0.0.0.2 geändert von "bear1"
;
;Neue Oberfläche zusammengebastelt; alte ist kommentiert weiterhin ;vorhanden.
;Oberflächen-Elementbezeichnungen geändert.
;Menüs eingefügt.
;Statusmeldungen hinzugefügt.
;Fehler in Oberflächenverarbeitung behoben (1025 umgewandelt in $401 ;für Button-Event).
;  und © durch jeweilige Zeichen ersetzt (Replace$).
;Getestet, Fehler trotzdem suchen!!
;
;----------------------------------------------------------------------------------


Const version$ = "0.0.0.2" ;Versionsnummer; BITTE ABÄNDERN BEI ÄNDERUNGEN AM PHASENLEVEL!!!












;http://www.downloads24.com/kategorie_6_Shooterspiele_Seite_1.html
;init the Window:
Global Proxy_Adress$,Proxy_port%
Global bisher_stat$ ;Bisheriger Status (lässt sich ja leider nicht abfragen)

Proxy_Adress$=""
Proxy_port%=0

Global frmMain = CreateWindow("Project BBrowser", ClientWidth( Desktop() ) / 2 - (842 / 2), ClientHeight( Desktop() ) / 2 - (663 / 2), 842, 663, 0, 9+2)
lblAdresse = CreateLabel("Adresse:", 8, 38, 41, 13, frmMain)
edtAdresse = CreateTextField(56, 32, 593, 21, frmMain)
SetGadgetText edtAdresse,""
cmdGo = CreateButton("Wechseln zu", 656, 32, 99, 21, frmMain)
canvas = CreateCanvas(8, 64, 817, 537, frmMain)

;-------------------MENÜS

filemenu = CreateMenu("&File", 0, WindowMenu(frmMain))
exitmenuitem = CreateMenu("&Exit", 2, filemenu) ;Beenden
helpmenu = CreateMenu("&?", 0, WindowMenu(frmMain))
aboutmenuitem = CreateMenu("&About BBrowser", 3, helpmenu) ;Über "Project BBrowser"

UpdateWindowMenu(frmMain)



;-------------Alter Code, falls Bearbeitung unzulässig
;main_window=CreateWindow("Netz durchstöberer",0,0,GadgetWidth(Desktop()),GadgetHeight(Desktop()),0,9)
;seite=CreateTextField(0,1,230,20,main_window)
;canvas = CreateCanvas(2,25,GadgetWidth(Desktop())-12,GadgetHeight(Desktop())-75,main_window)
;btn_go=CreateButton("Los!",250,1,100,20,main_window,1)

SetBuffer CanvasBuffer(canvas)
ClsColor (255,255,255)
Cls
Color 0,0,0
Get_Site("http://www.inarie.de/nav.php?where=main&show=home")
FlipCanvas canvas
Repeat
;If GetKey()=27 Then End
Local event=WaitEvent()
Select event
Case $401 ;Button gedrückt
;Stop
Select EventSource()
Case cmdGo
ClsColor (255,255,255)
Cls
Color 0,0,0
Get_Site(TextFieldText(edtAdresse))
FlipCanvas canvas
End Select
Case $803 : End
Case $1001 ;Menü betätigt
Select EventData()
Case 2 ;Beenden
End
Case 3 ;Über
AppTitle "Project BBrowser"
Notify "Project BBrowser "+version$ + Chr(13) + "This program is Open Source"
End Select


End Select
Forever




Function Get_Site(Adresse$,SX=0,SY=0,port=80)

Status("Processing request...")
;Http herrausschneiden
If Left(Upper(Adresse$),7)="HTTP://" Then
Adresse$ = Mid(adresse$,8,-1)
EndIf

Local x%,y%
Local Server$, Seite$

;Unterseite auf dem Server finden:
x=Instr(Adresse$,"/")
If x =0 Then
Server$=Adresse$
Seite$="/"
Else
Server$=Left(Adresse$,x-1)
Seite$=Right(Adresse$,Len(Adresse$)-x+1)
EndIf

Local Htmlzeichen$,HTML_Keyword$,l
Local txt$,m,g,i,tcp,Zeile$,Buchstabe$
Local in_Body%
x=0
y=0

;verbingung Öffnen
tcp = HttpGet(Server$,Seite$,port,Proxy_Adress$,Proxy_port%) ; the last 3 points, are for the Proxy and Ports.
;If tcp = False RuntimeError "unable to connect to address"

;Seite auslesen
While Eof(tcp) = False
zeile$=ReadLine$(tcp) ; Zeile zum bearbeiten
Status("Getting Data from " + Server$ + "...")
;txt$=""
DebugLog zeile$
For i =1 To Len(zeile$)
Status("Building page...")
; HTML Quelltext bearbeiten
If Mid(zeile$,i,1)="<" Then m=m+1:g=i
If Mid(zeile$,i,1)=">" Then
m=m-1

Htmlzeichen$ = Lower(Mid(zeile$,g+1,i-g-1))
l=Instr(Htmlzeichen$," ")
If l Then
Html_keyword$=Left(Htmlzeichen$,l-1)
Else
Html_keyword$=Htmlzeichen$
EndIf
txt$ = Replace$(txt$, "©", Chr$(169)) ;Ersetzen Copyright-Zeichen
txt$ = Replace$(txt$, " ", Chr$(9)) ;Ersetzen   durch Tab

Select Html_keyword$
Case "body"
in_body=1
Case "br"
Text x-sx,y-sy,txt$
txt$=""
y=y+15
Case "/body"
Text x-sx,y-sy,txt$
txt$=""
in_body=0
End Select
;If Upper(Mid(zeile$,g+1,i-g-1)) = "BR"
; txt$=txt$+Chr(13)+Chr(10)
;EndIf

EndIf
If m<0 Then m=0
buchstabe$=Mid(zeile$,i,1)
If buchstabe$=">" Then Buchstabe$ = ""
; Text aufnehmen
If m=0 And in_body Then txt$=txt$+Buchstabe$
Next

;Leerzeichen, am ende, der Zeile
If Not(Trim(txt$) = "")
txt$ = txt$+" "
EndIf

Wend
CloseTCPStream(tcp)
Status("Ready")
End Function
;function
Function HttpGet(server$,path$,port=80,proxy$="",proxyport=0)
Local www
If Len(proxy$) = 0 proxy$ = server$
If proxyport = 0 proxyport = port
www = OpenTCPStream(proxy$,proxyport)
Status("Opened connection to " + proxy$)
If www = False Then
Return False
Status("Error: Could not connect")
EndIf
WriteLine www,"GET http://" + server$ + ":" + port + path$ + " HTTP/1.1" + Chr$(13)+Chr$(10) + "Host: " + server$ + Chr$(13)+Chr$(10) + "User-Agent: blitzbasic" + Chr$(13)+Chr$(10) + "Accept: */*" + Chr$(13)+Chr$(10)
Status("Sent request to " + proxy$)
Return www
End Function

Function Status(stat$) ;Status neu setzen
If stat$ <> bisher_stat$ Then SetStatusText frmMain, stat$
;Prüfen, ob Status anders als bisher, und wenn, dann setzen
bisher_stat$ = stat$ ;Bisherigen Status abändern
End Function


Hoffe, dass wenig Fehler drin sind.
Frage an Jan_: Warum hast Du 1025 statt $401 benutzt? Kommt mir spanisch vor.[/syntax]
Ja, ne...

Zum virtuellen Staat Eranien:
http://www.eranien.de
Zu meinem Blog:
http://www.erixpage.de

bear1

BeitragMi, Jan 11, 2006 19:48
Antworten mit Zitat
Benutzer-Profile anzeigen
OK, das Forum steht jetzt, ihr könnt es über die folgende Adresse erreichen:

http://25037.forendienst.de

Tipp: Am besten in die Favoriten (oder Lesezeichen) aufnehmen, dann erspart ihr euch Tipparbeit.
Ja, ne...

Zum virtuellen Staat Eranien:
http://www.eranien.de
Zu meinem Blog:
http://www.erixpage.de

Jan_

Ehemaliger Admin

BeitragDo, Jan 12, 2006 9:09
Antworten mit Zitat
Benutzer-Profile anzeigen
bear1 hat Folgendes geschrieben:
Frage an Jan_: Warum hast Du 1025 statt $401 benutzt? Kommt mir spanisch vor.


Um N00bs zu ärgern,
$ heißt HEXwert
$401 = 1025
weil bei Hexwerten die Basis nicht 10 sondern 16 Zahlen sind.
between angels and insects

Jan_

Ehemaliger Admin

Betreff: Re: [B+] First real BB Webbrowser

BeitragDo, Jan 12, 2006 12:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
;--------------------------CHANGELOG OF THIS PROGRAM-------------------------------
;
;
;An alle, die diesen Code verändern wollen: Bitte diesen Changelog-Block benutzen und das Phasen-
;level (bei 0.0.0.1 ist 1 das Phasenlevel) um eins höher setzen. ALLE Änderungen sollten in diesem
;Changelog verzeichnet werden, damit jeder Entwickler weiß, was der andere gemacht hat!
;
;
;_________________________________________
;
;
;
;---------> Versionsnummer 0.0.0.32 geändert von "Jan_"
;
;winAPI Ini Functionen zum laden und Speichern von Gman (ini.bb)
;Speichern und Laden der Proxyeinstellungen
;Eigenschaffts Type
;
;
;---------> Versionsnummer 0.0.0.31 geändert von "Jan_"
;
;Paar Bugs Raus
;Deutsche sonderzeichen
;Proxyeinstellungen
;
;---------> Versionsnummer 0.0.0.2 geändert von "bear1"
;
;Neue Oberfläche zusammengebastelt; alte ist kommentiert weiterhin ;vorhanden.
;Oberflächen-Elementbezeichnungen geändert.
;Menüs eingefügt.
;Statusmeldungen hinzugefügt.
;Fehler in Oberflächenverarbeitung behoben (1025 umgewandelt in $401 ;für Button-Event).
;&nbsp; und &copy; durch jeweilige Zeichen ersetzt (Replace$).
;Getestet, Fehler trotzdem suchen!!
;
;---------> Versionsnummer 0.0.0.1 erstellt von "Jan_"
;
;Die Basics
;
;----------------------------------------------------------------------------------


Const version$ = "0.0.0.32" ;Versionsnummer; BITTE ABÄNDERN BEI ÄNDERUNGEN AM PHASENLEVEL!!!


Include "ini.bb"

;Decls:
;.lib "kernel32.dll"
;
;IniRead%(AppName$, KeyName$, Default$, String*, size%, FileName$):"GetPrivateProfileStringA"
;IniEnumValues%(AppName$, KeyNull%, Default$, String*, size%, FileName$):"GetPrivateProfileStringA"
;IniEnumSections%(KeyNull1%, KeyNull2%, Default$, String*, size%, FileName$):"GetPrivateProfileStringA"
;IniWrite%(AppName$, KeyName$, Value$, FileName$):"WritePrivateProfileStringA"

Type HTML_Style
   Field Name$
   Field priority%
End Type

Type HTML_Atribute
   Field Objekt.HTML_Style
   Field Name$
   Field Value$
End Type

Function HTML_verwalten(Name$)
   Local i%=Instr(Name$," ")
   Local wort$
   Local Attribute%
   If i <> 0 Then
      wort$=Trim(Left(Name$,i))
      ;Notify wort$
      Attribute%=1
   Else
      Attribute%=0
      wort$=Trim(name$)
   EndIf
   If Attribute Then
      ; Hier die Attribute auslesen und auswerten
   EndIf
   Local OutObjekt.HTML_Style=Null
   Local out%=(Left(name,1)="/")
   If out Then
      wort = Right(wort,Len(wort)-1)
   EndIf
   Local Objekt.HTML_Style
   Local prior%=0
   For Objekt = Each HTML_Style
      If Objekt\name = wort Then
         If out
            If prior%<Objekt\priority
               OutObjekt=Objekt
               prior%=Objekt\priority
            EndIf
         Else
            prior%=Objekt\priority
         EndIf
      EndIf
   Next
   If out%
      If Not(OutObjekt =Null) Then
         Delete outObjekt
         Return 1
      Else
         DebugLog "#Fehler im Quelltext, nicht erstelltes Objekt soll gelöscht werden."
         DebugLog "#"+wort
      EndIf
   Else
      objekt=New HTML_Style
      objekt\priority% = prior%+1
      objekt\Name$ = Wort$
   EndIf
End Function

Function HTML_in(Name$)
   Local Objekt.HTML_Style
   For Objekt = Each HTML_Style
      If Objekt\name = name Then
         ;DebugLog "#"+Objekt\name
         Return 1
      EndIf
   Next
   Return 0
End Function

;http://www.downloads24.com/kategorie_6_Shooterspiele_Seite_1.html
;init the Window:
Global Proxy_Adress$,Proxy_port%
Global bisher_stat$ ;Bisheriger Status (lässt sich ja leider nicht abfragen)

Global frmMain = CreateWindow("Project BBrowser", ClientWidth( Desktop() ) / 2 - (842 / 2), ClientHeight( Desktop() ) / 2 - (663 / 2), 842, 663, 0, 9+2)
lblAdresse = CreateLabel("Adresse:", 8, 38, 41, 13, frmMain)
edtAdresse = CreateTextField(56, 32, 593, 21, frmMain)
SetGadgetText edtAdresse,""
Global cmdGo = CreateButton("Wechseln zu", 656, 32, 99, 21, frmMain)
canvas = CreateCanvas(8, 64, 817, 537, frmMain)

;-------------------MENÜS

Global filemenu = CreateMenu("&File", 0, WindowMenu(frmMain))
Global exitmenuitem = CreateMenu("&Exit", 2, filemenu) ;Beenden

Global configmenu = CreateMenu("&Einstellungen", 0, WindowMenu(frmMain)) ; zu den Einstellungen
Global proxymenu = CreateMenu("&Proxys", 3, configmenu)

Global helpmenu = CreateMenu("&?", 0, WindowMenu(frmMain))
Global aboutmenuitem = CreateMenu("&About BBrowser", 4, helpmenu) ;Über "Project BBrowser"

;-------------------Load Config
Proxy_Adress$=ini_read$("Proxy","adress",CurrentDir()+"config.ini","0.0.0.0")
Proxy_port%=ini_read$("Proxy","port",CurrentDir()+"config.ini","0")

UpdateWindowMenu(frmMain)

SetBuffer CanvasBuffer(canvas)
ClsColor (255,255,255)
Cls
Color 0,0,0
Get_Site("http://www.inarie.de/nav.php?where=main&show=home")
FlipCanvas canvas
Repeat
   ;If GetKey()=27 Then End
   Local event=WaitEvent()
   Select event
      Case $401 ;Button gedrückt
      ;Stop
         Select EventSource()
         Case cmdGo
            ClsColor (255,255,255)
            Cls
            Color 0,0,0
            Get_Site(TextFieldText(edtAdresse))
            FlipCanvas canvas
         End Select
      Case $803 : End
      Case $1001 ;Menü betätigt
         Select EventData()
         Case 2 ;Beenden
            End
         Case 3 ; Proxyeingabe
            Proxy_Menue()
         Case 4 ;Über
            AppTitle "Project BBrowser"
            Notify "Project BBrowser "+version$ + Chr(13) + "This program is Open Source"
         End Select


   End Select
Forever

Function Proxy_Menue()
   Local raus%=0
   Local frmProxy=CreateWindow("Proxyeinstellungen",GadgetX(frmMain),GadgetY(frmMain),270,150,frmMain,1)
   Local frmProxy_inporxy=CreateTextField( 100,10,150,25,frmProxy)
   Local frmProxy_inport=CreateTextField( 100,50,150,25,frmProxy)
   SetGadgetText frmProxy_inporxy,Proxy_Adress$
   SetGadgetText frmProxy_inport,Proxy_port%
   Local lbl1=CreateLabel ("Proxy:",10,10,85,25,frmProxy)
   Local lbl2=CreateLabel ("Port:",10,50,85,25,frmProxy)
   Local frmProxy_ok=CreateButton("&OK", 200,90,60,25,frmProxy)
   Repeat
      Local Proxy_event=WaitEvent()
      Select Proxy_event
         Case $401 ;Button gedrückt
            Select EventSource()
            Case frmProxy_ok
               raus=1
               Proxy_Adress$=TextFieldText(frmProxy_inporxy)
               Proxy_port%=TextFieldText(frmProxy_inport)
            End Select
         Case $803 : raus=1
      End Select
   Until raus
   ini_write("Proxy","adress",Proxy_Adress$,CurrentDir()+"config.ini")
   ini_write("Proxy","port",Proxy_Port%,CurrentDir()+"config.ini")
   FreeGadget frmProxy_ok
   FreeGadget lbl1
   FreeGadget lbl2
   FreeGadget frmProxy_inport
   FreeGadget frmProxy_inproxy
   FreeGadget frmProxy
End Function


Function Get_Site(Adresse$,SX=0,SY=0,port=80)

   Status("Processing request...")
   ;Http herrausschneiden
   If Left(Upper(Adresse$),7)="HTTP://" Then
      Adresse$ = Mid(adresse$,8,-1)
   EndIf

   Local x%,y%
   Local Server$, Seite$

   ;Unterseite auf dem Server finden:
   x=Instr(Adresse$,"/")
   If x =0 Then
      Server$=Adresse$
      Seite$="/"
   Else
      Server$=Left(Adresse$,x-1)
      Seite$=Right(Adresse$,Len(Adresse$)-x+1)
   EndIf

   Local Htmlzeichen$,HTML_Keyword$,l
   Local txt$,m,g,i,tcp,Zeile$,Buchstabe$
   Local in_Body%
   x=0
   y=0

   ;verbingung Öffnen
   tcp = HttpGet(Server$,Seite$,port,Proxy_Adress$,Proxy_port%) ; the last 3 points, are for the Proxy and Ports.
   ;If tcp = False RuntimeError "unable to connect to address"
   If tcp = False Then
      Status("Seite konnte nicht gefunden werden")
      Return False
   EndIf
   ;Seite auslesen
   While Eof(tcp) = False
      zeile$=ReadLine$(tcp) ; Zeile zum bearbeiten
      Status("Getting Data from " + Server$ + "...")
      ;txt$=""
      DebugLog zeile$
      For i =1 To Len(zeile$)
         Status("Building page...")
         ; HTML Quelltext bearbeiten
         If Mid(zeile$,i,1)="<" Then m=m+1:g=i
         If Mid(zeile$,i,1)=">" Then
            m=m-1

            Htmlzeichen$ = Lower(Mid(zeile$,g+1,i-g-1))
            HTML_verwalten(Htmlzeichen$)
            ;l=Instr(Htmlzeichen$," ")
            ;If l Then
            ;   Html_keyword$=Left(Htmlzeichen$,l-1)
            ;Else
            ;   Html_keyword$=Htmlzeichen$
            ;EndIf
            
            txt$ = Replace$(txt$, "&copy;", Chr$(169)) ;Ersetzen Copyright-Zeichen
            txt$ = Replace$(txt$, "&nbsp;", Chr$(9)) ;Ersetzen &nbsp; durch Tab
            ;Deutsche sonderzeichen
            txt$ = Replace$(txt$, "&auml;", "ä")
            txt$ = Replace$(txt$, "&uuml;", "ü")
            txt$ = Replace$(txt$, "&ouml;", "ö")
            txt$ = Replace$(txt$, "&Auml;", "Ä")
            txt$ = Replace$(txt$, "&Uuml;", "Ü")
            txt$ = Replace$(txt$, "&Ouml;", "Ö")
            
            If HTML_IN("body") Then            
               If HTML_IN("br") Then
                  Text x-sx,y-sy,txt$
                  y=y+15
                  html_verwalten("/br")
                  txt$=""
               EndIf            
            EndIf
            
            ;If Upper(Mid(zeile$,g+1,i-g-1)) = "BR"
               ; txt$=txt$+Chr(13)+Chr(10)
            ;EndIf
            
         EndIf
         If m<0 Then m=0
         buchstabe$=Mid(zeile$,i,1)
         If buchstabe$=">" Then Buchstabe$ = ""
         ; Text aufnehmen
         If HTML_IN("body") Then   
            If m=0 Then txt$=txt$+Buchstabe$ ;in_body Then txt$=txt$+Buchstabe$
         EndIf
      Next

      ;Leerzeichen, am ende, der Zeile
      If Not(Trim(txt$) = "")
         txt$ = txt$+" "
      EndIf

   Wend
   CloseTCPStream(tcp)
   Status("Ready")
End Function

Function HttpGet(server$,path$,port=80,proxy$="",proxyport=0)
   proxy$=Replace(Proxy$,"0.0.0.0","")
   Local www
   If Len(proxy$) = 0 proxy$ = server$
   If proxyport = 0 proxyport = port
   www = OpenTCPStream(proxy$,proxyport)
   Status("Opened connection to " + proxy$)
   If www = False Then
      Status("Error: Could not connect")
      Return False
   EndIf
   WriteLine www,"GET http://" + server$ + ":" + port + path$ + " HTTP/1.1" + Chr$(13)+Chr$(10) + "Host: " + server$ + Chr$(13)+Chr$(10) + "User-Agent: blitzbasic" + Chr$(13)+Chr$(10) + "Accept: */*" + Chr$(13)+Chr$(10)
   Status("Send request to " + proxy$)
   Return www
End Function

Function Status(stat$) ;Status neu setzen
   If stat$ <> bisher_stat$ Then SetStatusText frmMain, stat$
   ;Prüfen, ob Status anders als bisher, und wenn, dann setzen
   bisher_stat$ = stat$ ;Bisherigen Status abändern
End Function

ini.bb
Code: [AUSKLAPPEN]
; ID: 1260
; Author: gman
; Date: 2005-01-18 10:15:19
; Title: more INI funcs
; Description: another set of INI access functions

; writes a value to an INI file
Function ini_write(Section$,Key$,Value$,File$)
IniWrite(Section$, Key$, Value$, File$)
End Function

; reads a value from an INI file
Function ini_read$(Section$,Key$,File$,Dflt$="",nReadSize=100)
Local bank,nRet=0,cRetVal$=Dflt$,nCnt=0,char=0

bank=CreateBank(nReadSize)
nRet=IniRead(Section$,Key$,Dflt$,bank,BankSize(bank),File$)

; make sure we have something
If nRet>0
cRetVal$=""

; loop thru the characters returned
For nCnt=0 To nRet-1
; get the next character
char=PeekByte(bank,nCnt)
; check if at string end
If char=0 Then Exit
; add the character to the return value
cRetVal$=cRetVal$+Chr(char)
Next
EndIf

FreeBank bank

Return cRetVal$
End Function

; reads in all the value names from a section in an INI file and returns a delimited string list
; can optionally return values with the names
Function ini_enumvalues$(Section$,File$,lValues=False,ValDflt$="",delim$="|",nReadSize=2000)
Local bank,nRet=0,nCnt=0,char=0,temp$="",cRetVal$=""

bank=CreateBank(nReadSize)
nRet=IniEnumValues(Section$,0,"",bank,BankSize(bank),File$)

; make sure we have something
If nRet>0
; loop thru the characters returned
For nCnt=0 To nRet-1
; get the next char
char=PeekByte(bank,nCnt)

; char 0 means we are at the end of the current value
If char=0
; we are done with the current value name, now get the value and add both to the
; final result
cRetVal$=cRetVal$+temp$

; get the value if needed
If lValues
cRetVal$=cRetVal$+"="+ini_read(Section$,temp$,File$,ValDflt$)
EndIf

; if this is not the last name/value pair, add on the delimiter
If nCnt<(nRet-1)
cRetVal$=cRetVal$+delim$
EndIf

; clear out the temp to make way for the next value
temp$=""
Else
; add in the current character
temp$=temp$+Chr(char)
EndIf
Next
EndIf

FreeBank bank

Return cRetVal$
End Function

; reads in all the sections from an INI file and returns a delimited string list
Function ini_enumsections$(File$,delim$="|",nReadSize=2000)
Local bank,nRet=0,nCnt=0,char=0,temp$="",cRetVal$=""

bank=CreateBank(nReadSize)
nRet=IniEnumSections(0,0,"",bank,BankSize(bank),File$)

; make sure we have something
If nRet>0
; loop thru the characters returned
For nCnt=0 To nRet-1
; get the next char
char=PeekByte(bank,nCnt)

; char 0 means we are at the end of the current section name
If char=0
; add the current section to the final result
cRetVal$=cRetVal$+temp$

; if this is not the last name, add on the delimiter
If nCnt<(nRet-1)
cRetVal$=cRetVal$+delim$
EndIf

; clear out the temp to make way for the next section name
temp$=""
Else
; add in the current character
temp$=temp$+Chr(char)
EndIf
Next
EndIf

FreeBank bank

Return cRetVal$
End Function
between angels and insects
  • Zuletzt bearbeitet von Jan_ am Do, Jan 12, 2006 16:17, insgesamt einmal bearbeitet

Hummelpups

BeitragDo, Jan 12, 2006 13:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Darf ich da mein Project Management System anbieten?
Ist villeicht komfortabler als es ständig ins Forum zu posten.

http://www.blitzhelp.net/index...&id=83

IMurDOOM
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus

bear1

BeitragDo, Jan 12, 2006 15:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Äh, Jan, bin ich doof oder wo ist die Funktion IniWrite?? Die scheint es wirklich nicht zu geben.

Edit: Ach so, ich bin wirklich doof. Tut mir leid.

Edit2:

1. Einigen wir uns endlich auf eine Programm- und Kommentarsprache. Ich schlage als Programmsprache Deutsch und als Kommentarsprache Englisch vor.

2. Programm läuft nicht; Dauernd Statusmeldung "Seite konnte nicht gefunden werden", auch beim Start des Programms. Konnte Fehler nicht finden. @ Jan_: Bitte möglichst schnell beheben.

3. Also entweder nutzen wir jetzt:
-Weiterhin dieses Forum
-Die vorgeschlagene Projektverwaltung
-Das Forum, das ich eingerichtet habe.
Bei den beiden ersten Möglichkeiten werde ich das neu eingerichtete Forum wieder löschen.
Ja, ne...

Zum virtuellen Staat Eranien:
http://www.eranien.de
Zu meinem Blog:
http://www.erixpage.de
  • Zuletzt bearbeitet von bear1 am Do, Jan 12, 2006 15:41, insgesamt einmal bearbeitet

BlitzChecker

BeitragDo, Jan 12, 2006 15:41
Antworten mit Zitat
Benutzer-Profile anzeigen
bei mir gehts auch nicht. in der include is ne function ini_write die die function iniwrite aufruft. aber die gibts nich. was da los?
www.xairro.com

Jan_

Ehemaliger Admin

BeitragDo, Jan 12, 2006 16:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Bug behoben,

Ich nutzte immer einen Proxy, darum habe ich es nciht bemerkt Smile
between angels and insects

BlitzChecker

BeitragDo, Jan 12, 2006 18:34
Antworten mit Zitat
Benutzer-Profile anzeigen
und wo ist der fertige code jetzt? hast du den da oben verändert?

ich probier mal das oben vorgeschlagene projectteil aus.
www.xairro.com

bear1

BeitragDo, Jan 12, 2006 20:15
Antworten mit Zitat
Benutzer-Profile anzeigen
So, habe jetzt auch Sprachdateien eingebaut (im Moment noch in Konfigurationsdatei, lässt sich aber ändern).

Code-Datei:
Code: [AUSKLAPPEN]

;--------------------------CHANGELOG OF THIS PROGRAM-------------------------------
;
;
;An alle, die diesen Code verändern wollen: Bitte diesen Changelog-Block benutzen und das Phasen-
;level (bei 0.0.0.1 ist 1 das Phasenlevel) um eins höher setzen. ALLE Änderungen sollten in diesem
;Changelog verzeichnet werden, damit jeder Entwickler weiß, was der andere gemacht hat!
;
;
;_________________________________________
;
;---------> Versionsnummer 0.0.0.41 geändert von "bear1"
;
;Sprache eingebaut (Sprachdaten in config.ini, daher Datei mit erstellen, ansonsten alles leer; vielleicht in
;   externe Sprachdatei, damit config.ini nicht zugemüllt wird?)
;
;Weitere Sprachen lassen sich einfach hinzufügen, indem man die Variablen einer bisherigen Sprache kopiert und das
;bisherige Präfix durch ein anderes (beispielsweise französisch = fr_) ersetzt. Dann muss man nur noch die Texte
;schreiben. Die Variablenbezeichnungen sind meist selbsterklärend.
;
;@ Jan: Fehler suchen, beschrieben in meinem Thread!!!
;
;
;
;---------> Versionsnummer 0.0.0.32 geändert von "Jan_"
;
;winAPI Ini Functionen zum laden und Speichern von Gman (ini.bb)
;Speichern und Laden der Proxyeinstellungen
;Eigenschaffts Type
;
;
;---------> Versionsnummer 0.0.0.31 geändert von "Jan_"
;
;Paar Bugs Raus
;Deutsche sonderzeichen
;Proxyeinstellungen
;
;---------> Versionsnummer 0.0.0.2 geändert von "bear1"
;
;Neue Oberfläche zusammengebastelt; alte ist kommentiert weiterhin ;vorhanden.
;Oberflächen-Elementbezeichnungen geändert.
;Menüs eingefügt.
;Statusmeldungen hinzugefügt.
;Fehler in Oberflächenverarbeitung behoben (1025 umgewandelt in $401 ;für Button-Event).
;&nbsp; und &copy; durch jeweilige Zeichen ersetzt (Replace$).
;Getestet, Fehler trotzdem suchen!!
;
;---------> Versionsnummer 0.0.0.1 erstellt von "Jan_"
;
;Die Basics
;
;----------------------------------------------------------------------------------


Const version$ = "0.0.0.41" ;Versionsnummer; BITTE ABÄNDERN BEI ÄNDERUNGEN AM PHASENLEVEL!!!


Include "ini.bb"

;Decls:
;.lib "kernel32.dll"
;
;IniRead%(AppName$, KeyName$, Default$, String*, size%, FileName$):"GetPrivateProfileStringA"
;IniEnumValues%(AppName$, KeyNull%, Default$, String*, size%, FileName$):"GetPrivateProfileStringA"
;IniEnumSections%(KeyNull1%, KeyNull2%, Default$, String*, size%, FileName$):"GetPrivateProfileStringA"
;IniWrite%(AppName$, KeyName$, Value$, FileName$):"WritePrivateProfileStringA"





Type HTML_Style
   Field Name$
   Field priority%
End Type

Type HTML_Atribute
   Field Objekt.HTML_Style
   Field Name$
   Field Value$
End Type

Function HTML_verwalten(Name$)
   Local i%=Instr(Name$," ")
   Local wort$
   Local Attribute%
   If i <> 0 Then
      wort$=Trim(Left(Name$,i))
      ;Notify wort$
      Attribute%=1
   Else
      Attribute%=0
      wort$=Trim(name$)
   EndIf
   If Attribute Then
      ; Hier die Attribute auslesen und auswerten
   EndIf
   Local OutObjekt.HTML_Style=Null
   Local out%=(Left(name,1)="/")
   If out Then
      wort = Right(wort,Len(wort)-1)
   EndIf
   Local Objekt.HTML_Style
   Local prior%=0
   For Objekt = Each HTML_Style
      If Objekt\name = wort Then
         If out
            If prior%<Objekt\priority
               OutObjekt=Objekt
               prior%=Objekt\priority
            EndIf
         Else
            prior%=Objekt\priority
         EndIf
      EndIf
   Next
   If out%
      If Not(OutObjekt =Null) Then
         Delete outObjekt
         Return 1
      Else
         DebugLog "#Fehler im Quelltext, nicht erstelltes Objekt soll gelöscht werden."
         DebugLog "#"+wort
      EndIf
   Else
      objekt=New HTML_Style
      objekt\priority% = prior%+1
      objekt\Name$ = Wort$
   EndIf
End Function

Function HTML_in(Name$)
   Local Objekt.HTML_Style
   For Objekt = Each HTML_Style
      If Objekt\name = name Then
         ;DebugLog "#"+Objekt\name
         Return 1
      EndIf
   Next
   Return 0
End Function



;http://www.downloads24.com/kategorie_6_Shooterspiele_Seite_1.html
;init the Window:
Global Proxy_Adress$,Proxy_port%
Global bisher_stat$ ;Bisheriger Status (lässt sich ja leider nicht abfragen)

Global frmMain = CreateWindow("Project BBrowser", ClientWidth( Desktop() ) / 2 - (842 / 2), ClientHeight( Desktop() ) / 2 - (663 / 2), 842, 663, 0, 9+2)
Global lblAdresse = CreateLabel("Adresse:", 8, 38, 41, 13, frmMain)
edtAdresse = CreateTextField(56, 32, 593, 21, frmMain)
SetGadgetText edtAdresse,""
Global cmdGo = CreateButton("Wechseln zu", 656, 32, 99, 21, frmMain)
Global canvas = CreateCanvas(8, 64, 817, 537, frmMain)

;-------------------MENÜS



;-------------------Load Config
Proxy_Adress$=ini_read$("Proxy","adress",CurrentDir()+"config.ini","0.0.0.0")
Proxy_port%=ini_read$("Proxy","port",CurrentDir()+"config.ini","0")




;-------------------Global language variables

Global Ln_Prefix$
Global Ln_Menus_File$
Global Ln_Menus_File_Exit$
Global Ln_Menus_Options$
Global Ln_Menus_Options_Proxy$
Global Ln_Menus_Help$
Global Ln_Menus_Help_About$
Global Ln_Labels_Address$
Global Ln_Buttons_Go$
Global Ln_States_Build$
Global Ln_States_Ready$
Global Ln_States_Getting$

;State messages:

;Building page...
;Ready
;Getting Data from ...
;Processing request...
;URL Not found
;Send request to
;Connecting to
;Could not connect




language_set()

Function language_set()
   Language_Name$=ini_read$("Language","name",CurrentDir$()+"config.ini","de")
   Ln_Prefix$=Language_Name$+"_"
   Ln_Menus_File$=ini_read$("Language",Ln_Prefix$+"MenuFile",CurrentDir$()+"config.ini","&Datei")
   Ln_Menus_File_Exit$=ini_read$("Language",Ln_Prefix$+"MenuFileExit",CurrentDir$()+"config.ini","&Beenden")
   Ln_Menus_Options$=ini_read$("Language",Ln_Prefix$+"MenuOptions",CurrentDir$()+"config.ini","&Einstellungen")
   Ln_Menus_Options_Proxy$=ini_read$("Language",Ln_Prefix$+"MenuOptionsProxy",CurrentDir$()+"config.ini","&Proxy-Einstellungen...")
   Ln_Menus_Help$=ini_read$("Language",Ln_Prefix$+"MenuHelp",CurrentDir$()+"config.ini","&?")
   Ln_Menus_Help_About$=ini_read$("Language",Ln_Prefix$+"MenuHelpAbout",CurrentDir$()+"config.ini","Ü&ber Project BBrowser")
   Ln_Labels_Address$=ini_read$("Language",Ln_Prefix$+"LabelAddress",CurrentDir$()+"config.ini","Adresse:")
   Ln_Buttons_Go$=ini_read$("Language",Ln_Prefix$+"ButtonGo",CurrentDir$()+"config.ini","Öffnen")
   Ln_States_Build$=ini_read$("Language",Ln_Prefix$+"StateBuild",CurrentDir$()+"config.ini","Baue Seite auf...")
   Ln_States_Ready$=ini_read$("Language",LN_Prefix$+"StateReady",CurrentDir$()+"config.ini","Fertig")
   Ln_States_Getting$=ini_read$("Language",LN_Prefix$+"StateGetting",CurrentDir$()+"config.ini","Empfange Daten von ")
   Ln_States_Processing$=ini_read$("Language",LN_Prefix$+"StateProcessing",CurrentDir$()+"config.ini","Verarbeite Anfrage...")
   Ln_States_Err404$=ini_read$("Language",LN_Prefix$+"StateErr404",CurrentDir$()+"config.ini","Seite konnte nicht gefunden werden")
   Ln_States_Requested$=ini_read$("Language",LN_Prefix$+"StateRequested",CurrentDir$()+"config.ini","Anfrage gesendet an ")
   Ln_States_Connect$=ini_read$("Language",LN_Prefix$+"StateConnect",CurrentDir$()+"config.ini","Verbinde mit ")
   Ln_States_ErrConnect$=ini_read$("Language",LN_Prefix$+"StateErrConnect",CurrentDir$()+"config.ini","Verbindung fehlgeschlagen")
   
   ;SetGadgetText filemenu,Ln_Menus_File$
   ;SetGadgetText exitmenuitem,Ln_Menus_File_Exit$
   ;SetGadgetText configmenu,Ln_Menus_Options$
   ;SetGadgetText proxymenu,Ln_Menus_Options_Proxy$
   ;SetGadgetText helpmenu,Ln_Menus_Help$
   ;SetGadgetText aboutmenuitem,Ln_Menus_Help_About$
   SetGadgetText lblAdresse,Ln_Labels_Address$
   SetGadgetText cmdGo,Ln_Buttons_Go$
End Function

Global filemenu = CreateMenu(Ln_Menus_File$, 0, WindowMenu(frmMain))
Global exitmenuitem = CreateMenu(Ln_Menus_File_Exit$, 2, filemenu) ;Beenden

Global configmenu = CreateMenu(Ln_Menus_Options$, 0, WindowMenu(frmMain)) ; zu den Einstellungen
Global proxymenu = CreateMenu(Ln_Menus_Options_Proxy$, 3, configmenu)

Global helpmenu = CreateMenu(Ln_Menus_Help$, 0, WindowMenu(frmMain))
Global aboutmenuitem = CreateMenu(Ln_Menus_Help_About$, 4, helpmenu) ;Über "Project BBrowser"

UpdateWindowMenu(frmMain)


SetBuffer CanvasBuffer(canvas)
ClsColor (255,255,255)
Cls
Color 0,0,0
Get_Site("http://www.inarie.de/nav.php?where=main&show=home")
FlipCanvas canvas
Repeat
   ;If GetKey()=27 Then End
   Local event=WaitEvent()
   Select event
      Case $401 ;Button gedrückt
      ;Stop
         Select EventSource()
         Case cmdGo
            ClsColor (255,255,255)
            Cls
            Color 0,0,0
            Get_Site(TextFieldText(edtAdresse))
            FlipCanvas canvas
         End Select
      Case $803 : End
      Case $1001 ;Menü betätigt
         Select EventData()
         Case 2 ;Beenden
            End
         Case 3 ; Proxyeingabe
            Proxy_Menue()
         Case 4 ;Über
            AppTitle "Project BBrowser"
            Notify "Project BBrowser "+version$ + Chr(13) + "This program is Open Source"
         End Select


   End Select
Forever

Function Proxy_Menue()
   Local raus%=0
   Local frmProxy=CreateWindow("Proxyeinstellungen",GadgetX(frmMain),GadgetY(frmMain),270,150,frmMain,1)
   Local frmProxy_inporxy=CreateTextField( 100,10,150,25,frmProxy)
   Local frmProxy_inport=CreateTextField( 100,50,150,25,frmProxy)
   SetGadgetText frmProxy_inporxy,Proxy_Adress$
   SetGadgetText frmProxy_inport,Proxy_port%
   Local lbl1=CreateLabel ("Proxy:",10,10,85,25,frmProxy)
   Local lbl2=CreateLabel ("Port:",10,50,85,25,frmProxy)
   Local frmProxy_ok=CreateButton("&OK", 200,90,60,25,frmProxy)
   Repeat
      Local Proxy_event=WaitEvent()
      Select Proxy_event
         Case $401 ;Button gedrückt
            Select EventSource()
            Case frmProxy_ok
               raus=1
               Proxy_Adress$=TextFieldText(frmProxy_inporxy)
               Proxy_port%=TextFieldText(frmProxy_inport)
            End Select
         Case $803 : raus=1
      End Select
   Until raus
   ini_write("Proxy","adress",Proxy_Adress$,CurrentDir()+"config.ini")
   ini_write("Proxy","port",Proxy_Port%,CurrentDir()+"config.ini")
   FreeGadget frmProxy_ok
   FreeGadget lbl1
   FreeGadget lbl2
   FreeGadget frmProxy_inport
   FreeGadget frmProxy_inproxy
   FreeGadget frmProxy
End Function


Function Get_Site(Adresse$,SX=0,SY=0,port=80)

   Status(Ln_State_Processing$)
   ;Http herrausschneiden
   If Left(Upper(Adresse$),7)="HTTP://" Then
      Adresse$ = Mid(adresse$,8,-1)
   EndIf

   Local x%,y%
   Local Server$, Seite$

   ;Unterseite auf dem Server finden:
   x=Instr(Adresse$,"/")
   If x =0 Then
      Server$=Adresse$
      Seite$="/"
   Else
      Server$=Left(Adresse$,x-1)
      Seite$=Right(Adresse$,Len(Adresse$)-x+1)
   EndIf

   Local Htmlzeichen$,HTML_Keyword$,l
   Local txt$,m,g,i,tcp,Zeile$,Buchstabe$
   Local in_Body%
   x=0
   y=0

   ;verbingung Öffnen
   tcp = HttpGet(Server$,Seite$,port,Proxy_Adress$,Proxy_port%) ; the last 3 points, are for the Proxy and Ports.
   ;If tcp = False RuntimeError "unable to connect to address"
   If tcp = False Then
      Status(Ln_States_Err404$)
      Return False
   EndIf
   ;Seite auslesen
   While Eof(tcp) = False
      zeile$=ReadLine$(tcp) ; Zeile zum bearbeiten
      Status(Ln_States_Getting$ + " " + Server$ + "...")
      ;txt$=""
      DebugLog zeile$
      For i =1 To Len(zeile$)
         Status(Ln_States_Build$)
         ; HTML Quelltext bearbeiten
         If Mid(zeile$,i,1)="<" Then m=m+1:g=i
         If Mid(zeile$,i,1)=">" Then
            m=m-1

            Htmlzeichen$ = Lower(Mid(zeile$,g+1,i-g-1))
            HTML_verwalten(Htmlzeichen$)
            ;l=Instr(Htmlzeichen$," ")
            ;If l Then
            ;   Html_keyword$=Left(Htmlzeichen$,l-1)
            ;Else
            ;   Html_keyword$=Htmlzeichen$
            ;EndIf
           
            txt$ = Replace$(txt$, "&copy;", Chr$(169)) ;Ersetzen Copyright-Zeichen
            txt$ = Replace$(txt$, "&nbsp;", Chr$(9)) ;Ersetzen &nbsp; durch Tab
            ;Deutsche sonderzeichen
            txt$ = Replace$(txt$, "&auml;", "ä")
            txt$ = Replace$(txt$, "&uuml;", "ü")
            txt$ = Replace$(txt$, "&ouml;", "ö")
            txt$ = Replace$(txt$, "&Auml;", "Ä")
            txt$ = Replace$(txt$, "&Uuml;", "Ü")
            txt$ = Replace$(txt$, "&Ouml;", "Ö")
           
            If HTML_IN("body") Then           
               If HTML_IN("br") Then
                  Text x-sx,y-sy,txt$
                  y=y+15
                  html_verwalten("/br")
                  txt$=""
               EndIf           
            EndIf
           
            ;If Upper(Mid(zeile$,g+1,i-g-1)) = "BR"
               ; txt$=txt$+Chr(13)+Chr(10)
            ;EndIf
           
         EndIf
         If m<0 Then m=0
         buchstabe$=Mid(zeile$,i,1)
         If buchstabe$=">" Then Buchstabe$ = ""
         ; Text aufnehmen
         If HTML_IN("body") Then   
            If m=0 Then txt$=txt$+Buchstabe$ ;in_body Then txt$=txt$+Buchstabe$
         EndIf
      Next

      ;Leerzeichen, am ende, der Zeile
      If Not(Trim(txt$) = "")
         txt$ = txt$+" "
      EndIf

   Wend
   CloseTCPStream(tcp)
   Status(Ln_States_Ready$)
End Function

;function
Function HttpGet(server$,path$,port=80,proxy$="",proxyport=0)
   proxy$=Replace(Proxy$,"0.0.0.0","")
    Local www
   If Len(proxy$) = 0 Then proxy$ = server$
   If proxyport = 0 Then proxyport = port
   www = OpenTCPStream(proxy$,proxyport)
   Status(Ln_States_Connect$ + " " + proxy$)
   If www = False Then
      Status(Ln_States_ErrConnect$)
      Return False
   EndIf
   WriteLine www,"GET http://" + server$ + ":" + port + path$ + " HTTP/1.1" + Chr$(13)+Chr$(10) + "Host: " + server$ + Chr$(13)+Chr$(10) + "User-Agent: blitzbasic" + Chr$(13)+Chr$(10) + "Accept: */*" + Chr$(13)+Chr$(10)
   Status(Ln_States_Requested$ + " " + proxy$)
   Return www
End Function

Function Status(stat$) ;Status neu setzen
   If stat$ <> bisher_stat$ Then SetStatusText frmMain, stat$
   ;Prüfen, ob Status anders als bisher, und wenn, dann setzen
   bisher_stat$ = stat$ ;Bisherigen Status abändern
End Function


Da der ganze Sprachmist in config.ini steht, hier der Text (Auslagerung in language.ini oder so möglich):

config.ini:
Code: [AUSKLAPPEN]

[Proxy]
adress=0.0.0.0
port=80
[Language]
name=de
de_MenuFile=&Datei
de_MenuFileExit=&Beenden
de_MenuOptions=&Einstellungen
de_MenuOptionsProxy=&Proxy-Einstellungen...
de_MenuHelp=&?
de_MenuHelpAbout=Ü&ber Project BBrowser
de_LabelAddress=Adresse:
de_ButtonGo=Öffnen
de_StateBuild=Baue Seite auf...
de_StateReady=Fertig
de_StateGetting=Empfange Daten von
de_StateProcessing=Verarbeite Anfrage...
de_StateErr404=Seite konnte nicht gefunden werden
de_StateRequested=Anfrage gesendet an
de_StateConnect=Verbinde mit
de_StateErrConnect=Verbindung fehlgeschlagen
en_MenuFile=&File
en_MenuFileExit=&Exit
en_MenuOptions=&Settings
en_MenuOptionsProxy=&Proxy Settings...
en_MenuHelp=&?
en_MenuHelpAbout=&About Project BBrowser
en_LabelAddress=Address:
en_ButtonGo=Go
en_StateBuild=Building page...
en_StateReady=Ready
en_StateGetting=Getting data from
en_StateProcessing=Processing request...
en_StateErr404=URL not found
en_StateRequested=Sent request to
en_StateConnect=Connecting to
en_StateErrConnect=Could not connect
Ja, ne...

Zum virtuellen Staat Eranien:
http://www.eranien.de
Zu meinem Blog:
http://www.erixpage.de

BlitzChecker

BeitragDo, Jan 12, 2006 21:03
Antworten mit Zitat
Benutzer-Profile anzeigen
sollten wir nicht erstmal <h1> und images und so machen?
www.xairro.com

Goodjee

BeitragFr, Jan 13, 2006 17:12
Antworten mit Zitat
Benutzer-Profile anzeigen
hm, wird euer browser irgendwann auch mal dynamische websites( z.B. php-scripts) können??? Oder kann er das womöglich schon???
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/
 

Absoluter Beginner

BeitragFr, Jan 13, 2006 18:15
Antworten mit Zitat
Benutzer-Profile anzeigen
php wird serverseitig interpretiert, also muss ein browser das garnicht können
eher sowas wie java script
Error Inside!

Goodjee

BeitragSa, Jan 14, 2006 11:18
Antworten mit Zitat
Benutzer-Profile anzeigen
aso, na dann ist das j anet das problem....
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/

bear1

BeitragSa, Jan 14, 2006 14:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich möchte darauf hinweisen, dass das Projektforum unter der folgenden Adresse erreichbar ist:

http://25037.forendienst.de

Programmierer sind im Moment Jan_, BlitzChecker und bear1. Weitere Programmierer werden selbstverständlich gesucht. Kritik oder Anregungen können im Forum "Kritik" gepostet werden.
Ja, ne...

Zum virtuellen Staat Eranien:
http://www.eranien.de
Zu meinem Blog:
http://www.erixpage.de

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group