Parser Problem PB 6.00 LTS
Verfasst: 05.09.2022 15:34
Hallo Leute,
hab mal mein zusammengestellten Parser aus PB 5.71 probiert und musste feststellen das er nicht mehr Funzt!
Jemand einen Tip?
Gruss ... Velindos!
hab mal mein zusammengestellten Parser aus PB 5.71 probiert und musste feststellen das er nicht mehr Funzt!
Code: Alles auswählen
; RTF To HTML im PB 5.73 ÖÜÄ
; ====================================================================
; Darstellen einer RTF-Textes im HTML-Format
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
EnableExplicit
; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Enumeration
#Window_0
EndEnumeration
;- Gadget Constants
;
Enumeration
#Button_Kursiv
#Button_Fett
#Button_Unterstrichen
#Button_Durchgestrichen
#HTML_Gadget
#Button_HTML_Konvert
#RTF_Gadget_Notiz
#Button_SetzeText
#Button_ClearText
#AnzeigeHTML
#AnzeigePosition
EndEnumeration
;
; *****************************************************************************
Global Parser_NOTIZ$ = ""
Parser_NOTIZ$ + "{\rtf1\ansi\ansicpg1252\deff0\deflang1031\deflangfe1031{\fonttbl{\f0\fswiss\fprq2\fcharset0 Verdana;}{\f1\fswiss\fprq2\fcharset0 Segoe WP SemiLight;}}"
Parser_NOTIZ$ + "{\colortbl ;\red0\green128\blue128;\red51\green51\blue51;}"
Parser_NOTIZ$ + "{\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\pard\nowidctlpar\cf1\f0\fs20 So kennen wir den \'84Riverdale\ldblquote -Star gar nicht. \cf2\f1 (was so viel wie \'84Baumwollburg\ldblquote bedeutet)\cf1\f0\par"
Parser_NOTIZ$ + "\cf1\ul\b\i\fs28 APPNAME é à ç è ê @ € é à ç è ê Ö Ü Ä ö ü ä € "
Parser_NOTIZ$ + "}"
; *****************************************************************************
Global Ende = 0
Global Parser_Puffer$ = ""
Global Parser_RawRichText$
Global Memo_E_Notiz
Global Formatieren
Global Editorstrike
Global Editorunderl
Global Editoritalic
Global Editorfettdr
;
Procedure Formatlesen(Gadget,Position)
Protected preval.CHARFORMAT
Protected Pretyp
; EditorGadget Format Zeichen für Zeichen auslesen
SendMessage_(GadgetID(Gadget),#EM_SETSEL,Position,Position+1)
SendMessage_(GadgetID(#AnzeigePosition),#EM_REPLACESEL,#WM_PASTE," ")
SendMessage_(GadgetID(#AnzeigePosition),#EM_REPLACESEL,#WM_PASTE,Str(Formatieren))
SendMessage_(GadgetID(Memo_E_Notiz), #WM_COPY, Position, Position+1)
SetGadgetText(#AnzeigeHTML,"")
SendMessage_(GadgetID(#AnzeigeHTML), #WM_PASTE, 0, 0)
preval.CHARFORMAT
preval\cbSize=SizeOf(CHARFORMAT)
SendMessage_(GadgetID(Gadget),#EM_GETCHARFORMAT,#SCF_SELECTION,@preval)
Pretyp=preval\dwEffects
If Pretyp & #CFM_STRIKEOUT: Editorstrike=1: Else: Editorstrike=0: EndIf
If Pretyp & #CFM_UNDERLINE: Editorunderl=1: Else: Editorunderl=0: EndIf
If Pretyp & #CFM_ITALIC: Editoritalic=1: Else: Editoritalic=0: EndIf
If Pretyp & #CFM_BOLD: Editorfettdr=1: Else: Editorfettdr=0: EndIf
EndProcedure
Procedure Formatsetzen(Gadget,Neuformat)
; EditorGadget formatieren mit Berücksichtigung bestehender Formate
Protected Speicher1.l
Protected Speicher2.l
Protected Gesamtformat=0
Protected format.CHARFORMAT
Speicher1.l=0: Speicher2.l=0
SendMessage_(GadgetID(Gadget),#EM_GETSEL,@Speicher1,@Speicher2)
For Formatieren=Speicher1 To Speicher2 -1
Formatlesen(Gadget,Formatieren): Gesamtformat=0
If Neuformat=#CFM_BOLD And Editorfettdr=0: Gesamtformat=Gesamtformat|#CFM_BOLD: EndIf
If Neuformat<>#CFM_BOLD And Editorfettdr=1: Gesamtformat=Gesamtformat|#CFM_BOLD: EndIf
If Neuformat=#CFM_ITALIC And Editoritalic=0: Gesamtformat=Gesamtformat|#CFM_ITALIC: EndIf
If Neuformat<>#CFM_ITALIC And Editoritalic=1: Gesamtformat=Gesamtformat|#CFM_ITALIC: EndIf
If Neuformat=#CFM_UNDERLINE And Editorunderl=0: Gesamtformat=Gesamtformat|#CFM_UNDERLINE: EndIf
If Neuformat<>#CFM_UNDERLINE And Editorunderl=1: Gesamtformat=Gesamtformat|#CFM_UNDERLINE: EndIf
If Neuformat=#CFM_STRIKEOUT And Editorstrike=0: Gesamtformat=Gesamtformat|#CFM_STRIKEOUT: EndIf
If Neuformat<>#CFM_STRIKEOUT And Editorstrike=1: Gesamtformat=Gesamtformat|#CFM_STRIKEOUT: EndIf
format.CHARFORMAT
format\cbSize=SizeOf(CHARFORMAT)
format\dwMask=#CFM_ITALIC|#CFM_BOLD|#CFM_STRIKEOUT|#CFM_UNDERLINE
format\dwEffects=Gesamtformat
SendMessage_(GadgetID(Gadget),#EM_SETCHARFORMAT,#SCF_SELECTION,@format)
Next
SendMessage_(GadgetID(Gadget),#EM_SETSEL,Speicher1,Speicher2)
EndProcedure
Procedure SetzeVorlageText6()
SendMessage_(GadgetID(Memo_E_Notiz),#EM_REPLACESEL,#WM_PASTE,Parser_NOTIZ$)
EndProcedure
; -------------------------------
Procedure PARSING_Konvert_Memo_HTML(VonGadget,ZumGadget)
; -------------------------------------
Protected HTML$ =""
Protected Ergebnis
Protected Linienschaltung$
Protected Linienschaltunglaenge
Protected ErsatzLinienschaltung$
Protected Speicher1.l=0
Protected Speicher2.l=0
Protected Textfeld$
Protected Textfeldlange
Protected Formatieren
Protected Aktuellzeichen$
Protected HtmlFettdr = 0
Protected HtmlKursiv = 0
Protected HtmlUnters = 0
Protected HtmlStrike = 0
Protected Html_LF = 0
; -------------------------------------
Ergebnis = CountGadgetItems(VonGadget)
Debug "Zeilenanzahl = " +Str(Ergebnis)
; -------------------------------------
Linienschaltung$ = "-------------------------------------------------------------------------------------------------------------------------------"
Linienschaltunglaenge= Len(Linienschaltung$)
ErsatzLinienschaltung$ = "<HR>"
; -------------------------------------
HTML$ + "<HTML>"
HTML$ + "<HEAD>"
; HTML$ + "<TITLE>" + GetGadgetText(Memo_S_Stichwort) + "</TITLE>"
; HTML$ + "<link href='Data:image/x-icon;base64,"+Base64_Encode_FotoIcon(#Parser_FavIcon)+" 'rel='icon' type='image/x-icon' />"
HTML$ + "</HEAD>"
HTML$ + "<meta charset=\'UTF-8\'>"
HTML$ + "<BODY>"
; -------------------------------------
Speicher1.l=0: Speicher2.l=0
; -------------------------------------
Textfeld$=GetGadgetText(VonGadget)
Textfeldlange=Len(GetGadgetText(VonGadget))
; -------------------------------------
;:Formatieren=Formatieren+1
Textfeld$ = ReplaceString(GetGadgetText(VonGadget),Linienschaltung$,ErsatzLinienschaltung$)
; -------------------------------------
SendMessage_(GadgetID(VonGadget), #EM_SETSEL, 0, Len(GetGadgetText(VonGadget)))
SendMessage_(GadgetID(VonGadget),#EM_GETSEL,@Speicher1,@Speicher2)
; -------------------------------------
HtmlFettdr = 0: HtmlKursiv = 0: HtmlUnters = 0: HtmlStrike = 0: Html_LF = 0
; -------------------------------------
For Formatieren = Speicher1 To Textfeldlange + 1
Aktuellzeichen$ = Mid(Textfeld$, Formatieren + 1 , 1)
If Aktuellzeichen$ = #LF$ Or Aktuellzeichen$=" "
HTML$ + " "
ElseIf Aktuellzeichen$ = #LFCR$
HTML$ + "<BR>"
Formatieren = Formatieren+1
Else
If Aktuellzeichen$ = #FF$ Or Aktuellzeichen$ = #CR$
Debug "sonderzeichen"
If Aktuellzeichen$ = #FF$
HTML$ + "<HR>"
Formatieren = Formatieren +1
Else
HTML$ + "<BR>"
EndIf
Else
; -------------------------------------
Formatlesen(VonGadget,Formatieren)
; -------------------------------------
Debug "zeichen"
If Editorfettdr=0 And HtmlFettdr=1: HTML$ + "</B>": HtmlFettdr=0: EndIf
If Editoritalic=0 And HtmlKursiv=1: HTML$ + "</I>": HtmlKursiv=0: EndIf
If Editorunderl=0 And HtmlUnters=1: HTML$ + "</U>": HtmlUnters=0: EndIf
If Editorstrike=0 And HtmlStrike=1: HTML$ + "</S>": HtmlStrike=0: EndIf
;Beginmodus
If Editorfettdr=1 And HtmlFettdr=0: HTML$ + "<B>": HtmlFettdr=1: EndIf
If Editoritalic=1 And HtmlKursiv=0: HTML$ + "<I>": HtmlKursiv=1: EndIf
If Editorunderl=1 And HtmlUnters=0: HTML$ + "<U>": HtmlUnters=1: EndIf
If Editorstrike=1 And HtmlStrike=0: HTML$ + "<S>": HtmlStrike=1: EndIf
; -------------------------------------
HTML$ + Aktuellzeichen$:
; -------------------------------------
EndIf
EndIf
Next
If HtmlFettdr=1: HTML$ + "</B>": EndIf
If HtmlKursiv=1: HTML$ + "</I>": EndIf
If HtmlUnters=1: HTML$ + "</U>": EndIf
If HtmlStrike=1: HTML$ + "</S>": EndIf
HTML$ + "</BODY></HTML>"
SetGadgetItemText(ZumGadget, #PB_Web_HtmlCode, HTML$)
SetClipboardText(HTML$)
EndProcedure
; -------------------------------
Procedure Richtext_From_Callback(dwCookie, pbBuff, cb, pcb)
If cb
;{ Liest einen String von der angegebenen Speicheradresse.
Parser_RawRichText$ + PeekS(pbBuff, cb ,#PB_Ascii)
; Parser_RawRichText$ + PeekS(pbBuff, cb ,#PB_Unicode)
; Parser_RawRichText$ + PeekS(pbBuff, cb,#PB_UTF16 )
;}
EndIf
pcb = cb
EndProcedure
Procedure.s GetGadget_TXToAscii(gad)
Parser_RawRichText$=""
Protected str.EDITSTREAM\dwCookie=0
str\dwError=0
str\pfnCallback = @Richtext_From_Callback()
SendMessage_(GadgetID(gad),#EM_STREAMOUT,#SF_TEXT,@str)
ProcedureReturn Parser_RawRichText$
EndProcedure
; -------------------------------
Procedure Open_Window_0()
If OpenWindow(#Window_0, 683, 1, 670, 731, "Konvert RTF to HTML", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
If CreateGadgetList(WindowID(#Window_0))
ButtonGadget(#Button_Kursiv, 80, 10, 70, 30, "Kursiv")
ButtonGadget(#Button_Fett, 10, 10, 70, 30, "Fett")
ButtonGadget(#Button_Unterstrichen, 150, 10, 100, 30, "Unterstreichen")
ButtonGadget(#Button_Durchgestrichen, 250, 10, 100, 30, "Durchstreichen")
ButtonGadget(#Button_SetzeText, 570, 10, 100, 30, "Setze Text")
ButtonGadget(#Button_ClearText, 470, 10, 100, 30, "Clear Text")
Memo_E_Notiz = EditorGadget(#PB_Any, 10, 40, 650, 320)
WebGadget(#HTML_Gadget, 10, 400, 650, 320, "")
ButtonGadget(#Button_HTML_Konvert, 10, 370, 130, 20, "HTML Exportieren")
StringGadget(#AnzeigeHTML,140, 370, 130, 20, "HTML Exportieren")
StringGadget(#AnzeigePosition,340, 370, 130, 20, "HTML #AnzeigePosition")
EndIf
EndIf
EndProcedure
;
Open_Window_0()
; URLs werden automatisch als Links dargestellt
SetGadgetText(Memo_E_Notiz,Parser_NOTIZ$)
;SendMessage_(GadgetID(Memo_E_Notiz),#EM_AUTOURLDETECT,#True,0)
; Zeilenumbruch wird gesetzt
SendMessage_(GadgetID(Memo_E_Notiz), #EM_SETTARGETDEVICE, #Null, 0)
; SetGadgetFont
SetGadgetFont(Memo_E_Notiz,LoadFont(#RTF_Gadget_Notiz,"Tahoma",10))
;SendMessage_(GadgetID(#String_0), #EM_SETSEL, 2, 2)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Ende = 1
Case #PB_Event_Gadget
Select EventGadget()
Case #Button_SetzeText
SetzeVorlageText6()
Case #Button_ClearText
SendMessage_(GadgetID(Memo_E_Notiz) , #EM_STREAMOUT , #SF_RTF , 0)
Case #Button_Fett: Formatsetzen(Memo_E_Notiz,#CFM_BOLD)
Case #Button_Kursiv: Formatsetzen(Memo_E_Notiz,#CFM_ITALIC)
Case #Button_Unterstrichen: Formatsetzen(Memo_E_Notiz,#CFM_UNDERLINE)
Case #Button_Durchgestrichen: Formatsetzen(Memo_E_Notiz,#CFM_STRIKEOUT)
Case #Button_HTML_Konvert
PARSING_Konvert_Memo_HTML(Memo_E_Notiz,#HTML_Gadget)
; Parser_Puffer$ = GetGadget_TXToAscii(Memo_E_Notiz)
; SetGadgetItemText(#HTML_Gadget, #PB_Web_HtmlCode, Parser_Puffer$)
EndSelect
EndSelect
Until Ende=1
Gruss ... Velindos!