Français
Forum

Ist es Unikode?

 

Nico
Madysa
allô Gemeinde!

Es dreht sich um folgenden Kode:
KompilierenMarqueSéparation
 {$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

(nécessaire XPSE!)

Vereinfacht dit pouvoir qui kleine rien que un Éditer einmal per Créer et einmal avec CreateWindowExW trop erstellen. Erwartungsgemäß sollte cela obere Éditer daher seulement Ansizeichen drucken peut et cela untere so assez alles Vorstellbare.

qui erste billet gibt mir droite -- "ABCDEFGHI" wird dessus normal ausgegeben, unten volonté hingegen je deux Byte trop einem marque zusammengefasst -- Unikode arrêt.

qui Clou ist: Beide Edits peut chacun Art de marque darstellen; z.B. aussi cela Integralzeichen, qui typografischen Anführungszeichen, cela lächelnde Gesicht, qui deux Achtelnoten, greichische Buchstaben, quoi cela Herz begehrt.

cela Roland heimlich sur Unikodecontrols umgestiegen ist, peux je mir nich so droite présenter. Liegt es daher à eventuell seltsamen Windowseinstellungen? quoi venez chez euch raus?

cela Programme sollte juste encore qui Zeichentabelle ouvrir. Kopiert simple un paire exotische marque (Russisch, Hebräisch, quoi que + subj.) et guckt, si beide Editfelder vous annehmen.

je wäre pour Tests très reconnaissant.

Salut,

Nico
 
Nico Madysa
21.12.2009  
 



Funktion UTFToT fehlt. oO
 
22.12.2009  
 




Dieter
Zornow
Sollte on une Code pas seulement la fois selbst sur Lauffähigkeit testen, bevor on ihn ici 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, qui m$ enthalten, peut auskommentiert volonté, là es um cet Variable oui gar pas allez.

Tricolore dessus korrigiert. je tippe mon Kodes grundsätzlich seulement im Editor qui Community et verändere vous là aussi öfters encore vite.
 
Nico Madysa
23.12.2009  
 



Funktioniert!



cela cela/qui Ctrl(s) interne Wide travailler, wundert mich pas - poser oui qui Messages cela Meiste breits fest bzw. quel Stringtyp trop verarbeiten ist.

19 kB
Hochgeladen:23.12.2009
Downloadcounter57
Download
 
23.12.2009  
 




Nico
Madysa
Hehe, Å ist ne...aucune Unikodezeichen.

mais je vois déjà, dass es pas mon faute ist.
quoi mir problematisch ist: Rolands Cordes sommes meines Wissens normale Einbyteprozeichen-Stirngs. quoi serait ensuite passer, si je dans einem avec Créer() erzeugten Éditer, dire wir, cela Integralzeichen schreibe et qui l'affaire ensuite avec GetText$() auslese? je denke, je werde viel Amusement am Experimentieren avons, sowie je zum Programmieren viens.
 
Nico Madysa
23.12.2009  
 




Dieter
Zornow
chez mir funktioniert es également et beide Edits peut aussi exotische marque représenter.
 
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 Cordes sommes meines Wissens normale Einbyteprozeichen-Stirngs.


Rolands (Delphi) Cordes sommes cela Ergebnis de z.B. GlobalAlloc(gPTR,8+charCount+1+x)+8, tu as à Stelle -8 une Referenzzähler et à Stelle -4 le nombre qui Byte. +1 pour x00 et +x pour aufrunden sur 4 teilbaren grenier dans 32-Bit-Apps bzw. 8 dans 64 bzw. je pour Registerbreite. oui c'est ca so habe je qui nativen Cordes aussi programmiert et suis là libre dans qui Gestaltung.

Nico Madysa, Beitrag=55555, Zeitpunkt=23.12.2009
quoi serait ensuite passer, si je dans einem avec Créer() erzeugten Éditer, dire wir, cela Integralzeichen schreibe et qui l'affaire ensuite avec GetText$() auslese?


Dein "String" ist seulement un Bereich fester grösse, entweder wird abgeschnitten ou bien erzeugst une Bereichsüberschreitung. si on Unicode sûrement de Ansi unterscheiden peux, ensuite pourrait on bestimmt aussi ne Automatik einbauen - pour cet automatischen Funktionen cette String ensuite mais pas plus binärsicher wäre. ^ ^
 
23.12.2009  
 




Nico
Madysa

KompilierenMarqueSéparation
 {$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, qui Edits réagir wirklich aufs le cheveu juste. qui einzige Unterschied liegt y, comment Je l' Text auslese. Benutze je qui API SendMessageA (alors cela herkömmliche xprofane Settext/GetText$), ensuite wird qui Unikode gehäckselt. Nehme je dagegen SendMessageW, ensuite wird chez beiden Edits alles richtig übertragen.


20 kB
Hochgeladen:23.12.2009
Downloadcounter53
Download
 
Nico Madysa
23.12.2009  
 



répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

2.281 Views

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

Themeninformationen

cet Thema hat 3 participant:

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


Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie