Seite 3 von 3

Verfasst: 16.08.2006 22:55
von Eckhard.S
Was es wird ist ein Esperanto-Übersetzer. Jemand gibt oder kopiert einen Satz ein:

Mi ŝatas kafon
und bekommt übersetzt:
Ich mag Kaffee

aus dem ŝatas mache ich ^satas. Es ist dann Ascii und steht so im Wörterbuch.

Es gibt in Esperanto 6 Buchstaben mit Überzeichen:
ĉ ĝ ĥ ĵ ŝ ŭ die ich in allen Wörtern dann ersetze durch ^c ^g ^h ^j ^s und ^u. Mit den jeweiligen Großbuchstaben sind es also 12 Replaces.
In PHP kann man es so oder so ähnlich machen:
replace ( ĉ, ĝ, ĥ, ĵ, ŝ, ŭ ; ^c ^g ^h ^j ^s ^u)
Ein Befehl statt 6. Bei PB gibt es das wohl nicht.


Danke auch für die
http://ts-soft.eu/dl/EditorGadgetPlus.pb

Als Anfänger bin ich etwas überfordert, wenn ich nur Proceduren vor mir habe und kein kleines Demo-Programm, wo man die Einsatzweise nachvollziehen kann.

Und wenn es wie in Zeile 10 Error gibt:
Constant nor Found #LF_FACESIZE
bin ich aufgeschmissen es anzupassen.

Aber lass erst mal gut sein. War ne super Hilfe und ich kann jetzt Unicode einlesen und in Ersatzschreibweise umwandeln.

Mehr wollte ich ja nicht. Hurra! :D :D :D

Verfasst: 16.08.2006 23:01
von ts-soft
#LF_FACESIZE = $20 bzw. 32 :wink:
Der ConstantsExplorer von Gnozal könnte Dir vielleicht hilfreich sein:

http://people.freenet.de/gnozal/
http://people.freenet.de/gnozal/Constan ... rPBIDE.zip

Verfasst: 16.08.2006 23:30
von Eckhard.S
Vielen Dank!
Ein Hinweis für Nachfolger: Beim Link muss noch ein www dazu:

http://www.people.freenet.de/gnozal/


P.S. Ich habe den fertigen Code auch unter "Tipps und Tricks" abgelegt mit einem Dank an dich und Edel :allright:
http://www.purebasic.fr/german/viewtopi ... 833#105833

Verfasst: 16.08.2006 23:35
von ts-soft
Eckhard.S hat geschrieben:Vielen Dank!
Ein Hinweis für Nachfolger: Beim Link muss noch ein www dazu:

http://www.people.freenet.de/gnozal/
Bei mir gehts auch ohne www problemlos

Verfasst: 17.08.2006 06:43
von edel
ts-soft hat geschrieben:>> Zur Info: Der RTF-Code steckt in PeekS(pbBuff)
Aber nur das Teilstück, welches vom Callback gerade bearbeitet wird!
Bei diesem kurzen Text ist wohl alles enthalten, das muß aber nicht so sein.
Unbedingt beachten. Das 'SetGadgetText(dwCookie,PeekS(pbBuff))'
ist keine gute Loesung, da es staendig den Text ueberschreibt, wenn
er denn zu lang ist.

Verfasst: 23.08.2006 22:26
von Eckhard.S
Stimmt! Hier ist ein Code mit einem langen Text und nur das letzte Stück wird ausgegeben.

Mittlerweile habe ich die Vollversion :)
Wie müsste es dann richtig heißen?

Code: Alles auswählen

;PB 4.0 Final
; ************* 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\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fmodern\fprq1\fcharset0 Courier New;}}" 
text$=text$ + "{\colortbl ;\red0\green0\blue0;}" 
text$=text$ + "\viewkind4\uc1\pard\cf1\f0\fs20 Die ist ein langer Esperantotext. \par " 
text$=text$ + "\u264? \u284? \u292? \u308? \u348? \u364? \u265? \u285? \u293? \u309? \u349? \u365? werden ersetzt durch ^C ^G usw... \par "
text$=text$ + "\cf0 Text zum 1. Mal: "
story$ = "Same kiel tiom da aliaj, anka\u365? ni legis la libron \ldblquote The Da Vinci Code\rdblquote . La filmon ni ankora\u365? ne vidis, sed de kiam \u285?i estas en la kinejoj, ni \u285?ojas pri kelkaj filmrecenzoj, kiuj \u285?in volupte dis\u349?iras.\par Wir haben, wie so viele andere auch, das Buch \ldblquote The Da Vinci Code\rdblquote  gelesen. Den Film haben wir noch nicht gesehen, aber seit er in den Kinos ist, erfreuen wir uns an so mancher Filmkritik, die ihn woll\'fcstig zerfleischt.\par "
story$ = story$ + "La plej bona recenzo, kiun ni legis, venas de Johan Croneman, kaj aperis en la gazeto. Beda\u365?rinde mi kompreneble ne povas \u285?in plene redoni \u285?i tie. Nur unu alineon mi volas citi (en tradukita formo), \u265?ar \u285?i estas simple genia. \u284?i estas parodio de la tuta rakonto.\par Die beste Rezension, die wir gelesen haben, stammt von Johan Croneman und ist erschienen. Leider kann ich sie hier nat\'fcrlich nicht vollst\'e4ndig wiedergeben. Nur einen Absatz m\'f6chte ich (\'fcbersetzt) zitieren, weil er einfach genial ist. Es ist eine Parodie auf die ganze Geschichte.\par \cf1\par " 
text$=text$ + story$
text$=text$ + "\cf0 Text zum 2. Mal: ":text$=text$ + story$
text$=text$ + "\cf0 Text zum 3. Mal: ":text$=text$ + story$
text$=text$ + "\cf0 Text zum 4. Mal: ":text$=text$ + story$
text$=text$ + "\cf0 Text zum 5. Mal: ":text$=text$ + story$
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$)      
  SendMessage_(GadgetID(1),#EM_SETTARGETDEVICE, #Null, Flag)
    
  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