Español
Foro

Erweiterter Zeichensatz Unicode

 

Stephan
Sonneborn
¡Hola Personas,
Yo stehe siempre todavía antes el Problema, russische Textos en Dialogelemente a bringen. El Textos mentira mittlerweile en uno DLL en russischer Lingua antes.

Yo schaffe lo pero no, esta Textos darzustellen. Lo voluntad siempre sólo Fragezeichen adecuado.

Como muss Yo el Textos en el ANSI- Zona > 1024 ansprechen? Yo komme con el WIDECHARS y WIDESTRINGS no está claro...?!?!
Zunächst muss Yo el Textos de el DLL lesen y zwar así, dass el Information, dass lo kyrilische Signo son con übertragen se. En posición hier ya siempre sólo Fragezeichen en el eingelesenen String.

Sombrero alguien una Concepto?
 
XProfan X4
Schöne Grüße aus Wittgenstein
von Stephan

Programmierumgebung:| XProfan X4 | WIN10 | AMD FX6100 3,3 GHz
06.07.2021  
 




Georg
Teles
¡Hola Stephan,

Wenn el Windows Lingua al alemán es, es normal, dass el Textos mittels imprimir como ??? herauskommen, como imprimir y SetText así no umgehen puede - más Problema es, dass esta Textos ya en el Russichen vorliegen, sodass du esta como Ressource herauslesen y luego umwandeln debería, porque ExtString$ no con WideStrings umgehen kann.

Der Grund meiner PCU  [...]  war genau dieser, dass uno el Cuerdas como lateinische en el Programa oder DLL einfügt y luego con el Función umwandelt - l2cPCU.l2l de lateinischen Cuerdas a WideStrings y l2cPCU.l2c de los lateinischen Cuerdas a kyrillischen WideStrings

Grüße
 
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

07.07.2021  
 




Stephan
Sonneborn
¡Hola Georg,

vielen Dank para Su Antwort!
So Yo lo encima Umwege auch gemacht: Ein Kollege ha con uno Inglés / russischen Tastatur el russischen Textos "blind" eingegeben y yo tener el
Kauderwelsch de lateinischen Buchstaben entonces verwendet, en ihn con el CYRILLIC - Font darzustellen. Pero muy unschön, porque uno siempre el Font mitliefern muss.
Jetzt ha una otro Kollege direkt russische Textos eingegeben. Und una otro alles otra vez "richtig" en russisch traducido.

Puedo morgen veces una abgespeckte DLL einstellen...
 
Schöne Grüße aus Wittgenstein
von Stephan

Programmierumgebung:| XProfan X4 | WIN10 | AMD FX6100 3,3 GHz
07.07.2021  
 




Georg
Teles
El Textos kann Yo dir en efecto en mi Form traducir, para el PCU si du magst

Usted puede el Texto direkt en el Programa oder en el DLL mitliefern. Como russiche Textos generell problematisch en una deutschsprachigen PC son, es meiner Meinung sinnvoller el Textos igual en lateinischen Buchstaben abzuspeichern (ansi) porque el meisten Textfunktionen sowieso sólo Ansi qué anfangen puede ... esta entonces en WideStrings umwandeln ind ausgeben, entonces hast du el Sicherheit, dass en cada PC el Gleiche adecuado se.
 
XProfan X2
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

07.07.2021  
 




Stephan
Sonneborn
Yo hier veces una Testprogramm y una Mini-DLL con drei Texten drin:
DECLARE DLL$, DLL&, FONT&, HText&[3], HTextW&[3]
DECLARE Texto$[3], TextW$[3]
DECLARE Buffer#, count&, Adresse%,i%
DECLARE id%
DEF LoadStringW(4)      !"USER32", "LoadStringW"
DEF IsMEnu(1)           !"USER32", "IsMenu"
DEF CreateWindowExW(12) !"USER32", "CreateWindowExW"
DEF SetWindowTextW(2)   !"USER32", "SetWindowTextW"
DIM Buffer#,4097
STRUCT CREATESTRUCT = lpCreateParams&, hInstance&, hMenu&, hwndParent&, cy%, cx%, y%, x%, style&, lpszName&, lpszClass&, dwExStyle&
'*****************************************************************************************************************'
'* ORDW, CHRW, UTF, CREATEW
'*****************************************************************************************************************'

proc ordw

    parámetros s$
    declarar m#
    dim m#,2
    char m#,0=left$(s$+"\z\z",2)
    var wc&=word(m#,0)
    disponer m#
    volver wc&

ENDPROC

'*****************************************************************************************************************'

proc chrw

    parámetros wc&
    declarar m#
    dim m#,2
    word m#,0=wc&
    var s$=char$(m#,0,2)
    disponer m#
    volver s$

ENDPROC

'*****************************************************************************************************************'

Proc UTF

    parámetros texto$
    declarar b#
    Dim b#,2*len(texto$)+2
    StringW b#,0 = texto$
    texto$ = Char$(b#,0,SizeOf(b#)-2)
    volver texto$

ENDPROC

'*****************************************************************************************************************'

Proc CreateW

    parámetros Class$,Name$,style&,x%,y%,dx%,dy%,pWnd&,pid%,hInst&,exstyle&
    caso %pCount <11 : exstyle& = 0
    Class$ = UTF(Class$)
    Name$ = UTF(Name$)
    Var cs# = New(CREATESTRUCT)

    With cs#

        .lpCreateParams& = SizeOf(cs#)
        .hInstance& = hInst&
        .hMenu& = (IsMenu(id%)<>0) * id%
        .hwndParent& = pWnd&
        .cy% = dy%
        .cx% = dx%
        .y% = y%
        .x% = x%
        .style& = style&
        .lpszName& = Addr(Name$)
        .lpszClass& = Addr(Class$)
        .dwExStyle& = exstyle&

    EndWith

    Var handle& = CreateWindowExW(exstyle&,Addr(Class$),Addr(Name$),style&,x%,y%,dx%,dy%,pWnd&,id%,hInst&,cs#)
    Class$ = WinError$(%WinError)
    inc id%

    Caso negativo handle&

        MessageBox("Es trat folgender Fehler en:\n\n" + Class$,"F E H L E R !!!",4096)

    EndIf

    Disponer cs#
    Volver handle&

ENDPROC

'*****************************************************************************************************************'
'*****************************************************************************************************************'
'* Hauptprogramm'
'*****************************************************************************************************************'
DLL$ ="DLL_RU_Test.DLL"
DLL&=USEDLL(DLL$)
id% = 1
CLS
SET("CHARSET", 1251)
Font&=Crear("FONT", "calibri",0,0,0,0,0)
HText&[1] = create("Static",%HWND,"1", 10,10,200,20)
HText&[2] = create("Static",%HWND,"2", 10,40,200,20)
HText&[3] = create("Static",%HWND,"3", 10,70,200,20)
HTextW&[1] = createW("static","W1", $50000000,250,10,200,20,%HWND,0,%HINSTANCE)
HTextW&[2] = createW("static","W2", $50000000,250,40,200,20,%HWND,0,%HINSTANCE)
HTextW&[3] = createW("static","W3", $50000000,250,70,200,20,%HWND,0,%HINSTANCE)
SETFONT HText&[1], Font&
SETFONT HText&[2], Font&
SETFONT HText&[3], Font&
SETFONT HTextW&[1], Font&
SETFONT HTextW&[2], Font&
SETFONT HTextW&[3], Font&
WAITINPUT
Adresse% = 99

WHILELOOP 1,3,1

    CLEAR Buffer#
    count&     = LoadStringW(DLL&, Adresse%+&LOOP, Buffer#, 4097)
    Texto$[&LOOP]  = EXTSTRING$ (DLL&, Adresse%+&LOOP)
    TextW$[&LOOP] = WIDECHAR(Buffer#,0,count&*2)
    SETTEXT HText&[&LOOP], Texto$[&LOOP]
    SETTEXT HTextW&[&LOOP], TextW$[&LOOP]

WEND

WAITINPUT
DISPOSE Buffer#
DELETEOBJECT Font&
FREEDLL DLL&
FIN

7 kB
Hochgeladen:08.07.2021
Ladeanzahl84
Descargar
 
XProfan X4
Schöne Grüße aus Wittgenstein
von Stephan

Programmierumgebung:| XProfan X4 | WIN10 | AMD FX6100 3,3 GHz
08.07.2021  
 




Georg
Teles
Hi Stephan, habe deinen Ver código fuente adaptado, así dürfte lo ir
DECLARE DLL$, DLL&, FONT&, HText&[3], HTextW&[3]
DECLARE Texto$[3], TextW$[3]
DECLARE Buffer#, count&, Adresse%,i%
DECLARE id%
DEF LoadStringW(4)      !"USER32", "LoadStringW"
DEF IsMEnu(1)           !"USER32", "IsMenu"
DEF CreateWindowExW(12) !"USER32", "CreateWindowExW"
DEF SetWindowTextW(2)   !"USER32", "SetWindowTextW"
DIM Buffer#,4097
STRUCT CREATESTRUCT = lpCreateParams&, hInstance&, hMenu&, hwndParent&, cy%, cx%, y%, x%, style&, lpszName&, lpszClass&, dwExStyle&
'*****************************************************************************************************************'
'* ORDW, CHRW, UTF, CREATEW
'*****************************************************************************************************************'

proc ordw

    parámetros s$
    declarar m#
    dim m#,2
    char m#,0=left$(s$+"\z\z",2)
    var wc&=word(m#,0)
    disponer m#
    volver wc&

ENDPROC

'*****************************************************************************************************************'

proc chrw

    parámetros wc&
    declarar m#
    dim m#,2
    word m#,0=wc&
    var s$=char$(m#,0,2)
    disponer m#
    volver s$

ENDPROC

'*****************************************************************************************************************'

Proc UTF

    parámetros texto$
    declarar b#
    Dim b#,2*len(texto$)+2
    StringW b#,0 = texto$
    texto$ = Char$(b#,0,SizeOf(b#)-2)
    volver texto$

ENDPROC

'*****************************************************************************************************************'

Proc CreateW

    parámetros Class$,Name$,style&,x%,y%,dx%,dy%,pWnd&,pid%,hInst&,exstyle&
    caso %pCount <11 : exstyle& = 0
    Class$ = UTF(Class$)
    Name$ = UTF(Name$)
    Var cs# = New(CREATESTRUCT)

    With cs#

        .lpCreateParams& = SizeOf(cs#)
        .hInstance& = hInst&
        .hMenu& = (IsMenu(id%)<>0) * id%
        .hwndParent& = pWnd&
        .cy% = dy%
        .cx% = dx%
        .y% = y%
        .x% = x%
        .style& = style&
        .lpszName& = Addr(Name$)
        .lpszClass& = Addr(Class$)
        .dwExStyle& = exstyle&

    EndWith

    Var handle& = CreateWindowExW(exstyle&,Addr(Class$),Addr(Name$),style&,x%,y%,dx%,dy%,pWnd&,id%,hInst&,cs#)
    Class$ = WinError$(%WinError)
    inc id%

    Caso negativo handle&

        MessageBox("Es trat folgender Fehler en:\n\n" + Class$,"F E H L E R !!!",4096)

    EndIf

    Disponer cs#
    Volver handle&

ENDPROC

'*****************************************************************************************************************'
'*****************************************************************************************************************'
'* Hauptprogramm'
'*****************************************************************************************************************'
DLL$ ="DLL_RU_Test.DLL"
DLL&=USEDLL(DLL$)
id% = 1
CLS
SET("CHARSET", 1251)
Font&=Crear("FONT", "calibri",0,0,0,0,0)
HText&[1] = create("Static",%HWND,"1", 10,10,200,20)
HText&[2] = create("Static",%HWND,"2", 10,40,200,20)
HText&[3] = create("Static",%HWND,"3", 10,70,200,20)
HTextW&[1] = createW("static","W1", $50000000,250,10,200,20,%HWND,0,%HINSTANCE)
HTextW&[2] = createW("static","W2", $50000000,250,40,200,20,%HWND,0,%HINSTANCE)
HTextW&[3] = createW("static","W3", $50000000,250,70,200,20,%HWND,0,%HINSTANCE)
SETFONT HText&[1], Font&
SETFONT HText&[2], Font&
SETFONT HText&[3], Font&
SETFONT HTextW&[1], Font&
SETFONT HTextW&[2], Font&
SETFONT HTextW&[3], Font&
WAITINPUT
Adresse% = 99

WHILELOOP 1,3,1

    CLEAR Buffer#
    count&     = LoadStringW(DLL&, Adresse%+&LOOP, Buffer#, 4097)
    TextW$[&LOOP] = c2w(Buffer#,count&*2)'Byte para Byte auslesen !!!
    SetWindowTextW(HText&[&LOOP], Addr(TextW$[&LOOP]))'Conjunto...W
    SetWindowTextW(HTextW&[&LOOP], Addr(TextW$[&LOOP]))'Conjunto...W
    'Texto$[&LOOP]  = EXTSTRING$ (DLL&, Adresse%+&LOOP)
    'TextW$[&LOOP] = WIDECHAR(Buffer#,0,count&*2)
    'SETTEXT HText&[&LOOP], Texto$[&LOOP]
    'SETTEXT HTextW&[&LOOP], TextW$[&LOOP]

WEND

WAITINPUT
DISPOSE Buffer#
DELETEOBJECT Font&
FREEDLL DLL&
FIN

WEND

Proc c2w'Byte para Byte auslesen

Parámetros buf#, siz&
Declarar wide$
Claro wide$

WhileLoop 0,(siz&-1)

    wide$ = wide$+Chr$(Byte(buf#,&bucle))'+Chr$(4) CHR(4) entfällt, como Buffer# ya como Wide geladen wurde !!! en normalem String debería uno hier el CHR(4) todavía anhängen

EndWhile

Volver wide$

ENDPROC


Grüße
Georg
 
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

10.07.2021  
 




Stephan
Sonneborn
¡Hola Georg,

super! Das klappt prima!

Der Knackpunkt war also el byte-weise Einlesen el Textos y el Setzen encima SETWINDOWTEXTW() con Ansprechen el Textadresse.

Vielen, vielen Dank!
 
XProfan X4
Schöne Grüße aus Wittgenstein
von Stephan

Programmierumgebung:| XProfan X4 | WIN10 | AMD FX6100 3,3 GHz
13.07.2021  
 



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

3.689 Views

Untitledvor 0 min.
Georg Teles14.05.2024
Swissmade27.03.2024
E.T.14.01.2024
Stringray09.05.2022
Más...

Themeninformationen

Dieses Thema ha 2 subscriber:

Stephan Sonneborn (4x)
Georg Teles (3x)


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