Español
Foro

¿Es Unikode?

 

Nico
Madysa
¡Hola Gemeinde!

Lo dreht son folgenden Kode:
KompilierenMarcaSeparación
 {$iq}

{MkStr$

    nproc MkStr$

        parameters s$,n&
        var ns$=""

        whileLoop n&

            ns$=ns$+s$

        wend

        return ns$

    endproc

    {TToUTF

        nproc TToUTF

            parameters text$
            var utf$ = MkStr$(" ",2 * len(text$))
            MultiByteToWideChar(0,1,text$,-1,utf$,len(text$))
            return utf$

        endproc

        {ControlW

            nproc ControlW

                parameters Class$,Name$,style&,x&,y&,dx&,dy&,pWnd&,pid&,hInst&,exstyle&
                var cs& = Dim(40)
                Long cs&, 0 = 40
                Long cs&, 4 = hInst&
                Long cs&, 8 = pid&
                Long cs&,12 = pWnd&
                Long cs&,16 = dx& * 65536 + dy&
                Long cs&,20 = x& * 65536 + y&
                Long cs&,24 = style&
                Long cs&,28 = Addr(Name$)
                Long cs&,32 = Addr(Class$)
                Long cs&,36 = exstyle&
                var handle& = CreateWindowExW(exstyle&,Class$,Name$,style&,x&,y&,dx&,dy&,pWnd&,pid&,hInst&,cs&)
                Dispose(cs&)
                return handle&

            endproc

            cls
            Shell "CHARMAP"
            var Font& = Create("Font","Times New Roman",32,0,0,0,0)
            var a& = Control(        "EDIT" ,"TzTz",1342242944,200, 5,200,35,%hWnd,1,%hInstance,$200)
            var a& = Create("Edit",%hWnd,"ABCDEFGHI",200,5,200,35)
            print WinError$(%WinError)
            SetFont a&,Font&
            var w& = ControlW(TToUTF("EDIT"),"ABCDEFGHI",1342242944,200,40,200,35,%hWnd,1,%hInstance,$200)
            print WinError$(%WinError)
            SetFont w&,Font&

            whilenot IsKey(27)

                waitinput

            wend

            DeleteObject Font&
         
class=s4 href='./../../funktionsreferenzen/XProfan/end/'>end

(benötigt XPSE!)

Vereinfacht dijo macht el kleine nichts como una Editar una vez por Crear y una vez con CreateWindowExW a redactar. Erwartungsgemäß debería el obere Editar por lo tanto sólo Ansizeichen drucken puede y el untere así bastante alles Vorstellbare.

Der erste Schein son me Recht -- "ABCDEFGHI" se oben normal ausgegeben, unten voluntad hingegen je zwei Byte a una Signo zusammengefasst -- Unikode sólo.

Der Clou es: Beide Edits puede jede Art de Signo darstellen; z.B. auch el Integralzeichen, el typografischen Anführungszeichen, el lächelnde Gesicht, el zwei Achtelnoten, greichische Buchstaben, qué el Herz begehrt.

Das Roland heimlich en Unikodecontrols umgestiegen es, kann Yo nich así bastante vorstellen. Liegt lo por lo tanto a eventuell seltsamen Windowseinstellungen? Was kommt en euch fuera?

Das Programa debería igual todavía el Zeichentabelle abierto. Kopiert simplemente unos pocos exotische Signo (Russisch, Hebräisch, qué De todos modos) y guckt, si beide Editfelder ellos annehmen.

Yo wäre para Tests muy dankbar.

Saludo,

Nico
 
Nico Madysa
21.12.2009  
 



Función UTFToT fehlt. oO
 
22.12.2009  
 




Dieter
Zornow
Sollte uno una Code no sólo veces incluso en Lauffähigkeit testen, bevor uno ihn hier reinstellt ?
 
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2
22.12.2009  
 




Nico
Madysa
Alle Zeilen, el m$ enthalten, puede auskommentiert voluntad, como lo en esta Variable sí nada va.

Habs oben korrigiert. Yo tippe mi Kodes grundsätzlich sólo en el Editor Comunidad y verändere ellos hay auch öfters todavía rápidamente.
 
Nico Madysa
23.12.2009  
 



Funktioniert!



Das el/el Ctrl(s) intern Wide trabajo, wundert mich no - legen sí el Messages el Meiste breits fest o. welcher Stringtyp a verarbeiten es.

19 kB
Hochgeladen:23.12.2009
Ladeanzahl57
Descargar
 
23.12.2009  
 




Nico
Madysa
Hehe, Å es kein Unikodezeichen.

Aber Yo sehe ya, dass no mein Fehler es.
Was me problematisch es: Rolands Cuerdas son meines Wissens normale Einbyteprozeichen-Stirngs. Was sería entonces passieren, si yo en un con Crear() erzeugten Editar, sagen wir, el Integralzeichen escribir y el Sache entonces con GetText$() auslese? Yo denke, Yo voluntad viel Spaß al Experimentieren haben, sowie Yo para Programmieren komme.
 
Nico Madysa
23.12.2009  
 




Dieter
Zornow
En me funktioniert lo ebenfalls y beide Edits puede auch exotische Signo darstellen.
 
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2
23.12.2009  
 



Nico Madysa, Beitrag=55555, Zeitpunkt=23.12.2009
Rolands Cuerdas son meines Wissens normale Einbyteprozeichen-Stirngs.


Rolands (Delphi) Cuerdas son el Ergebnis de z.B. GlobalAlloc(gPTR,8+charCount+1+x)+8, Usted hast a Punto -8 una Referenzzähler y a Punto -4 el número el Byte. +1 para x00 y +x para aufrunden en 4 teilbaren Speicher en 32-Bit-Apps o. 8 en 64 o. je después de Registerbreite. Exactamente así Yo el nativen Cuerdas auch programmiert y bin como frei en el Gestaltung.

Nico Madysa, Beitrag=55555, Zeitpunkt=23.12.2009
Was sería entonces passieren, si yo en un con Crear() erzeugten Editar, sagen wir, el Integralzeichen escribir y el Sache entonces con GetText$() auslese?


Su "String" es sólo una Zona fester grösse, entweder se abgeschnitten oder erzeugst una Bereichsüberschreitung. Wenn uno Unicode sicher de Ansi unterscheiden kann, entonces podría uno determinado auch ne Automatik einbauen - para esta automatischen Características dieser String entonces pero no mehr binärsicher wäre. ^ ^
 
23.12.2009  
 




Nico
Madysa

KompilierenMarcaSeparación
 {$iq}

{MkStr$

    nproc MkStr$

        parameters s$,n&
        var ns$=""

        whileLoop n&

            ns$=ns$+s$

        wend

        return ns$

    endproc

    {TToUTF

        nproc TToUTF

            parameters text$
            var utf$ = MkStr$(" ",2 * len(text$))
            MultiByteToWideChar(0,1,text$,-1,utf$,len(text$))
            return utf$

        endproc

        {UTFToT

            nproc UTFToT

                parameters utf$
                var text$ = MkStr$(" ",len(utf$))
                WideCharToMultiByte(0,0,utf$,-1,text$,len(utf$) / 2,0,0)
                return text$

            endproc

            {SetTextW

                nproc SetTextW

                    parameters h&,text$
                    return SendMessageW(h&,WM_SETTEXT,0,text$)

                endproc

                {GetTextW

                    nproc GetTextW

                        parameters h&
                        var text$ = MkStr$(" ",255)
                        SendMessageW(h&,WM_GETTEXT,255,text$)
                        return text$

                    endproc

                    {ControlW

                        nproc ControlW

                            parameters Class$,Name$,style&,x&,y&,dx&,dy&,pWnd&,pid&,hInst&,exstyle&
                            var cs& = Dim(40)
                            Long cs&, 0 = 40
                            Long cs&, 4 = hInst&
                            Long cs&, 8 = pid&
                            Long cs&,12 = pWnd&
                            Long cs&,16 = dx& << 16 + dy&
                            Long cs&,20 = x& << 16 + y&
                            Long cs&,24 = style&
                            Long cs&,28 = Addr(Name$)
                            Long cs&,32 = Addr(Class$)
                            Long cs&,36 = exstyle&
                            var handle& = CreateWindowExW(exstyle&,Class$,Name$,style&,x&,y&,dx&,dy&,pWnd&,pid&,hInst&,cs&)
                            Dispose(cs&)
                            return handle&

                        endproc

                        cls
                        Shell "CHARMAP"
                        var Font& = Create("Font","Times New Roman",32,0,0,0,0)
                        var a& = Create("Edit",%hWnd,"ABCDEFGHI",180,5,220,35)
                        print WinError$(%WinError)
                        SetFont a&,Font&
                        var b& = Create("Edit",%hWnd,"",180,40,220,35)
                        print WinError$(%WinError)
                        SetFont b&,Font&
                        var v& = ControlW(TToUTF("EDIT"),"ABCDEFGHI",1342242944,400,5,200,35,%hWnd,1,%hInstance,$200)
                        print WinError$(%WinError)
                        SetFont v&,Font&
                        var w& = ControlW(TToUTF("EDIT"),"ABCDEFGHI",1342242944,400,40,200,35,%hWnd,1,%hInstance,$200)
                        print WinError$(%WinError)
                        SetFont w&,Font&

                        whilenot IsKey(27)

                            waitinput
                            SetText b&,GetText$(a&)
                            SetText w&,GetText$(v&)
                            SetTextW(b&,GetTextW(a&))
                            SetTextW(w&,GetTextW(v&))

                        wend

                        Dele
ct Font& end

Potztausend, el Edits reagieren wirklich aufs Haar igual. Der einzige Diferencia liegt en él, Yo el Texto auslese. Benutze Yo el API SendMessageA (also el herkömmliche xprofane Settext/GetText$), Luego se el Unikode gehäckselt. Nehme Yo dagegen SendMessageW, Luego se en beiden Edits alles correcto übertragen.


20 kB
Hochgeladen:23.12.2009
Ladeanzahl53
Descargar
 
Nico Madysa
23.12.2009  
 



Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

2.249 Views

Untitledvor 0 min.
Georg Teles29.06.2015
Christian Hahn28.12.2012

Themeninformationen

Dieses Thema ha 3 subscriber:

Nico Madysa (4x)
iF (3x)
Dieter Zornow (2x)


Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie