Forum | | | | Stephan Sonneborn | allô gens, je stehe toujours avant dem Problem, russische Textes sur Dialogelemente trop apporter. qui Textes liegen mittlerweile dans einer DLL dans russischer Discours avant.
je schaffe es mais pas, cet Textes darzustellen. Es volonté toujours seulement Fragezeichen angezeigt.
comment muss je qui Textes im ANSI- Bereich > 1024 ansprechen? je viens avec den WIDECHARS et WIDESTRINGS pas bien sûr...?!?! Zunächst muss je qui Textes aus qui DLL lesen et zwar so, dass l'information, dass es kyrilische marque sommes avec übertragen wird. chez stehen ici déjà toujours seulement Fragezeichen im eingelesenen String.
Hat quelqu'un une concept? |
| | | XProfan X4Schöne Grüße aus Wittgenstein von Stephan Programmierumgebung:| XProfan X4 | WIN10 | AMD FX6100 3,3 GHz | 06.07.2021 ▲ |
| |
| | Georg Teles | allô Stephan,
si qui Windows Discours sur allemande ist, ist es normal, dass qui Textes mittels imprimer comme ??? herauskommen, là imprimer et SetText avec cela pas tourner autour de peut - d'autre Problem ist, dass cet Textes bereits im Russichen vorliegen, sodass du cet comme Ressource herauslesen et ensuite transformer devrait, weil ExtString$ pas avec WideStrings tourner autour de peux.
qui Grund meiner PCU [...] était oui c'est ca cette, dass on qui Cordes comme lateinische im Programme ou bien DLL einfügt et ensuite avec qui Funktion umwandelt - l2cPCU.l2l de lateinischen Cordes trop WideStrings et l2cPCU.l2c de den lateinischen Cordes trop kyrillischen WideStrings
Grüße |
| | | | |
| | Stephan Sonneborn | allô Georg,
vielen Dank pour Votre Antwort! So habe je es sur Umwege aussi gemacht: un Kollege hat avec einer englisch / russischen clavier qui russischen Textes "blind" eingegeben et je hab den Kauderwelsch aus lateinischen Buchstaben ensuite verwendet, um ihn avec dem CYRILLIC - Font darzustellen. Ist mais très unschön, weil on toujours den Font mitliefern muss. maintenant hat un autre Kollege direct russische Textes eingegeben. et un anderer alles nochmal "richtig" sur russisch traduit.
je peux demain la fois une 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 | qui Textes peux je dir oui aussi dans mon forme traduire, pour qui PCU si du magst
tu peux den Text direct im Programme ou bien dans qui DLL mitliefern. là russiche Textes generell problematisch sur einem deutschsprachigen PC sommes, ist es meiner attitude sinnvoller qui Textes juste dans lateinischen Buchstaben abzuspeichern (ansi) weil qui meisten Textfunktionen sowieso seulement avec Ansi quoi anfangen peut ... cet ensuite dans WideStrings transformer ind ausgeben, ensuite la hâte du qui Sicherheit, dass sur chaque PC cela Gleiche angezeigt wird. |
| | | | |
| | Stephan Sonneborn | je hab ici la fois un Testprogramm et une Mini-DLL avec trois Texten drin:
DECLARE DLL$, DLL&, FONT&, HText&[3], HTextW&[3]
DECLARE Text$[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
parameters s$
declare m#
dim m#,2
char m#,0=left$($ S+"\z\z",2)
var wc&=word(m#,0)
dispose m#
return wc&
endproc
'*****************************************************************************************************************'
proc chrw
parameters wc&
declare m#
dim m#,2
word m#,0=wc&
var s$=char$(m#,0,2)
dispose m#
return s$
endproc
'*****************************************************************************************************************'
Proc UTF
parameters text$
declare b#
Faible b#,2*len(text$)+2
StringW b#,0 = text$
text$ = Char$(b#,0,SizeOf(b#)-2)
return text$
ENDPROC
'*****************************************************************************************************************'
Proc CreateW
parameters Class$,nom$,style&,x%,y%,dx%,dy%,pWnd&,pid%,hInst&,exstyle&
cas %pCount <11 : exstyle& = 0
Class$ = UTF(Class$)
nom$ = UTF(nom$)
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(nom$)
.lpszClass& = Addr(Class$)
.dwExStyle& = exstyle&
EndWith
Var handle& = CreateWindowExW(exstyle&,Addr(Class$),Addr(nom$),style&,x%,y%,dx%,dy%,pWnd&,id%,hInst&,cs#)
Class$ = WinError$(%WinError)
inc id%
Si non handle&
MessageBox("Es trat suivant faute sur:\n\n" + Class$,"F E H L E R !!!",4096)
EndIf
Dispose cs#
Retour handle&
ENDPROC
'*****************************************************************************************************************'
'*****************************************************************************************************************'
'* Hauptprogramm'
'*****************************************************************************************************************'
DLL$ ="DLL_RU_Test.DLL"
DLL&=USEDLL(DLL$)
id% = 1
CLS
SET("CHARSET", 1251)
Font&=Créer("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)
Text$[&LOOP] = EXTSTRING$ (DLL&, Adresse%+&LOOP)
TextW$[&LOOP] = WIDECHAR(Buffer#,0,count&*2)
SETTEXT HText&[&LOOP], Text$[&LOOP]
SETTEXT HTextW&[&LOOP], TextW$[&LOOP]
WEND
WAITINPUT
DISPOSE Buffer#
DELETEOBJECT Font&
FREEDLL DLL&
FIN
|
| | | XProfan X4Schö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 Voir le texte source angepasst, so pourrait es aller
DECLARE DLL$, DLL&, FONT&, HText&[3], HTextW&[3]
DECLARE Text$[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
parameters s$
declare m#
dim m#,2
char m#,0=left$($ S+"\z\z",2)
var wc&=word(m#,0)
dispose m#
return wc&
endproc
'*****************************************************************************************************************'
proc chrw
parameters wc&
declare m#
dim m#,2
word m#,0=wc&
var s$=char$(m#,0,2)
dispose m#
return s$
endproc
'*****************************************************************************************************************'
Proc UTF
parameters text$
declare b#
Faible b#,2*len(text$)+2
StringW b#,0 = text$
text$ = Char$(b#,0,SizeOf(b#)-2)
return text$
ENDPROC
'*****************************************************************************************************************'
Proc CreateW
parameters Class$,nom$,style&,x%,y%,dx%,dy%,pWnd&,pid%,hInst&,exstyle&
cas %pCount <11 : exstyle& = 0
Class$ = UTF(Class$)
nom$ = UTF(nom$)
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(nom$)
.lpszClass& = Addr(Class$)
.dwExStyle& = exstyle&
EndWith
Var handle& = CreateWindowExW(exstyle&,Addr(Class$),Addr(nom$),style&,x%,y%,dx%,dy%,pWnd&,id%,hInst&,cs#)
Class$ = WinError$(%WinError)
inc id%
Si non handle&
MessageBox("Es trat suivant faute sur:\n\n" + Class$,"F E H L E R !!!",4096)
EndIf
Dispose cs#
Retour handle&
ENDPROC
'*****************************************************************************************************************'
'*****************************************************************************************************************'
'* Hauptprogramm'
'*****************************************************************************************************************'
DLL$ ="DLL_RU_Test.DLL"
DLL&=USEDLL(DLL$)
id% = 1
CLS
SET("CHARSET", 1251)
Font&=Créer("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 pour Byte auslesen !!!
SetWindowTextW(HText&[&LOOP], Addr(TextW$[&LOOP]))'Set...W
SetWindowTextW(HTextW&[&LOOP], Addr(TextW$[&LOOP]))'Set...W
'Text$[&LOOP] = EXTSTRING$ (DLL&, Adresse%+&LOOP)
'TextW$[&LOOP] = WIDECHAR(Buffer#,0,count&*2)
'SETTEXT HText&[&LOOP], Text$[&LOOP]
'SETTEXT HTextW&[&LOOP], TextW$[&LOOP]
WEND
WAITINPUT
DISPOSE Buffer#
DELETEOBJECT Font&
FREEDLL DLL&
FIN
WEND
Proc c2w'Byte pour Byte auslesen
Paramètres buf#, siz&
Déclarer wide$
Claire wide$
WhileLoop 0,(siz&-1)
wide$ = wide$+Chr$(Byte(buf#,&loop))'+Chr$(4) CHR(4) entfällt, là Buffer# bereits comme Wide geladen wurde !!! chez normalem String devrait on ici den CHR(4) encore anhängen
Endwhile
Retour wide$
ENDPROC
Grüße Georg |
| | | | |
| | Stephan Sonneborn | allô Georg,
super! cela klappt prima!
qui Knackpunkt était alors cela byte-weise Einlesen qui Textes et cela mettons sur SETWINDOWTEXTW() avec Ansprechen qui Textadresse.
Vielen, vielen Dank! |
| | | XProfan X4Schöne Grüße aus Wittgenstein von Stephan Programmierumgebung:| XProfan X4 | WIN10 | AMD FX6100 3,3 GHz | 13.07.2021 ▲ |
| |
|
répondreOptions du sujet | 3.679 Views |
Themeninformationencet Thema hat 2 participant: |