; Have anyone done a fast working lowercase function?
Debug LCase("ÖBB") ; does not bring up 'öbb'...
; in GFA, there UpperCase and LowerCase worked with an internal table, so even german, french and other chars from the "standard" windows set have been switched correctly...
German umlauts in LCase and UCase?
- Michael Vogel
- Addict
- Posts: 2797
- Joined: Thu Feb 09, 2006 11:27 pm
- Contact:
-
- Enthusiast
- Posts: 423
- Joined: Fri Apr 25, 2003 5:22 pm
- Contact:
Hmmm. In PB 3.94 all works fine. There was a bug-discussion about the 'ß' some time ago, but it was already fixed gives äöüß, ÄÖÜß (which is correct)
I don't have PB 4 here, so perhaps it is a bug in there ?
Otherwise you could use the following procedures:
Code: Select all
debug LCase("ÄÖÜß")
debug UCase("äöüß")
I don't have PB 4 here, so perhaps it is a bug in there ?
Otherwise you could use the following procedures:
Code: Select all
;- UCaseEx, LCaseEx
;- let you specify another charmap, e.g. for another language
;-
;- the char-mapping bases on hashmaps from the DataSection
;-
;- if you need other languages, please let me know, it's easy to
;- implement them using the LUCaseWrapper-tool on windows.
;-
;- by Froggerprogger 29.01.05
;-
;/ some constants
#CharTable_Western = 0 ; (default)
#CharTable_Greek = 1
;/ the procedures
Procedure.s UCaseEx(p_str.s, p_tableID.l)
Protected i.l, pos.l, tempB.b, offset.l
If p_tableID = #CharTable_Greek
offset = ?UCaseTableGreek
Else
offset = ?UCaseTableWestern
EndIf
For i=0 To Len(p_str)
pos = @p_str + i
PokeB(pos, PeekB(offset + PeekB(pos) & $FF) & $FF)
Next
ProcedureReturn p_str
EndProcedure
Procedure.s LCaseEx(p_str.s, p_tableID.l)
Protected i.l, pos.l, tempB.b, offset.l
If p_tableID = #CharTable_Greek
offset = ?LCaseTableGreek
Else
offset = ?LcaseTableWestern
EndIf
For i=0 To Len(p_str)
pos = @p_str + i
PokeB(pos, PeekB(offset + PeekB(pos) & $FF) & $FF)
Next
ProcedureReturn p_str
EndProcedure
End
;/ the hashmaps
DataSection
UCaseTableWestern:
;///// .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
Data.b 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31
;///// !! "" ## $$ %% && '' (( )) ** ++ ,, -- .. // 00 11 22 33 44 55 66 77 88 99 :: ;; << == >> ??
Data.b 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63
;///// @@ AA BB CC DD EE FF GG HH II JJ KK LL MM NN OO PP QQ RR SS TT UU VV WW XX YY ZZ [[ \\ ]] ^^ __
Data.b 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95
;///// `` aA bB cC dD eE fF gG hH iI jJ kK lL mM nN oO pP qQ rR sS tT uU vV wW xX yY zZ {{ || }} ~~
Data.b 96, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,123,124,125,126,127
;///// €€ �� ‚‚ ƒƒ „„ …… †† ‡‡ ˆˆ ‰‰ ŠŠ ‹‹ ŒŒ �� ŽŽ �� �� ‘‘ ’’ ““ ”” •• –– —— ˜˜ ™™ šŠ ›› œŒ �� žŽ ŸŸ
Data.b 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,138,155,140,157,142,159
;///// ¡¡ ¢¢ ££ ¤¤ ¥¥ ¦¦ §§ ¨¨ ©© ªª «« ¬¬ ®® ¯¯ °° ±± ²² ³³ ´´ µµ ¶¶ ·· ¸¸ ¹¹ ºº »» ¼¼ ½½ ¾¾ ¿¿
Data.b 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191
;///// ÀÀ ÁÁ ÂÂ ÃÃ ÄÄ ÅÅ ÆÆ ÇÇ ÈÈ ÉÉ ÊÊ ËË ÌÌ ÍÍ ÎÎ ÏÏ ÐÐ ÑÑ ÒÒ ÓÓ ÔÔ ÕÕ ÖÖ ×× ØØ ÙÙ ÚÚ ÛÛ ÜÜ ÝÝ ÞÞ ßß
Data.b 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223
;///// àÀ áÁ â ãà äÄ åÅ æÆ çÇ èÈ éÉ êÊ ëË ìÌ íÍ îÎ ïÏ ðÐ ñÑ òÒ óÓ ôÔ õÕ öÖ ÷÷ øØ ùÙ úÚ ûÛ üÜ ýÝ þÞ ÿŸ
Data.b 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,247,216,217,218,219,220,221,222,159
LcaseTableWestern:
;///// .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
Data.b 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31
;///// !! "" ## $$ %% && '' (( )) ** ++ ,, -- .. // 00 11 22 33 44 55 66 77 88 99 :: ;; << == >> ??
Data.b 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63
;///// @@ Aa Bb Cc Dd Ee Ff Gg Hh Ii Jj Kk Ll Mm Nn Oo Pp Qq Rr Ss Tt Uu Vv Ww Xx Yy Zz [[ \\ ]] ^^ __
Data.b 64, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122, 91, 92, 93, 94, 95
;///// `` aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss tt uu vv ww xx yy zz {{ || }} ~~
Data.b 96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127
;///// €€ �� ‚‚ ƒƒ „„ …… †† ‡‡ ˆˆ ‰‰ Šš ‹‹ Œœ �� Žž �� �� ‘‘ ’’ ““ ”” •• –– —— ˜˜ ™™ šš ›› œœ �� žž Ÿÿ
Data.b 128,129,130,131,132,133,134,135,136,137,154,139,156,141,158,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,255
;///// ¡¡ ¢¢ ££ ¤¤ ¥¥ ¦¦ §§ ¨¨ ©© ªª «« ¬¬ ®® ¯¯ °° ±± ²² ³³ ´´ µµ ¶¶ ·· ¸¸ ¹¹ ºº »» ¼¼ ½½ ¾¾ ¿¿
Data.b 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191
;///// Àà Áá Ââ Ãã Ää Åå Ææ Çç Èè Éé Êê Ëë Ìì Íí Îî Ïï Ðð Ññ Òò Óó Ôô Õõ Öö ×× Øø Ùù Úú Ûû Üü Ýý Þþ ßß
Data.b 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,215,248,249,250,251,252,253,254,223
;///// àà áá ââ ãã ää åå ææ çç èè éé êê ëë ìì íí îî ïï ðð ññ òò óó ôô õõ öö ÷÷ øø ùù úú ûû üü ýý þþ ÿÿ
Data.b 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
UCaseTableGreek:
;///// .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
Data.b 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31
;///// !! "" ## $$ %% && '' (( )) ** ++ ,, -- .. // 00 11 22 33 44 55 66 77 88 99 :: ;; << == >> ??
Data.b 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63
;///// @@ AA BB CC DD EE FF GG HH II JJ KK LL MM NN OO PP QQ RR SS TT UU VV WW XX YY ZZ [[ \\ ]] ^^ __
Data.b 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95
;///// `` aA bB cC dD eE fF gG hH iI jJ kK lL mM nN oO pP qQ rR sS tT uU vV wW xX yY zZ {{ || }} ~~
Data.b 96, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,123,124,125,126,127
;///// ¤¤ ?? ‚‚ ƒƒ „„ …… †† ‡‡ ˆˆ ‰‰ ŠŠ ‹‹ ŒŒ ?? ŽŽ ?? ?? ‘‘ ’’ ““ ”” •• –– —— ˜˜ ™™ šš ›› œœ ?? žž ŸŸ
Data.b 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159
;///// ¡¡ ¢¢ ££ ¤¤ ¥¥ ¦¦ §§ ¨¨ ©© ªª «« ¬¬ ®® ¯¯ °° ±± ²² ³³ ´´ µµ ¶¶ ·· ¸¸ ¹¹ ºº »» ¼¼ ½½ ¾¾ ¿¿
Data.b 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191
;///// ÀÀ ÁÁ  Ãà ÄÄ ÅÅ ÆÆ ÇÇ ÈÈ ÉÉ ÊÊ ËË ÌÌ ÍÍ ÎÎ ÏÏ ÐÐ ÑÑ ÒÒ ÓÓ ÔÔ ÕÕ ÖÖ ×× ØØ ÙÙ ÚÚ ÛÛ Ü¢ ݸ Þ¹ ߺ
Data.b 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,162,184,185,186
;///// àà áÁ â ãà äÄ åÅ æÆ çÇ èÈ éÉ êÊ ëË ìÌ íÍ îÎ ïÏ ðÐ ñÑ òÓ óÓ ôÔ õÕ öÖ ÷× øØ ùÙ úÚ ûÛ ü¼ ý¾ þ¿ ÿÿ
Data.b 224,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,211,211,212,213,214,215,216,217,218,219,188,190,191,255
LCaseTableGreek:
;///// .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
Data.b 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31
;///// !! "" ## $$ %% && '' (( )) ** ++ ,, -- .. // 00 11 22 33 44 55 66 77 88 99 :: ;; << == >> ??
Data.b 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63
;///// @@ Aa Bb Cc Dd Ee Ff Gg Hh Ii Jj Kk Ll Mm Nn Oo Pp Qq Rr Ss Tt Uu Vv Ww Xx Yy Zz [[ \\ ]] ^^ __
Data.b 64, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122, 91, 92, 93, 94, 95
;///// `` aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss tt uu vv ww xx yy zz {{ || }} ~~
Data.b 96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127
;///// ¤¤ ?? ‚‚ ƒƒ „„ …… †† ‡‡ ˆˆ ‰‰ ŠŠ ‹‹ ŒŒ ?? ŽŽ ?? ?? ‘‘ ’’ ““ ”” •• –– —— ˜˜ ™™ šš ›› œœ ?? žž ŸŸ
Data.b 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159
;///// ¡¡ ¢Ü ££ ¤¤ ¥¥ ¦¦ §§ ¨¨ ©© ªª «« ¬¬ ®® ¯¯ °° ±± ²² ³³ ´´ µµ ¶¶ ·· ¸Ý ¹Þ ºß »» ¼ü ½½ ¾ý ¿þ
Data.b 160,161,220,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,221,222,223,187,252,189,253,254
;///// ÀÀ Áá Ââ Ãã Ää Åå Ææ Çç Èè Éé Êê Ëë Ìì Íí Îî Ïï Ðð Ññ ÒÒ Óó Ôô Õõ Öö ×÷ Øø Ùù Úú Ûû ÜÜ ÝÝ ÞÞ ßß
Data.b 192,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,210,243,244,245,246,247,248,249,250,251,220,221,222,223
;///// àà áá ââ ãã ää åå ææ çç èè éé êê ëë ìì íí îî ïï ðð ññ òò óó ôô õõ öö ÷÷ øø ùù úú ûû üü ýý þþ ÿÿ
Data.b 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
; Table-Preset for your own tables (for importing complete CharsetTranslations you might use the tool "LUCaseWrapper" by Froggerprogger:
; Data.b 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31
; Data.b 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63
; Data.b 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95
; Data.b 96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127
; Data.b 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159
; Data.b 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191
; Data.b 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223
; Data.b 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
EndDataSection
Last edited by Froggerprogger on Fri Mar 03, 2006 1:38 pm, edited 1 time in total.
%1>>1+1*1/1-1!1|1&1<<$1=1
Re: German umlauts in LCase and UCase?
PB 4.beta5 (polish chars):
Debug LCase("ĄŚĘŻŹĆŃŁÓ") = ĄŚĘŻŹĆŃŁÓ
Debug UCase("ąśężźćńłó") = ąśĘżźĆŃłÓ
PB 3.94
Debug LCase("ĄŚĘŻŹĆŃŁÓ") = ĄŚęŻŹćńŁó
Debug UCase("ąśężźćńłó") = ąśĘżźĆŃłÓ
Windows XP Pro (Eng).
Piotr
Debug LCase("ĄŚĘŻŹĆŃŁÓ") = ĄŚĘŻŹĆŃŁÓ
Debug UCase("ąśężźćńłó") = ąśĘżźĆŃłÓ
PB 3.94
Debug LCase("ĄŚĘŻŹĆŃŁÓ") = ĄŚęŻŹćńŁó
Debug UCase("ąśężźćńłó") = ąśĘżźĆŃłÓ
Windows XP Pro (Eng).
Piotr