https://bugs.documentfoundation.org/show_bug.cgi?id=162681
--- Comment #3 from Jeremy Clark <[email protected]> --- (In reply to Vladimir Sokolinskiy from comment #1) > Repro. > > This error occurs when calling the conversion functions to the Integral type > CByte, CInt, CLng in the case when the argument of the String type cannot be > converted to a number. > > [1], 5.5.1.2.4 Let-coercion to and from String. > Destination Declared Type: Any numeric type. > "If the <regional-number-string> could not be interpreted as a number or > currency value, runtime error 13 (Type mismatch) is raised. If the value > could be interpreted as a number, but was out of the range of the > destination type, runtime error 6 (Overflow) is raised" > > This applies to both explicit and implicit conversions. > > In my opinion, the fix should also apply to the "Option Compatible" mode. > > [1]. [MS-VBAL] - v20240521. VBA Language Specification. > Copyright © 2024 Microsoft Corporation. Release: May 21, 2024. > https://learn.microsoft.com/en-us/openspecs/ > microsoft_general_purpose_programming_languages/ms-vbal/d5418146-0bd2-45eb- > 9c7a-fd9502722c74 https://timecalculators.io/ The information you provided is really helpful. I have a few more comments. We can implement a type checking function (e.g. IsNumeric) to determine if the string can be converted to a number. If not, we will get a Type Mismatch error like in VBA. This can be done by extending the error handler class in basic/source/sbx/sbxint.cxx and basic/source/sbx/sbxlng.cxx to check the value before assigning. When a conversion error is detected, we need to make sure that the code returns the corresponding error code (Runtime Error 13 - Type Mismatch). This will make it easier for programmers to identify the source of the problem in their code. -- You are receiving this mail because: You are the assignee for the bug.
