> From: Todd Zuercher [mailto:to...@pgrahamdunn.com] > Whoever came up with the idea that we needed different characters for > hyphens, dashes and minus signs anyway? Someone needs > kicked. > > I don't remember having problems with these a few years ago. > > Todd Zuercher > P. Graham Dunn Inc.
My response to your question is the last line of my post but here's the background. If you've ever had the experience of working on an IBM 360/370 series and written programs using PASCAL you'll have discovered an interesting problem. The PASCAL statement if ch in ['A'..'Z'] then begin ... end; won't work right. That's because the compiler generates code that does the following test (written now in C for example) . if ((ch >=0xC1) && (ch <= 0xE9)) { ... }; Needless to say the PASCAL is easier to read when you understand set notation. Trouble is, the IBMs used EBCDIC for character representation, not ASCII. To write this in PASCAL and in C is done correctly like this: IF (ch IN ['A'..'I']) OR (ch IN ['J'..'R']) OR (ch IN ['S'..'Z']) THEN BEGIN ... END; In C (or in PASCAL) to use the hex values you would write it like this: if (((ch>=0xC1) && (ch<=0xC9)) || ((ch>=0xD1) && (ch<=0xD9)) || ((ch>=0xE2) && (ch<=0xE9)) ) { ... }; Yikes eh? Notice the gaps. If the ch had a value 0xE1 then the all inclusive test from 0xC1 to 0xE9 would pass even though the ch variable has an invalid character. No move forward in time and Embarcadero changed the OBJECT PASCAL (Delphi) language in one fell swoop breaking thousands of programs and who knows how many man hours were required to fix it. The type CHAR was always 7 bit ASCII and as programs became more international the WIDECHAR was introduced to handle 16 bit character sets and special characters or symbols like the German umlaut. And then suddenly a char was 16 bits and an ANSICHAR was 8 bits. Every program out there that expected CHAR to be a 7 bit ASCII character broke. Most of the time it didn't matter much because if it was a desktop screen application the OS took care of a lot. If you dealt with weigh scales and serial ports or any other hardware device that sent 8 bit characters over a UART based serial port it was serious. Or reading a text file created by a different OS. And with the advent of 16 bit characters we can now have all sorts of values for what to the average eye looks like a '-'. John Dammeyer _______________________________________________ Emc-users mailing list Emc-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/emc-users