Thread overview | |||||||||
---|---|---|---|---|---|---|---|---|---|
|
July 10, 2005 bug in command line arguments parsing? | ||||
---|---|---|---|---|
| ||||
hello! i use dmd 0.127 under Windows XP. i need analyse command lime parameters in my program. i use main() parameters char[][] args for this. but it seems it not works with non-english letters. Test program: ///// test.d ///// void main(char[][] args) { int len1 = args[1].length; int len2 = args[2].length; int len3 = args[3].length; printf("len1=%d, len2=%d, len3=%d", len1, len2, len3); } //////// When i run it as test.exe param1 param2 param3 then it print to console len1=6, len2=6, len3=6 When i replace word "param" by national letters (same length) test.exe ïàðàì1 ïàðàì2 ïàðàì3 then it print to console len1=1, len2=6, len3=6 First parameter length wrong :( Is it bug? |
July 10, 2005 Re: bug in command line arguments parsing? | ||||
---|---|---|---|---|
| ||||
Posted in reply to novice2 | novice2 <novice2_member@pathlink.com> wrote:
[...]
> First parameter length wrong :(
> Is it bug?
Seems to be a bug in the parameter handling by dmc:
first non-ascii sequence of characters is suppressed.
gcc does not have this problem.
-manfred
|
July 11, 2005 Re: bug in command line arguments parsing? | ||||
---|---|---|---|---|
| ||||
Posted in reply to novice2 | On Sun, 10 Jul 2005 07:09:21 -0400, novice2 <novice2_member@pathlink.com> wrote:
> hello!
> i use dmd 0.127 under Windows XP.
> i need analyse command lime parameters in my program.
> i use main() parameters char[][] args for this.
> but it seems it not works with non-english letters.
Currently, D expects everyone to set their terminal to UTF-8.
I've complained about this before because there appears to be an easy solution. If D would just use GetCommandLineW(), which IS supported on win9x/me and NT, and convert it to UTF-8, Windows would convert from the current charset.
While this solution would make main(args[]) happy, you'd need to set your terminal to UTF-8 in order to writef() correctly, but that's not such a big deal because it won't result in an exception.
|
July 11, 2005 Re: bug in command line arguments parsing? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Vathix | >While this solution would make main(args[]) happy, you'd need to set your terminal to UTF-8 in order to writef() correctly, but that's not such a big deal because it won't result in an exception.
Again and again :(
Every time i use user input or works with filenames in D i realize, that default
UTF-8 strings - big pain (for me at least). In Delphi i have not any problems
with non-english letters, excsept oem<->ansi conversion.
|
July 11, 2005 Re: bug in command line arguments parsing? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Vathix | Vathix wrote: > On Sun, 10 Jul 2005 07:09:21 -0400, novice2 <novice2_member@pathlink.com> wrote: > >> hello! >> i use dmd 0.127 under Windows XP. >> i need analyse command lime parameters in my program. >> i use main() parameters char[][] args for this. >> but it seems it not works with non-english letters. > > Currently, D expects everyone to set their terminal to UTF-8. > > I've complained about this before because there appears to be an easy solution. If D would just use GetCommandLineW(), which IS supported on win9x/me and NT, and convert it to UTF-8, Windows would convert from the current charset. This would enable Win9x apps to use Unicode command lines, but since Win9x DOS windows can't use UTF-8, it would break the hello.d example. Nonetheless, I've started working on something to this effect.... > While this solution would make main(args[]) happy, you'd need to set your terminal to UTF-8 in order to writef() correctly, but that's not such a big deal because it won't result in an exception. How does the Windows XP "terminal" work? Is it somehow different from an MS-DOS window under Win9x, such that it makes sense to use UTF-8 with it? Moreover, can console apps under XP auto-detect the terminal encoding? And can it be done in such a way that the app will work under 9x as well? We ought to have an I/O system that supports different encodings. See my little conversation with Uwe Salomon starting here: http://www.digitalmars.com/drn-bin/wwwnews?digitalmars.D.announce/906 Stewart. -- -----BEGIN GEEK CODE BLOCK----- Version: 3.1 GCS/M d- s:- a->--- UB@ P+ L E@ W++@ N+++ o K- w++@ O? M V? PS- PE- Y? PGP- t- 5? X? R b DI? D G e++>++++ h-- r-- !y ------END GEEK CODE BLOCK------ My e-mail is valid but not my primary mailbox. Please keep replies on the 'group where everyone may benefit. |
July 11, 2005 Re: bug in command line arguments parsing? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Stewart Gordon | > We ought to have an I/O system that supports different encodings. See my little conversation with Uwe Salomon starting here:
>
> http://www.digitalmars.com/drn-bin/wwwnews?digitalmars.D.announce/906
By the way, did you already decide if you want to work on a TextStream? Just curious... :)
Ciao
uwe
|
July 12, 2005 Re: bug in command line arguments parsing? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Uwe Salomon | Uwe Salomon wrote: >> We ought to have an I/O system that supports different encodings. See my little conversation with Uwe Salomon starting here: >> >> http://www.digitalmars.com/drn-bin/wwwnews?digitalmars.D.announce/906 > > By the way, did you already decide if you want to work on a TextStream? Just curious... :) Sorry, I was away for the weekend, and so haven't had much time to look at the possibility. But I will soon. Stewart. -- -----BEGIN GEEK CODE BLOCK----- Version: 3.1 GCS/M d- s:- a->--- UB@ P+ L E@ W++@ N+++ o K- w++@ O? M V? PS- PE- Y? PGP- t- 5? X? R b DI? D G e++>++++ h-- r-- !y ------END GEEK CODE BLOCK------ My e-mail is valid but not my primary mailbox. Please keep replies on the 'group where everyone may benefit. |
Copyright © 1999-2021 by the D Language Foundation