Hurra! Hurra! Hurra! Danke! Ich bin fündig geworden. Zur Info: Der RTF-Code steckt in PeekS(pbBuff).
Hier die Erweiterung:
Code: Alles auswählen
Prototype SendMessage(hwnd,msg,wParam,lParam)
OpenLibrary(0,"User32.dll")
Global SendMessage_.SendMessage = GetFunction(0,"SendMessageA")
;PB4
; ************* Variables *************
Global a$
Fensterueberschrift$ = "Unicode-Test"
Button_1 = 20 ; Button-ID
Global FontID1
FontID1 = LoadFont(1, "Courier", 10) ; Font für die Darstellung
;RTF- Test
text$="{\rtf1\fbidis\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fmodern\fprq1\fcharset0 Courier New;}{\f1\fswiss\fprq2\fcharset0 Arial;}}"
text$=text$ + "{\colortbl ;\red0\green0\blue0;}"
text$=text$ + "\viewkind4\uc1\pard\ltrpar\cf1\f0\fs20 Unicode: \u264?\u284?\u292?\u308?\u348?\u364?\u265?\u285?\u293?\u309?\u349?\u365?\cf0\f1\par "
text$=text$ + "}"
#WM_SETTEXT = 12
#SF_RTF = 2
#EM_STREAMOUT = 1098
CompilerIf Defined(EDITSTREAM,#PB_Structure) = 0
Structure EDITSTREAM
dwCookie.l
dwError.l
pfnCallback.l
EndStructure
CompilerEndIf
; ************* Mainprogram *************
Procedure StreamOut(dwCookie,pbBuff,cb,*pcb)
SetGadgetText(dwCookie,PeekS(pbBuff))
A$ = PeekS(pbBuff)
EndProcedure
If OpenWindow(0, 1, 1, 800, 350, Fensterueberschrift$, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
SetWindowColor(0,RGB(100, 150, 100))
CreateGadgetList(WindowID(0))
EditorGadget(1, 20, 50, 650, 110) ;#PB_Editor_ReadOnly
SetGadgetFont(1, FontID1)
EditorGadget(2, 20, 160, 650, 110);#PB_Editor_ReadOnly
SetGadgetFont(2, FontID1)
ButtonGadget(Button_1, 650+25, 130, 100, 20, "Copy")
SetGadgetText(1, text$)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
Case #PB_Event_Gadget
Select EventGadget()
Case Button_1
Stream.EDITSTREAM
Stream\dwCookie = 2
Stream\pfnCallback = @StreamOut()
SendMessage_(GadgetID(1), #EM_STREAMOUT, #SF_RTF, @Stream)
A$ = ReplaceString(A$, "\u264?", "^C")
A$ = ReplaceString(A$, "\u284?", "^G")
A$ = ReplaceString(A$, "\u292?", "^H")
A$ = ReplaceString(A$, "\u308?", "^J")
A$ = ReplaceString(A$, "\u348?", "^S")
A$ = ReplaceString(A$, "\u364?", "^U")
A$ = ReplaceString(A$, "\u265?", "^c")
A$ = ReplaceString(A$, "\u285?", "^g")
A$ = ReplaceString(A$, "\u293?", "^h")
A$ = ReplaceString(A$, "\u309?", "^j")
A$ = ReplaceString(A$, "\u349?", "^s")
A$ = ReplaceString(A$, "\u365?", "^u")
;Debug A$
SetGadgetText(2, A$)
EndSelect
EndSelect
ForEver
EndIf ; Open Window
End
Letzte Frage: Kann man die folgende Abteilung wie in PHP in einem Befehl machen (ersetze Array1-Elemente durch Array2-Elemente)?
Code: Alles auswählen
A$ = ReplaceString(A$, "\u264?", "^C")
A$ = ReplaceString(A$, "\u284?", "^G")
A$ = ReplaceString(A$, "\u292?", "^H")
A$ = ReplaceString(A$, "\u308?", "^J")
A$ = ReplaceString(A$, "\u348?", "^S")
A$ = ReplaceString(A$, "\u364?", "^U")
A$ = ReplaceString(A$, "\u265?", "^c")
A$ = ReplaceString(A$, "\u285?", "^g")
A$ = ReplaceString(A$, "\u293?", "^h")
A$ = ReplaceString(A$, "\u309?", "^j")
A$ = ReplaceString(A$, "\u349?", "^s")
A$ = ReplaceString(A$, "\u365?", "^u")