[B+] First real BB Webbrowser
Übersicht

![]() |
Jan_Ehemaliger AdminBetreff: [B+] First real BB Webbrowser |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
||
between angels and insects |
![]() |
bear1 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() bear1 |
||
Ja, ne...
Zum virtuellen Staat Eranien: http://www.eranien.de Zu meinem Blog: http://www.erixpage.de |
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich hätt lust auf so ein projekt!
hab grad gemacht, dass die und so ersetzt werden werd gleich wohl mal style machen und so. |
||
www.xairro.com |
![]() |
bear1 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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]
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 AdminBetreff: Re: [B+] First real BB Webbrowser |
![]() Antworten mit Zitat ![]() |
---|---|---|
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). ; und © 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$, "©", Chr$(169)) ;Ersetzen Copyright-Zeichen txt$ = Replace$(txt$, " ", Chr$(9)) ;Ersetzen durch Tab ;Deutsche sonderzeichen txt$ = Replace$(txt$, "ä", "ä") txt$ = Replace$(txt$, "ü", "ü") txt$ = Replace$(txt$, "ö", "ö") txt$ = Replace$(txt$, "Ä", "Ä") txt$ = Replace$(txt$, "Ü", "Ü") txt$ = Replace$(txt$, "Ö", "Ö") 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ä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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bug behoben,
Ich nutzte immer einen Proxy, darum habe ich es nciht bemerkt ![]() |
||
between angels and insects |
![]() |
BlitzChecker |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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). ; und © 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$, "©", Chr$(169)) ;Ersetzen Copyright-Zeichen txt$ = Replace$(txt$, " ", Chr$(9)) ;Ersetzen durch Tab ;Deutsche sonderzeichen txt$ = Replace$(txt$, "ä", "ä") txt$ = Replace$(txt$, "ü", "ü") txt$ = Replace$(txt$, "ö", "ö") txt$ = Replace$(txt$, "Ä", "Ä") txt$ = Replace$(txt$, "Ü", "Ü") txt$ = Replace$(txt$, "Ö", "Ö") 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
sollten wir nicht erstmal <h1> und images und so machen? | ||
www.xairro.com |
![]() |
Goodjee |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
php wird serverseitig interpretiert, also muss ein browser das garnicht können
eher sowas wie java script |
||
Error Inside! |
![]() |
Goodjee |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group