баг Substring, Iif, Switch (или "фишка"?)
FastReport.Net v1.7.1
есть данные: (строка) MasterData.Name = "1234567890"
"Name" имеет неизвестное кол. знаков или может быть null
1.
Делаю формулу:
[Substring([MasterData.Name],0,12)]
Memo269: Error in expression: Substring([MasterData.Name],0,12)
System.Exception: Memo269: Error in expression: Substring([MasterData.Name],0,12) ---> System.ArgumentOutOfRangeException: Index and length must refer to a location within the string.
Parameter name: length
Ожидаемый результат: "1234567890"
2.
[Substring([MasterData.Name],12)]
System.Exception: Memo269: Error in expression: Substring([MasterData.name],13) ---> System.ArgumentOutOfRangeException: startIndex cannot be larger than length of string.
Parameter name: startIndex
Ожидаемый результат: ""
3. ОКЕЙ, делаю:
[IIf(Length([MasterData.name])>12,Substring([MasterData.name],0,12),[MasterData.name])]
System.Exception: Memo269: Error in expression: IIf(Length([MasterData.name])>12,Substring([MasterData.name],0,12),[MasterData.name]) ---> System.ArgumentOutOfRangeException: Index and length must refer to a location within the string.
Parameter name: length
Ожидаемый результат: "1234567890"
Ну НЕ ДОЛЖЕН отрабатывать Substring!
ошибка: вычисляются ВСЕ результирующие значения в iif.
----
то же самое
[Switch(Length([MasterData.name])>12, Substring([MasterData.name],0,12), Length([MasterData.name])<13, [MasterData.name])]
System.Exception: Memo269: Error in expression: Switch(Length([MasterData.name])>12, Substring([MasterData.name],0,12), Length([MasterData.name])<13, [MasterData.name]) ---> System.ArgumentOutOfRangeException: Index and length must refer to a location within the string.
Parameter name: length
тогда как:
[Switch(Length([MasterData.name])>12, Substring([MasterData.name],0,10), Length([MasterData.name])<13, [MasterData.name])] - все ОК
или
[Switch(Length([MasterData.name])<13, [MasterData.name], Length([MasterData.name])>12, Substring([MasterData.name],0,10))] - тоже понятно все ОК
есть данные: (строка) MasterData.Name = "1234567890"
"Name" имеет неизвестное кол. знаков или может быть null
1.
Делаю формулу:
[Substring([MasterData.Name],0,12)]
Memo269: Error in expression: Substring([MasterData.Name],0,12)
System.Exception: Memo269: Error in expression: Substring([MasterData.Name],0,12) ---> System.ArgumentOutOfRangeException: Index and length must refer to a location within the string.
Parameter name: length
Ожидаемый результат: "1234567890"
2.
[Substring([MasterData.Name],12)]
System.Exception: Memo269: Error in expression: Substring([MasterData.name],13) ---> System.ArgumentOutOfRangeException: startIndex cannot be larger than length of string.
Parameter name: startIndex
Ожидаемый результат: ""
3. ОКЕЙ, делаю:
[IIf(Length([MasterData.name])>12,Substring([MasterData.name],0,12),[MasterData.name])]
System.Exception: Memo269: Error in expression: IIf(Length([MasterData.name])>12,Substring([MasterData.name],0,12),[MasterData.name]) ---> System.ArgumentOutOfRangeException: Index and length must refer to a location within the string.
Parameter name: length
Ожидаемый результат: "1234567890"
Ну НЕ ДОЛЖЕН отрабатывать Substring!
ошибка: вычисляются ВСЕ результирующие значения в iif.
----
то же самое
[Switch(Length([MasterData.name])>12, Substring([MasterData.name],0,12), Length([MasterData.name])<13, [MasterData.name])]
System.Exception: Memo269: Error in expression: Switch(Length([MasterData.name])>12, Substring([MasterData.name],0,12), Length([MasterData.name])<13, [MasterData.name]) ---> System.ArgumentOutOfRangeException: Index and length must refer to a location within the string.
Parameter name: length
тогда как:
[Switch(Length([MasterData.name])>12, Substring([MasterData.name],0,10), Length([MasterData.name])<13, [MasterData.name])] - все ОК
или
[Switch(Length([MasterData.name])<13, [MasterData.name], Length([MasterData.name])>12, Substring([MasterData.name],0,10))] - тоже понятно все ОК