PB 5.73 Richtext to Web => TXT Problem

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Velindos
Beiträge: 598
Registriert: 15.11.2010 10:56

Re: PB 5.73 Richtext to Web => TXT Problem

Beitrag von Velindos »

Hallo!

Die Sache läuft ja, aber beim Duplizieren hängt es ein \par Zeilenumbruch ran,
weiss jemand warum???

Code: Alles auswählen

;- © API_571_x64_PARSERMODE_012
;  ► Editor_Set_Raw_Richtext_Ascii umbenannt!
;  ► 
;  ► 
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
EnableExplicit
;  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Enumeration
  #Edt_Win
  #Txt_Rich
  #Txt_Lese
  #Txt_Html
  #Btn_RTF
  #Btn_RTF2
  #Btn_WORK_MEMO
  #Btn_DATA
  #Clear_Work
  #Btn_MEMO_WORK
  #Clear_Memo
  #Clear_Web
  #Btn_MEMO_HTML
  #Btn_WORK_HTML
EndEnumeration
;  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Global Editor_Zoom_Numerator
Global Editor_Zoom_Denominator
; --------------------------
Global Work_E_Notiz
Global Memo_E_Notiz
Global iPage_Web
;  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Global KleineLinie$ ="---------------------------------------------"
Global GrosseLinie$ = "------------------------------------------------------------------------------------------"
;  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Global KleineDoppelteLinie$ = "======================="
Global GrosseDoppelteLinie$ = "============================================="
;  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Global HTMLLine$ =   "<hr>"
Global HTMLLine2$ =  "<HR COLOR=#FF00FF SIZE=2>"
;  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Global Parser_NOTIZ$ = ""
Global NOTIZ$ = ""
Global Parser_RawRichText$
Global HTML.s = ""
; *****************************************************************************
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 Parser_NOTIZ2$ = ""
; *****************************************************************************
; Global Parser_NOTIZ2$ = "{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fswiss\fprq2\fcharset0 Verdana;}{\f1\fswiss\fprq2\fcharset0 Segoe WP SemiLight;}{\f2\fnil\fcharset0 MS Shell Dlg;}} {\colortbl ;\red0\green128\blue128;\red51\green51\blue51;} \viewkind4\uc1\pard\nowidctlpar\cf1\f0\fs20 So kennen wir den \ldblquote Riverdale\ldblquote -Star gar nicht. \cf2\f1 (was so viel wie \ldblquote Baumwollburg\ldblquote bedeutet)\cf1\f0\par \pard\ul\b\i\fs28 APPNAME \'e9 \'e0 \'e7 \'e8 \'ea @ \'80 \'e9 \'e0 \'e7 \'e8 \'ea \'d6 \'dc \'c4 \'f6 \'fc \'e4 \'80 \cf0\ulnone\b0\i0\f2\fs17\par } "
;  Global Parser_NOTIZ2$ = "{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fswiss\fprq2\fcharset0 Verdana"+Chr(59)+"}{\f1\fswiss\fprq2\fcharset0 Segoe WP SemiLight"+Chr(59)+"}{\f2\fnil\fcharset0 MS Shell Dlg"+Chr(59)+"}} {\colortbl "+Chr(59)+"\red0\green128\blue128"+Chr(59)+"\red51\green51\blue51"+Chr(59)+"} \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)\par -------------------------------------------------------------------\cf1\f0\par \pard\ul\b\i\fs28 APPNAME \'e9 \'e0 \'e7 \'e8 \'ea @ \'80 \'e9 \'e0 \'e7 \'e8 \'ea \'d6 \'dc \'c4 \'f6 \'fc \'e4 \'80 \cf0\ulnone\b0\i0\f2\fs17\par } "
;Global Parser_NOTIZ2$ = "{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fswiss\fprq2\fcharset0 Verdana"+Chr(59)+"}{\f1\fswiss\fprq2\fcharset0 Segoe WP SemiLight"+Chr(59)+"}{\f2\fnil\fcharset0 Swis721 Ex BT"+Chr(59)+"}{\f3\fnil\fcharset0 Calibri"+Chr(59)+"}{\f4\fnil\fcharset0 MS Shell Dlg"+Chr(59)+"}} {\colortbl "+Chr(59)+"\red0\green128\blue128"+Chr(59)+"\red51\green51\blue51"+Chr(59)+"} \viewkind4\uc1\pard\nowidctlpar\f0\fs24 \cf1\fs20 So kennen wir den \'84Riverdale\ldblquote -Star gar nicht. \cf2\f1 (was so viel wie \'84Baumwollburg\ldblquote bedeutet)\par -------------------------------------------------------------------\cf1\f0\par \pard\sa200\sl276\slmult1\f2\fs28 APPNAME \f0\'e9 \'e0 \'e7 \'e8 \ul\b\i\'ea @ \'80 \'e9 \'e0 \'e7 \'e8 \'ea \'d6 \'dc \'c4 \'f6 \'fc \'e4 \'80 \cf0\lang7\ulnone\b0\i0\f3\fs22\par \pard\lang1031\f4\fs17\par \par \pard\cf0\fs17\par}"
; *****************************************************************************
Parser_NOTIZ2$ + "{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fswiss\fprq2\fcharset0 Verdana;}{\f1\fswiss\fprq2\fcharset0 Segoe WP SemiLight;}{\f2\fnil\fcharset0 MS Shell Dlg;}}"
Parser_NOTIZ2$ + "{\colortbl ;\red0\green128\blue128;\red51\green51\blue51;}"
Parser_NOTIZ2$ + "{\*\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)\par"
Parser_NOTIZ2$ + "-------------------------------------------------------------------\cf1\f0\par"
Parser_NOTIZ2$ + "\pard\ul\b\i\fs28 APPNAME \'e9 \'e0 \'e7 \'e8 \'ea @ \'80 \'e9 \'e0 \'e7 \'e8 \'ea \'d6 \'dc \'c4 \'f6 \'fc \'e4 \'80\cf0\ulnone\b0\i0\f2\fs17\par"
Parser_NOTIZ2$ + "}"
; *****************************************************************************
;{  [STRUCT] CALLBACK_COOKIE 
Structure _CALLBACK_COOKIE_
  *Buffer
  Pos.l
EndStructure
;}
; ================================
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;-- [RTF] Editor
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Procedure Editor_Get_Raw_ASCII_Callback(*dwCookie._CALLBACK_COOKIE_, *pbBuff, cb, *pcb.LONG)
  ; über Struct
  If *dwCookie\Pos + cb > MemorySize(*dwCookie\Buffer)
    *dwCookie\Buffer = ReAllocateMemory(*dwCookie\Buffer, *dwCookie\Pos + cb + SizeOf(CHARACTER))
  EndIf
  CopyMemory(*pbBuff, *dwCookie\Buffer + *dwCookie\Pos, cb)
  *dwCookie\Pos + cb
  *pcb\l = cb
  ProcedureReturn 0
EndProcedure
Procedure.s Editor_Get_Raw_Richtext_Ascii(Gadget)
  ; -----------------------------------------------------
  Protected stream.EDITSTREAM, CC._CALLBACK_COOKIE_, Result.s
  ; -----------------------------------------------------
  ; über Struct
  CC\Buffer = AllocateMemory(2048)
  ; -----------------------------------------------------
  CC\Pos    = 0
  ; -----------------------------------------------------
  stream\pfnCallback = @Editor_Get_Raw_ASCII_Callback()
  ; -----------------------------------------------------
  stream\dwCookie    = @CC
  ; -----------------------------------------------------
  SendMessage_(GadgetID(Gadget), #EM_STREAMOUT, #SF_RTF | #SFF_PLAINRTF, @stream)
  ; -----------------------------------------------------
  ; Das geht mit leerraum
  ; -----------------------------------------------------
  ; 5.71 Ascii oder Unicode nicht gleich zwischen den Ständen
   ;  Result = PeekS(CC\Buffer, MemorySize(CC\Buffer) , #PB_Ascii)
Result = PeekS(CC\Buffer, MemorySize(CC\Buffer), #PB_UTF8)
  ; -----------------------------------------------------
  ; 5.73 Ascii oder Unicode nicht gleich zwischen den Ständen
  ; Result = PeekS(CC\Buffer, MemorySize(CC\Buffer), #PB_Unicode)
  ; -----------------------------------------------------
  FreeMemory(CC\Buffer)
  ; -----------------------------------------------------
  ProcedureReturn Result
  ; -----------------------------------------------------
EndProcedure
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Editor_Set_Raw_Richtext_Ascii by mk-soft, v1.05, 27.03.2018
Procedure Editor_Set_Raw_Richtext_Ascii(Gadget, Text.s , NewLine=#False)
  ; -------------------------------
  Protected pattern.s
  Protected replacement.s
  Protected regex
  ; -------------------------------
  Debug "=>" + Text
  ; -------------------------------
  SetGadgetText(Gadget,"")
  ; -------------------------------
  If Left(Text, 5) <> "{\rtf"
    Text = "{\rtf " + Text + "}"
  EndIf
  ; -------------------------------
  If NewLine
    Text = Left(Text, Len(text) - 1) + "\line}"
  EndIf
  ; -------------------------------
  CompilerIf #PB_Compiler_Unicode
    ; -------------------------------
    Protected hEdit = GadgetID(Gadget)
    Protected ndx = GetWindowTextLength_(hEdit)
    ; -------------------------------
    ; pattern.s = "\\ldblquote\s*"
    ; replacement.s = " " + Chr(34)
    ; -------------------------------
    pattern.s = "\par\par"
    replacement.s = "\par"
    ; -------------------------------
    regex = CreateRegularExpression(#PB_Any, pattern)
    ; -------------------------------
    If regex
      Text = ReplaceRegularExpression(regex, Text, replacement)
      FreeRegularExpression(regex)
    EndIf
    Debug "Text= "+Text    
    ; -------------------------------
  Protected *szBuffer = UTF8(Text)
      ;     Protected *szBuffer = Ascii(Text)
    ; -------------------------------
    SendMessage_(hEdit, #EM_SETSEL, ndx, ndx)
    SendMessage_(hEdit, #EM_REPLACESEL, 0, *szBuffer)
    FreeMemory(*szBuffer)
    ; -------------------------------
  CompilerElse
    ; -------------------------------
    AddGadgetItem(Gadget, -1 , Text)
    ; -------------------------------
  CompilerEndIf
  ; -------------------------------
EndProcedure
;}
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;-- Windows
OpenWindow(#Edt_Win,0,0,300,625,"API_571_x64_PARSERMODE_013 Richtext to Web => TXT Problem",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
CreateGadgetList(WindowID(#Edt_Win))
ButtonGadget(#Btn_DATA,280,5,20,20,"#")

ButtonGadget(#Btn_MEMO_WORK,5,5,90,20,"MEMO => WORK")
ButtonGadget(#Clear_Work,95,5,20,20,"C")
TextGadget(#Txt_Rich,120,7,290,20,"[RTF] Richtext herein kopieren!")
Work_E_Notiz = EditorGadget(#PB_Any,5,25,290,160,#PB_Editor_WordWrap)
ButtonGadget(#Btn_RTF,270,190,30,20,"RTF")

ButtonGadget(#Btn_WORK_MEMO,5,190,90,20,"WORK => MEMO")
ButtonGadget(#Clear_Memo,95,190,20,20,"C")
TextGadget(#Txt_Lese,120,192,290,20,"[TXT] Lesetext wird angezeigt!")
Memo_E_Notiz = EditorGadget(#PB_Any,5,210,290,160,#PB_Editor_WordWrap)

ButtonGadget(#Btn_RTF2,270,370,30,20,"RTF")

ButtonGadget(#Btn_MEMO_HTML,5,370,90,20,"MEMO => HTML")
ButtonGadget(#Btn_WORK_HTML,95,370,90,20,"WORK => HTML")

ButtonGadget(#Clear_Web,190,370,20,20,"C")
TextGadget(#Txt_Html,220,372,290,20,"[HTML]")
iPage_Web = WebGadget(#PB_Any,5,395,290,225,"")

; TextGadget(iPage_Web,5,5,300,290,145,"")
; StringGadget(iPage_Web,5,300,290,145,"")


; Editor_Set_Raw_Richtext_Ascii(Work_E_Notiz, Parser_NOTIZ$)
Editor_Set_Raw_Richtext_Ascii(Work_E_Notiz, Parser_NOTIZ2$)
;}
;-- REPEAT
Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow: End
    Case #PB_Event_Gadget
      Select EventGadget()
        Case #Btn_DATA
          ;{ "SET WORK"
          SetGadgetText(Work_E_Notiz,"")
          Editor_Set_Raw_Richtext_Ascii(Work_E_Notiz, Parser_NOTIZ2$)
          ;}
        Case #Clear_Work
          ;{ "SET MEMO"
          SetGadgetText(Work_E_Notiz,"")
          ;}
        Case #Btn_WORK_MEMO
          SendMessage_(GadgetID(Work_E_Notiz), #EM_GETZOOM, @Editor_Zoom_Numerator, @Editor_Zoom_Denominator)
          ;{ "WORK => MEMO"
          NOTIZ$ = Editor_Get_Raw_Richtext_Ascii(Work_E_Notiz)
          NOTIZ$ = ReplaceString(NOTIZ$,KleineLinie$, GrosseLinie$ )
          NOTIZ$ = ReplaceString(NOTIZ$,KleineDoppelteLinie$,GrosseDoppelteLinie$ )
          Debug "NOTIZ$ = "+NOTIZ$
          ClearGadgetItems(Memo_E_Notiz)
          Editor_Set_Raw_Richtext_Ascii(Memo_E_Notiz,NOTIZ$)
          ;}
          SendMessage_(GadgetID(Memo_E_Notiz), #EM_SETZOOM, Editor_Zoom_Numerator, Editor_Zoom_Denominator)
        Case #Clear_Memo
          SetGadgetText(Memo_E_Notiz,"")
        Case #Btn_MEMO_WORK
          SendMessage_(GadgetID(Memo_E_Notiz), #EM_GETZOOM, @Editor_Zoom_Numerator, @Editor_Zoom_Denominator)
           ;{ "MEMO => WORK"
         NOTIZ$ = Editor_Get_Raw_Richtext_Ascii(Memo_E_Notiz)
          NOTIZ$ = ReplaceString(NOTIZ$,GrosseLinie$,KleineLinie$)
          NOTIZ$ = ReplaceString(NOTIZ$,GrosseDoppelteLinie$,KleineDoppelteLinie$)
          ClearGadgetItems(Work_E_Notiz)
          Editor_Set_Raw_Richtext_Ascii(Work_E_Notiz,NOTIZ$)
          ;}
          SendMessage_(GadgetID(Work_E_Notiz), #EM_SETZOOM, Editor_Zoom_Numerator, Editor_Zoom_Denominator)
        Case #Btn_RTF
          ;{ "RTF => HTML"
          NOTIZ$ = Editor_Get_Raw_Richtext_Ascii(Work_E_Notiz)
          HTML.s = "<!DOCTYPE html><head><meta charset='utf-8'></head><body>"+NOTIZ$+"</body></html>"
          SetGadgetItemText(iPage_Web, #PB_Web_HtmlCode, HTML)
          ;}
         Case #Btn_RTF2
          ;{ "RTF => HTML"
          NOTIZ$ = Editor_Get_Raw_Richtext_Ascii(Memo_E_Notiz)
          HTML.s = "<!DOCTYPE html><head><meta charset='utf-8'></head><body>"+NOTIZ$+"</body></html>"
          SetGadgetItemText(iPage_Web, #PB_Web_HtmlCode, HTML)
          ;}
       Case #Btn_WORK_HTML
          ;{ "TXT => HTML"
          NOTIZ$ = GetGadgetText(Work_E_Notiz)
          NOTIZ$ = ReplaceString(NOTIZ$,KleineDoppelteLinie$,HTMLLine2$)
          NOTIZ$ = ReplaceString(NOTIZ$,KleineLinie$,HTMLLine$)
          Debug "=> "+#PB_Compiler_Version
          CompilerIf #PB_Compiler_Version > 571
            HTML.s = "<!DOCTYPE html><head><meta charset='utf-8'></head><body>"+NOTIZ$+"</body></html>"
          CompilerElse
            HTML.s = "<!DOCTYPE html><head></head><body>"+NOTIZ$+"</body></html>"
          CompilerEndIf
          SetGadgetItemText(iPage_Web, #PB_Web_HtmlCode, HTML)
          ;}
        Case #Btn_MEMO_HTML
          ;{ "TXT => HTML"
          NOTIZ$ = GetGadgetText(Memo_E_Notiz)
          NOTIZ$ = ReplaceString(NOTIZ$,KleineDoppelteLinie$,HTMLLine2$)
          NOTIZ$ = ReplaceString(NOTIZ$,KleineLinie$,HTMLLine$)
          Debug "=> "+#PB_Compiler_Version
          CompilerIf #PB_Compiler_Version > 571
            HTML.s = "<!DOCTYPE html><head><meta charset='utf-8'></head><body>"+NOTIZ$+"</body></html>"
          CompilerElse
            HTML.s = "<!DOCTYPE html><head></head><body>"+NOTIZ$+"</body></html>"
          CompilerEndIf
          
          SetGadgetItemText(iPage_Web, #PB_Web_HtmlCode, HTML)
          ;}
        Case #Clear_Web
          SetGadgetItemText(iPage_Web, #PB_Web_HtmlCode,"")
      EndSelect
  EndSelect
ForEver
;}
Gruss ... Velindos!
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: PB 5.73 Richtext to Web => TXT Problem

Beitrag von Kiffi »

Velindos hat geschrieben:Die Sache läuft ja, aber beim Duplizieren hängt es ein \par Zeilenumbruch ran,
weiss jemand warum???
Beim schnellen Überfliegen ist mir folgendes aufgefallen:

Code: Alles auswählen

    [...]
    pattern.s = "\par\par"
    replacement.s = "\par"
    ; -------------------------------
    regex = CreateRegularExpression(#PB_Any, pattern)
    [...]
Das wird so nicht funktionieren wird, weil das "\"-Zeichen escaped werden muss.
Hygge
Benutzeravatar
Velindos
Beiträge: 598
Registriert: 15.11.2010 10:56

Re: PB 5.73 Richtext to Web => TXT Problem

Beitrag von Velindos »

Hallo, gleich mal vom Handy getippt, Danke. Gibt es für "escaped" ein Beispiel.

Zum "/par" wäre zu erwähnen, daß dieses im ed-gadget hinzugefügt bzw. auftaucht!

Habe mich länger damit gespielt und habe keine Ahnung wo das herkommt.

Bleib doch lieber auf PB 5.71. Habe auch noch Probleme beim Mediaplayer festgestellt, anscheinend muß man die html Abfrage des Player umschreiben oder so, egal.

Gruss... Velindos!
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: PB 5.73 Richtext to Web => TXT Problem

Beitrag von ccode_new »

Zum PB 5.73 - Problem:

Setze bitte den RTF-Text z.B. so:

Code: Alles auswählen

Protected *szBuffer = AllocateMemory(2048);= UTF8(Text)
PokeS(*szBuffer, Text, #PB_Any, #PB_UTF8)

;Protected *szBuffer = Ascii(Text)
; -------------------------------
;SendMessage_(hEdit, #EM_SETSEL, ndx, ndx)
;SendMessage_(hEdit, #EM_REPLACESEL, 0, *szBuffer)
;SetGadgetText(hEdit, PeekS(*szBuffer,#PB_Any))
    
Define.SETTEXTEX st
st\codepage=1252
SendMessage_(hEdit, #EM_SETTEXTEX, @st, PeekS(*szBuffer, #PB_Any, #PB_UTF8))
Und so ähnlich muss man dann aber auch den RTF-Text auslesen:

Code: Alles auswählen

;Parser_PUFFER = GetGadgetText(iPage_Work)
          
Define.GETTEXTEX gt
gt\codepage=1252
SendMessage_(GadgetID(iPage_Work), #EM_GETTEXTEX, @gt, @Parser_PUFFER)
Anbei:
Das Ganze ist aus irgendwelchen Gründen der absolute Wahnsinn. (Ich hasse diesen Textformatierungs-/RTF-Regel vs. Win32-Api, etc - Irrsinn.)
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Benutzeravatar
Velindos
Beiträge: 598
Registriert: 15.11.2010 10:56

Re: PB 5.73 Richtext to Web => TXT Problem

Beitrag von Velindos »

Hallo ccode_new, hab die Sache integriert!
Problem, zeigt unter W7 keinen TEXT im GADGET, W10 kann ich nicht sagen!
Procedure Editor_Set_Raw_Richtext_Ascii(Gadget, Text.s , NewLine=#False)
; -------------------------------
Protected pattern.s
Protected replacement.s
Protected regex
; -------------------------------
Debug "=>" + Text
; -------------------------------
SetGadgetText(Gadget,"")
; -------------------------------
If Left(Text, 5) <> "{\rtf"
Text = "{\rtf " + Text + "}"
EndIf
; -------------------------------
If NewLine
Text = Left(Text, Len(text) - 1) + "\line}"
EndIf
; -------------------------------
CompilerIf #PB_Compiler_Unicode
; -------------------------------
Protected hEdit = GadgetID(Gadget)
Protected ndx = GetWindowTextLength_(hEdit)
; -------------------------------
;{ replacement
; -------------------------------
; pattern.s = "\\ldblquote\s*"
; replacement.s = " " + Chr(34)
; -------------------------------
pattern.s = "\\par\par\s"
replacement.s = "\par"
; -------------------------------
regex = CreateRegularExpression(#PB_Any, pattern)
; -------------------------------
If regex
Text = ReplaceRegularExpression(regex, Text, replacement)
FreeRegularExpression(regex)
EndIf
;}
; -------------------------------
Debug "Text= "+Text
; -------------------------------
;{ *szBuffer
; -------------------------------
;= UTF8(Text)
Protected *szBuffer = AllocateMemory(2048)
; PokeS(*szBuffer, Text, #PB_Any, #PB_UTF8)
PokeS(*szBuffer, Text, -1, #PB_UTF8)
; -------------------------------
; Protected *szBuffer = Ascii(Text)
; -------------------------------
;SendMessage_(hEdit, #EM_SETSEL, ndx, ndx)
;SendMessage_(hEdit, #EM_REPLACESEL, 0, *szBuffer)
; -------------------------------
; SetGadgetText(hEdit, PeekS(*szBuffer,#PB_Any))
; -------------------------------
Define.SETTEXTEX st
st\codepage=1252
SendMessage_(hEdit, #EM_SETTEXTEX, @st, PeekS(*szBuffer, #PB_Any, #PB_UTF8))
; SendMessage_(hEdit, #EM_SETTEXTEX, @st, PeekS(*szBuffer, -1, #PB_UTF8))
; -------------------------------
FreeMemory(*szBuffer)
; -------------------------------
;}
; -------------------------------
CompilerElse
; -------------------------------
AddGadgetItem(Gadget, -1 , Text)
; -------------------------------
CompilerEndIf
; -------------------------------
EndProcedure
Nun habe ich Parser integriert und der kann plötzlich die Zeichen nicht!

Code: Alles auswählen

;- © API_571_x64_PARSERMODE_015
;  ► Editor_Set_Raw_Richtext_Ascii umbenannt!
;  ► ccode_new vom 27.11.2016 .. sieht man keinen Text im Gadget???
;  ► 
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
EnableExplicit
;  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Enumeration
  #Edt_Win
  #Txt_Rich
  #Txt_Lese
  #Txt_Html
  #Btn_RTF
  #Btn_RTF2
  #Btn_WORK_MEMO
  #Btn_DATA
  #Clear_Work
  #Btn_MEMO_WORK
  #Clear_Memo
  #Clear_Web
  #Btn_MEMO_HTML
  #Btn_WORK_HTML
  #Btn_PARSEN_HTML
  #AnzeigeHTML
  #AnzeigePosition
EndEnumeration
;  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Global Editor_Zoom_Numerator
Global Editor_Zoom_Denominator
; --------------------------
Global Work_E_Notiz
Global Memo_E_Notiz
Global iPage_Web
;  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Global Ergebnis
Global HTML$ =""
Global Speicher1.l=0
Global Speicher2.l=0
Global Textfeld$
Global Textfeldlange
Global Aktuellzeichen$

Global Editorfettdr
Global Editoritalic
Global Editorunderl
Global Editorstrike
Global EditorLF

Global HtmlFettdr=0
Global HtmlKursiv=0
Global HtmlUnters=0
Global HtmlStrike=0

Global Gesamtformat
Global Ergebnis


Global Linienschaltung$
Global ErsatzLinienschaltung$
Global Formatieren
Global Linienschaltunglaenge
;  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Global KleineLinie$ ="---------------------------------------------"
Global KleineLinie$ ="------------------------------------------------------------------"

Global GrosseLinie$ = "------------------------------------------------------------------------------------------"
;  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Global KleineDoppelteLinie$ = "======================="
Global GrosseDoppelteLinie$ = "============================================="
;  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Global HTMLLine$ =   "<hr>"
Global HTMLLine2$ =  "<HR COLOR=#FF00FF SIZE=2>"
;  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Global Parser_NOTIZ$ = ""
Global NOTIZ$ = ""
Global Parser_RawRichText$
Global HTML.s = ""
; *****************************************************************************
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 Parser_NOTIZ2$ = ""
; *****************************************************************************
Parser_NOTIZ2$ + "{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil\fcharset0 Times New Roman;}{\f1\fswiss\fprq2\fcharset0 Segoe WP SemiLight;}{\f2\fswiss\fprq2\fcharset0 Verdana;}{\f3\fnil\fcharset0 Calibri;}}"
Parser_NOTIZ2$ + "{\colortbl ;\red32\green178\blue170;\red51\green51\blue51;\red0\green128\blue128;}"
Parser_NOTIZ2$ + "{\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\pard\cf1\b\i\f0\fs32 W\'e4hle dein Bild oder Foto oder gib die URL eines Bildes aus dem Internet ein. \par"
Parser_NOTIZ2$ + "\cf2\b0\i0\f1\fs20 ------------------------------------------------------------------\cf1\i\f0\fs32\par"
Parser_NOTIZ2$ + "Du kannst bei deinem Foto die Gr\'f6\'dfe \'e4ndern, du kannst es verwischen, sch\'e4rfen ...\par"
Parser_NOTIZ2$ + "\cf2\i0\f1\fs20 ------------------------------------------------------------------\cf1\i\f0\fs32\par"
Parser_NOTIZ2$ + "\cf3\b\f2\fs28 APPNAME \'e9 \'e0 \'e7 \'e8 \'ea @ \'80 \'e9 \'e0 \'e7 \'e8 \'ea \'d6 \'dc \'c4 \'f6 \'fc \'e4 \'80\ul\par"
Parser_NOTIZ2$ + "\cf2\ulnone\b0\i0\f1\fs20 =============================================\cf1\i\f0\fs32\par"
Parser_NOTIZ2$ + "\pard\sa200\sl276\slmult1\cf3\i0\f2\fs20 So kennen wir den \'84Riverdale\ldblquote -Star gar nicht. \cf2\f1 (was so viel wie \'84Baumwollburg\ldblquote bedeutet)\cf0\lang7\f3\fs22\par"
Parser_NOTIZ2$ + "}"
; *****************************************************************************
;{  [STRUCT] CALLBACK_COOKIE 
Structure _CALLBACK_COOKIE_
  *Buffer
  Pos.l
EndStructure
;}
; ================================
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;-- [RTF] Editor
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Procedure Formatlesen(Gadget,Position)
  Protected preval.CHARFORMAT
  Protected Pretyp
  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 Editor_Get_Raw_ASCII_Callback(*dwCookie._CALLBACK_COOKIE_, *pbBuff, cb, *pcb.LONG)
  ; über Struct
  If *dwCookie\Pos + cb > MemorySize(*dwCookie\Buffer)
    *dwCookie\Buffer = ReAllocateMemory(*dwCookie\Buffer, *dwCookie\Pos + cb + SizeOf(CHARACTER))
  EndIf
  CopyMemory(*pbBuff, *dwCookie\Buffer + *dwCookie\Pos, cb)
  *dwCookie\Pos + cb
  *pcb\l = cb
  ProcedureReturn 0
EndProcedure
; ================================
Procedure.s Editor_Get_Raw_Richtext_Ascii(Gadget)
  ; -----------------------------------------------------
  Protected stream.EDITSTREAM, CC._CALLBACK_COOKIE_, Result.s
  ; -----------------------------------------------------
  ; über Struct
  CC\Buffer = AllocateMemory(2048)
  ; -----------------------------------------------------
  CC\Pos    = 0
  ; -----------------------------------------------------
  stream\pfnCallback = @Editor_Get_Raw_ASCII_Callback()
  ; -----------------------------------------------------
  stream\dwCookie    = @CC
  ; -----------------------------------------------------
  SendMessage_(GadgetID(Gadget), #EM_STREAMOUT, #SF_RTF | #SFF_PLAINRTF, @stream)
  ; -----------------------------------------------------
  ; Das geht mit leerraum
  ; -----------------------------------------------------
  ; 5.71 Ascii oder Unicode nicht gleich zwischen den Ständen
  ;  Result = PeekS(CC\Buffer, MemorySize(CC\Buffer) , #PB_Ascii)
  Result = PeekS(CC\Buffer, MemorySize(CC\Buffer), #PB_UTF8)
  ; -----------------------------------------------------
  ; 5.73 Ascii oder Unicode nicht gleich zwischen den Ständen
  ; Result = PeekS(CC\Buffer, MemorySize(CC\Buffer), #PB_Unicode)
  ; -----------------------------------------------------
  FreeMemory(CC\Buffer)
  ; -----------------------------------------------------
  ProcedureReturn Result
  ; -----------------------------------------------------
EndProcedure
; ================================
Procedure Editor_Set_Raw_Richtext_Ascii(Gadget, Text.s , NewLine=#False)
  ; -------------------------------
  Protected pattern.s
  Protected replacement.s
  Protected regex
  ; -------------------------------
  Debug "=>" + Text
  ; -------------------------------
  SetGadgetText(Gadget,"")
  ; -------------------------------
  ; Richtext abfragen
  If Left(Text, 5) <> "{\rtf"
    Text = "{\rtf " + Text + "}"
  EndIf
  ; -------------------------------
  ; Text vorhanden prüfen
  If NewLine
    Text = Left(Text, Len(text) - 1) + "\line}"
  EndIf
  ; -------------------------------
  CompilerIf #PB_Compiler_Unicode
    ; -------------------------------
    Protected hEdit = GadgetID(Gadget)
    Protected ndx = GetWindowTextLength_(hEdit)
     ; -------------------------------
   ;{ replacement
    ; -------------------------------
    ; pattern.s = "\\ldblquote\s*"
    ; replacement.s = " " + Chr(34)
    ; -------------------------------
    pattern.s = "\\par\par\s"
    replacement.s = "\par"
    ; -------------------------------
    regex = CreateRegularExpression(#PB_Any, pattern)
    ; -------------------------------
    If regex
      Text = ReplaceRegularExpression(regex, Text, replacement)
      FreeRegularExpression(regex)
    EndIf
    ;}
    ; -------------------------------
    Debug "Text= "+Text    
    ; -------------------------------
    ;{ *szBuffer
    ; -------------------------------
    Protected *szBuffer = UTF8(Text)
    ; Protected *szBuffer = Ascii(Text)
    ; -------------------------------
    SendMessage_(hEdit, #EM_SETSEL, ndx, ndx)
    SendMessage_(hEdit, #EM_REPLACESEL, 0, *szBuffer)
    ; -------------------------------
    FreeMemory(*szBuffer)
    ; -------------------------------
    ;}
    ; -------------------------------
  CompilerElse
    ; -------------------------------
    AddGadgetItem(Gadget, -1 , Text)
    ; -------------------------------
  CompilerEndIf
  ; -------------------------------
EndProcedure
; ================================
;}
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;-- Windows
OpenWindow(#Edt_Win,0,0,300,625,"API_571_x64_PARSERMODE_013 Richtext to Web => TXT Problem",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
CreateGadgetList(WindowID(#Edt_Win))
ButtonGadget(#Btn_DATA,280,5,20,20,"#")

ButtonGadget(#Btn_MEMO_WORK,5,5,90,20,"MEMO => WORK")
ButtonGadget(#Clear_Work,95,5,20,20,"C")
TextGadget(#Txt_Rich,120,7,290,20,"[RTF] Richtext herein kopieren!")
Work_E_Notiz = EditorGadget(#PB_Any,5,25,290,160,#PB_Editor_WordWrap)
ButtonGadget(#Btn_RTF,270,190,30,20,"RTF")

ButtonGadget(#Btn_WORK_MEMO,5,190,90,20,"WORK => MEMO")
ButtonGadget(#Clear_Memo,95,190,20,20,"C")
TextGadget(#Txt_Lese,120,192,290,20,"[TXT] Lesetext wird angezeigt!")
Memo_E_Notiz = EditorGadget(#PB_Any,5,210,290,160,#PB_Editor_WordWrap)


ButtonGadget(#Btn_MEMO_HTML,5,370,70,20,"MEMO =>")
ButtonGadget(#Btn_WORK_HTML,75,370,70,20,"WORK =>")

ButtonGadget(#Btn_PARSEN_HTML,145,370,70,20,"PARSEN =>")

ButtonGadget(#Clear_Web,215,370,20,20,"C")
TextGadget(#Txt_Html,235,372,35,20,"[HTML]")
ButtonGadget(#Btn_RTF2,270,370,30,20,"RTF")
iPage_Web = WebGadget(#PB_Any,5,395,290,225,"")

StringGadget(#AnzeigeHTML,140, 370, 130, 20, "HTML Exportieren")
HideGadget(#AnzeigeHTML,1)
StringGadget(#AnzeigePosition,340, 370, 130, 20, "HTML #AnzeigePosition")
HideGadget(#AnzeigePosition,1)



; TextGadget(iPage_Web,5,5,300,290,145,"")
; StringGadget(iPage_Web,5,300,290,145,"")


; Editor_Set_Raw_Richtext_Ascii(Work_E_Notiz, Parser_NOTIZ$)
Editor_Set_Raw_Richtext_Ascii(Work_E_Notiz, Parser_NOTIZ2$)
;}
;-- REPEAT
Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow: End
    Case #PB_Event_Gadget
      Select EventGadget()
        Case #Btn_DATA
          ;{ "SET WORK"
          SetGadgetText(Work_E_Notiz,"")
          Editor_Set_Raw_Richtext_Ascii(Work_E_Notiz, Parser_NOTIZ2$)
          ;}
        Case #Clear_Work
          ;{ "SET MEMO"
          SetGadgetText(Work_E_Notiz,"")
          ;}
        Case #Btn_WORK_MEMO
          SendMessage_(GadgetID(Work_E_Notiz), #EM_GETZOOM, @Editor_Zoom_Numerator, @Editor_Zoom_Denominator)
          ;{ "WORK => MEMO"
          NOTIZ$ = Editor_Get_Raw_Richtext_Ascii(Work_E_Notiz)
          NOTIZ$ = ReplaceString(NOTIZ$,KleineLinie$, GrosseLinie$ )
          NOTIZ$ = ReplaceString(NOTIZ$,KleineDoppelteLinie$,GrosseDoppelteLinie$ )
          Debug "NOTIZ$ = "+NOTIZ$
          ClearGadgetItems(Memo_E_Notiz)
          Editor_Set_Raw_Richtext_Ascii(Memo_E_Notiz,NOTIZ$)
          ;}
          SendMessage_(GadgetID(Memo_E_Notiz), #EM_SETZOOM, Editor_Zoom_Numerator, Editor_Zoom_Denominator)
        Case #Clear_Memo
          SetGadgetText(Memo_E_Notiz,"")
        Case #Btn_MEMO_WORK
          SendMessage_(GadgetID(Memo_E_Notiz), #EM_GETZOOM, @Editor_Zoom_Numerator, @Editor_Zoom_Denominator)
          ;{ "MEMO => WORK"
          NOTIZ$ = Editor_Get_Raw_Richtext_Ascii(Memo_E_Notiz)
          NOTIZ$ = ReplaceString(NOTIZ$,GrosseLinie$,KleineLinie$)
          NOTIZ$ = ReplaceString(NOTIZ$,GrosseDoppelteLinie$,KleineDoppelteLinie$)
          ClearGadgetItems(Work_E_Notiz)
          Editor_Set_Raw_Richtext_Ascii(Work_E_Notiz,NOTIZ$)
          ;}
          SendMessage_(GadgetID(Work_E_Notiz), #EM_SETZOOM, Editor_Zoom_Numerator, Editor_Zoom_Denominator)
        Case #Btn_RTF
          ;{ "RTF => HTML"
          NOTIZ$ = Editor_Get_Raw_Richtext_Ascii(Work_E_Notiz)
          HTML.s = "<!DOCTYPE html><head><meta charset='utf-8'></head><body>"+NOTIZ$+"</body></html>"
          SetGadgetItemText(iPage_Web, #PB_Web_HtmlCode, HTML)
          ;}
        Case #Btn_RTF2
          ;{ "RTF => HTML"
          NOTIZ$ = Editor_Get_Raw_Richtext_Ascii(Memo_E_Notiz)
          HTML.s = "<!DOCTYPE html><head><meta charset='utf-8'></head><body>"+NOTIZ$+"</body></html>"
          SetGadgetItemText(iPage_Web, #PB_Web_HtmlCode, HTML)
          ;}
        Case #Btn_WORK_HTML
          ;{ "TXT => HTML"
          NOTIZ$ = GetGadgetText(Work_E_Notiz)
          NOTIZ$ = ReplaceString(NOTIZ$,GrosseLinie$,KleineLinie$)
          NOTIZ$ = ReplaceString(NOTIZ$,KleineLinie$,HTMLLine$)
          NOTIZ$ = ReplaceString(NOTIZ$,GrosseDoppelteLinie$,KleineDoppelteLinie$)
          NOTIZ$ = ReplaceString(NOTIZ$,KleineDoppelteLinie$,HTMLLine2$)
          Debug "=> "+#PB_Compiler_Version
          CompilerIf #PB_Compiler_Version > 571
            HTML.s = "<!DOCTYPE html><head><meta charset='utf-8'></head><body>"+NOTIZ$+"</body></html>"
          CompilerElse
            HTML.s = "<!DOCTYPE html><head></head><body>"+NOTIZ$+"</body></html>"
          CompilerEndIf
          SetGadgetItemText(iPage_Web, #PB_Web_HtmlCode, HTML)
          ;}
        Case #Btn_MEMO_HTML
          ;{ "TXT => HTML"
          NOTIZ$ = GetGadgetText(Memo_E_Notiz)
          NOTIZ$ = ReplaceString(NOTIZ$,GrosseLinie$,KleineLinie$)
          NOTIZ$ = ReplaceString(NOTIZ$,KleineLinie$,HTMLLine$)
          NOTIZ$ = ReplaceString(NOTIZ$,GrosseDoppelteLinie$,KleineDoppelteLinie$)
          NOTIZ$ = ReplaceString(NOTIZ$,KleineDoppelteLinie$,HTMLLine2$)
          Debug "=> "+#PB_Compiler_Version
          CompilerIf #PB_Compiler_Version > 571
            HTML.s = "<!DOCTYPE html><head><meta charset='utf-8'></head><body>"+NOTIZ$+"</body></html>"
          CompilerElse
            HTML.s = "<!DOCTYPE html><head></head><body>"+NOTIZ$+"</body></html>"
          CompilerEndIf
          SetGadgetItemText(iPage_Web, #PB_Web_HtmlCode, HTML)
          ;}
        Case #Clear_Web
          SetGadgetItemText(iPage_Web, #PB_Web_HtmlCode,"")
          
        Case #Btn_PARSEN_HTML
          ;{ Parser
          Ergebnis = CountGadgetItems(Memo_E_Notiz)
          Debug "Zeilenanzahl = " +Str(Ergebnis)
          HTML$ =""
          Linienschaltung$ = "-------------------------------------------------------------------------------------------------------------------------------"
          Linienschaltunglaenge= Len(Linienschaltung$)
          ErsatzLinienschaltung$ = "<HR>"
          
          HTML$ + "<HTML><HEAD><TITLE>Export aus einem EditorGadget</TITLE></HEAD><BODY>"
          Speicher1.l=0: Speicher2.l=0
          
          Textfeld$=GetGadgetText(Memo_E_Notiz)
          Textfeldlange=Len(GetGadgetText(Memo_E_Notiz))
          
          Textfeld$=ReplaceString(GetGadgetText(Memo_E_Notiz),Linienschaltung$,ErsatzLinienschaltung$);:Formatieren=Formatieren+1
          
          SendMessage_(GadgetID(Memo_E_Notiz), #EM_SETSEL, 0, Len(GetGadgetText(Memo_E_Notiz)))
          SendMessage_(GadgetID(Memo_E_Notiz),#EM_GETSEL,@Speicher1,@Speicher2)
          HtmlFettdr=0: HtmlKursiv=0: HtmlUnters=0: HtmlStrike=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(Memo_E_Notiz,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(iPage_Web, #PB_Web_HtmlCode, HTML$)
          ;}
          
          
          
          
          
          
      EndSelect
  EndSelect
ForEver
;}
Hat vielleicht jemand einen Tip?

Gruss ... Velindos!
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: PB 5.73 Richtext to Web => TXT Problem

Beitrag von ccode_new »

Hi!
Du hast die utf8-Angabe vergessen.

Code: Alles auswählen

HTML$ + "<HTML><HEAD><meta charset='utf-8'><TITLE>Export aus einem EditorGadget</TITLE></HEAD><BODY>"
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Benutzeravatar
Velindos
Beiträge: 598
Registriert: 15.11.2010 10:56

Re: PB 5.73 Richtext to Web => TXT Problem

Beitrag von Velindos »

Hallo ccode_new, Danke, nach dem Motto: Den Wald vor lauter Bäumen nicht sehen!

Habe die Sache mal nach deinen #Tip überarbeitet und Läuft!

Code: Alles auswählen

Procedure RTF_Get_Raw_ASCII_Callback(*dwCookie._CALLBACK_COOKIE_, *pbBuff, cb, *pcb.LONG)
  ; über Struct
  If *dwCookie\Pos + cb > MemorySize(*dwCookie\Buffer)
    *dwCookie\Buffer = ReAllocateMemory(*dwCookie\Buffer, *dwCookie\Pos + cb + SizeOf(CHARACTER))
  EndIf
  CopyMemory(*pbBuff, *dwCookie\Buffer + *dwCookie\Pos, cb)
  *dwCookie\Pos + cb
  *pcb\l = cb
  ProcedureReturn 0
EndProcedure
; ----------------
Procedure.s RTF_Get_Raw_Richtext_Ascii(Gadget)
  ; -----------------------------------------------------
  Protected stream.EDITSTREAM
  Shared CC._CALLBACK_COOKIE_
  Protected Result.s
  ; -----------------------------------------------------
  CC\Buffer = AllocateMemory(2048)
  CC\Pos    = 0
  ; -----------------------------------------------------
  stream\pfnCallback = @RTF_Get_Raw_ASCII_Callback()
  stream\dwCookie    = @CC
  ; -----------------------------------------------------
  SendMessage_(GadgetID(Gadget), #EM_STREAMOUT, #SF_RTF | #SFF_PLAINRTF, @stream)
  ; -----------------------------------------------------
  Result = PeekS(CC\Buffer, MemorySize(CC\Buffer), #PB_UTF8)
  ; -----------------------------------------------------
  FreeMemory(CC\Buffer)
  ProcedureReturn Result
EndProcedure
; =====================
Procedure RTF_Set_Raw_Richtext_Ascii(Gadget, Text.s , NewLine = #False)
  ; -------------------------------
  Protected txt.SETTEXTEX
  Protected hEdit
  Protected *szBuffer
  ; -------------------------------
  hEdit = GadgetID(Gadget)
  ; -------------------------------
  *szBuffer = UTF8(Text)
  PokeS(*szBuffer, Text, #PB_Any, #PB_UTF8)
  ; -------------------------------
  txt\flags = 0
  ; -------------------------------
  txt\codepage = #CP_ACP
  ;   txt\codepage = 1252 
  SendMessage_(hEdit, #EM_SETTEXTEX, @txt, *szBuffer)
  ; -------------------------------
  FreeMemory(*szBuffer)
  ; -------------------------------
EndProcedure
; =====================
Gruss ... Velindos!
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Antworten