Hi,
Although the use of string classes in tools project is commented as
depreciated,
they are still used in many codes.
They have constructors with one numeric argument to generate string of one
character. To protect the misuse of these constructors, the class definition
includes some other constructors with one numeric argument of different sizes
and
the are not implemented so as to detect misuse at link time. (I think it better
to
declare them as private so that any misuse can be detected at compilation.)
However, there still exist some misuses of the constructor with one numeric
character. For example, in toolkit/source/awt/vclxprinter.cxx, the function
VCLXPrinterPropertySet::getFormDescriptions includes the following fragment.
for ( sal_uInt16 n = 0; n < nPaperBinCount; n++ )
{
// Format:
<DisplayFormName;FormNameId;DisplayPaperBinName;PaperBinNameId;DisplayPaperName;Pa
perNameId>
String aDescr( RTL_CONSTASCII_USTRINGPARAM( "*;*;" ) );
aDescr += GetPrinter()->GetPaperBinName( n );
aDescr += ';';
aDescr += n;
aDescr.AppendAscii( ";*;*", 4 );
aDescriptions.getArray()[n] = aDescr;
}
I suspect that it is a misuse of String(sal_Unicode).
IMHO, even though we have to have some cumbersome work to rewrite existing
codes,
these constructors with one numeric argument should be declared as explicit to
avoid silly misuses completely.
tono (Takashi Ono)
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]