Компиляция присоед формы 711
Модераторы: m0p3e, edward_K, Модераторы
Компиляция присоед формы 711
При перекомпиляции формы по осн ср-вам ОС-1б ругается:
"iExcelFormat - ожидался структурный или ссылочный тип или неверный контекст использования
iExcelFormat/DoubleToStrFormatExcelNotNul(Массив_ИК_Сумма_начисление амортизации["
Чего не хватает Support?
"iExcelFormat - ожидался структурный или ссылочный тип или неверный контекст использования
iExcelFormat/DoubleToStrFormatExcelNotNul(Массив_ИК_Сумма_начисление амортизации["
Чего не хватает Support?
-
- Абориген
- Сообщения: 943
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: External Developer
- Контактная информация:
Re: Компиляция присоед формы 711
ээээ.... iExcelFormat а дальше точка или все-таки / ?kel писал(а):iExcelFormat/DoubleToStrFormatExcelNotNul(Массив_ИК_Сумма_начисление амортизации["
Чего не хватает Support?
-
- На пенсии
- Сообщения: 797
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: г. Тюмень
- Контактная информация:
Re: Компиляция присоед формы 711
iExcelFormat - это объектная переменнаяkel писал(а): iExcelFormat/DoubleToStrFormatExcelNotNul(Массив_ИК_Сумма_начисление амортизации["
Чего не хватает Support?
iExcelFormat : ExcelFormat;
соответсвенно DoubleToStrFormatExcelNotNul это метод, ну и приходим к выводу
нужно писать так:
Код: Выделить всё
iExcelFormat.DoubleToStrFormatExcelNotNul
-
- На пенсии
- Сообщения: 797
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: г. Тюмень
- Контактная информация:
Код: Выделить всё
// объявление следующей переменной нужно делать в базовой форме
! iExcelFormat : ExcelFormat;
! в присоедененных формах:
! ****************************************************************************
! * Ниже перечислены новые возможности которые дает использование методов *
! * объекта ExcelFormat. (Возможности перечислены на данный момент, *
! * а полное и свежее описание всегда можно найти в файле ExcelFormat.vih) *
! * Причем эффективнее, не подключая данный файл, а просто объявить *
! * переменную, в секции .var базовой формы, дабы не объявлять ее каждый раз *
! * в каждой link-форме, в которой хотите использовать данный функционал. *
! * (для этого, естественно, у вас в текущих исходниках должен быть виден *
! * файл: ExcelFormat.vih, для чего в GloTypes.inc должно присутствовать *
! * подключение #include ExcelFormat.vih, а ресурсах собран ExcelFormat.vip *
! * За консультацией можно обращаться по адресу: Kuznetsov@galaktika.by *
! ****************************************************************************
!
!-------------------------------------------------------------------------------------
! Функция удаляет все типы разделителя из строки
! и заменяет запятую на точку
!-------------------------------------------------------------------------------------
! function EraseSeparator (NumberInString : string) : string;
!
!-------------------------------------------------------------------------------------
! Функция удаляет все типы разделителя из строки,
! заменяет запятую на точку,
! и преобразует полученную строку к типу double
!-------------------------------------------------------------------------------------
! function NumInStrToDouble (NumberInString : string) : double;
!
!-------------------------------------------------------------------------------------
! Функция удаляет все типы разделителя из строки,
! заменяет запятую на точку,
! Функция выполняет те же действия, что и EraseSeparator, просто имеет такое название
! для аналогии с NumInStrEraseSeparatorNotNul
!-------------------------------------------------------------------------------------
! function NumInStrEraseSeparator (NumberInString : string) : string;
!
!-------------------------------------------------------------------------------------
! Функция удаляет все типы разделителя из строки,
! заменяет запятую на точку,
! а если строка преобразованная к числу = 0, то выводится пустая строка
!-------------------------------------------------------------------------------------
! function NumInStrEraseSeparatorNotNul (NumberInString : string) : string;
!
!-------------------------------------------------------------------------------------
! Функция возвращает формат для вывода чисел с количеством знаков после запятой
! указанном в принимаемом параметре
! ColDecimalDigit - количество знаков после запятой
! Например: efFormatExcel(2) = '\2p[|-]3666666666666666666.88'
! ^ └──┘
!-------------------------------------------------------------------------------------
! function efFormatExcel (ColDecimalDigit : word ) : string;
!
!-------------------------------------------------------------------------------------
! Функция преобразует число формата double к строке формата efFormatExcel
! с указанным количеством знаков после запятой
! Sum - преобразуемое число
! ColDecimalDigit - количество знаков после запятой
!-------------------------------------------------------------------------------------
! function DoubleToStrFormatExcel (Sum : double; ColDecimalDigit : word) : string;
!
!-------------------------------------------------------------------------------------
! Функция преобразует число формата double к строке заданного формата
! И в отличии от DoubleToStr, если результат нулю возвращает не ноль
! по формату, а пустую строку!
! Sum - преобразуемое число
! _Format - Формат
!-------------------------------------------------------------------------------------
! function DoubleToStrFormatNotNul (Sum : double; _Format : string) : string;
!
!-------------------------------------------------------------------------------------
! Функция преобразует число формата double к строке формата efFormatExcel
! с указанным количеством знаков после запятой
! И в отличии от DoubleToStrFormatExcel если результат нулю возвращает не ноль
! по формату, а пустую строку!
! Sum - преобразуемое число
! ColDecimalDigit - количество знаков после запятой
!-------------------------------------------------------------------------------------
! function DoubleToStrFormatExcelNotNul (Sum : double; ColDecimalDigit : word) : string;
!
!-------------------------------------------------------------------------------------
! Функция удаляет все типы разделителя из строки,
! заменяет запятую на точку,
! и преобразует полученную строку к строке формата efFormatExcel
! NumberInString - преобразуемое число в виде строки с разделителями
! ColDecimalDigit - количество знаков после запятой
!-------------------------------------------------------------------------------------
! function NumInStrToFormatExcel (NumberInString : string; ColDecimalDigit : word ) : string;
!
!-------------------------------------------------------------------------------------
! Функция удаляет все типы разделителя из строки,
! заменяет запятую на точку,
! и преобразует полученную строку к строке формата efFormatExcel,
! а если строка преобразованная к числу = 0, то выводится пустая строка
! NumberInString - преобразуемое число в виде строки с разделителями
! ColDecimalDigit - количество знаков после запятой
!-------------------------------------------------------------------------------------
! function NumInStrToFormatExcelNotNul (NumberInString : string; ColDecimalDigit : word ) : string;
!
!-------------------------------------------------------------------------------------
! Функция возвращает формат для вывода дат = 'DD.MM.YYYY'
!-------------------------------------------------------------------------------------
! function efDateFormatExcel : string; // efFormatExcelDate
!
!-------------------------------------------------------------------------------------
! Функция преобразует дату в строку в формате = 'DD.MM.YYYY'
!-------------------------------------------------------------------------------------
! function DateToStrFormatExcel (_Date : date ): string;
!
!-------------------------------------------------------------------------------------
! Функция преобразует дату в строку в формате = 'DD.MM.YYYY',
! а если дата нулевая возвращается пустая строка
!-------------------------------------------------------------------------------------
! function DateToStrFormatExcelNotNul (_Date : date ): string;
!
!-------------------------------------------------------------------------------------
! Функция возвращает стандартный для Галактики формат для вывода дат = 'DD/MM/YYYY'
!-------------------------------------------------------------------------------------
! function efDateStandartFormatExcel : string;
!
!-------------------------------------------------------------------------------------
! Функция преобразует дату в строку в формате = 'DD.MM.YYYY'
!-------------------------------------------------------------------------------------
! function DateStandartToStrFormatExcel (_Date : date ): string;
!
!-------------------------------------------------------------------------------------
! Функция преобразует дату в строку в формате = 'DD.MM.YYYY',
! а если дата нулевая возвращается пустая строка
!-------------------------------------------------------------------------------------
! function DateStandartToStrFormatExcelNotNul (_Date : date ): string;
!
!-------------------------------------------------------------------------------------
! Функция возвращает формат для вывода месяцев в формате дата (период) = 'MM.YYYY'
!-------------------------------------------------------------------------------------
! function efPeriodFormatExcel : string; // efFormatExcelPeriod
!
!-------------------------------------------------------------------------------------
! Функция преобразует дату в строку в формате = 'MM.YYYY'
!-------------------------------------------------------------------------------------
! function PeriodToStrFormatExcel (_Date : date ): string;
!
!-------------------------------------------------------------------------------------
! Функция преобразует дату в строку в формате = 'MM.YYYY',
! а если дата нулевая возвращается пустая строка
!-------------------------------------------------------------------------------------
! function PeriodToStrFormatExcelNotNul (_Date : date ): string;
!
!
-
- На пенсии
- Сообщения: 797
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: г. Тюмень
- Контактная информация:
Re: Компиляция присоед формы 711
Игорь был правMaverick писал(а):ээээ.... iExcelFormat а дальше точка или все-таки / ?kel писал(а):iExcelFormat/DoubleToStrFormatExcelNotNul(Массив_ИК_Сумма_начисление амортизации["
Чего не хватает Support?
-
- Абориген
- Сообщения: 943
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: External Developer
- Контактная информация:
вполне возможно
а) изменилась форма-прототип и в ней не объявлена больше переменная iExcelFormat
б) в ресурсных файлах отсутствует скомпилированный объектный интерфейс ObjExcelFormat
в) при компиляции этот ресурсный файл почему-то не подключается...
рекомендую проверить какие ресурснеики при компиляции подключаются. По моему это все-таки 3 вариант
а) изменилась форма-прототип и в ней не объявлена больше переменная iExcelFormat
б) в ресурсных файлах отсутствует скомпилированный объектный интерфейс ObjExcelFormat
в) при компиляции этот ресурсный файл почему-то не подключается...
рекомендую проверить какие ресурснеики при компиляции подключаются. По моему это все-таки 3 вариант
-
- Абориген
- Сообщения: 943
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: External Developer
- Контактная информация:
Ппоробуй вместо того что говорил Макс сделать следующее
1. создай файлик, нр с именем exclfrm.inc
2. помести в него следующее:
3. в проекте компиляции перед "make ..." добавь #include exclfrm.inc
4. попробуй собрать
1. создай файлик, нр с именем exclfrm.inc
2. помести в него следующее:
Код: Выделить всё
/*
При использовании опции .SlkNumber возможно передавать данные в Slk отчет
не как текст, а как число в понимании Excel-я, и использовать потом для них
собственные форматы Excel-я, которые отличаются от привычного формата
Бизнес-текст.
Так например привычный в Бизнес-тексте формат для сумм в виде
'6`666`666`666`666`666.88', Excel воспримет только как текст и выведет два
числа 1234567,89 и 1234 как '1`234`567.89' и '1`234.00', а вывод этих же
чисел в формате '6666666666666666,88', будет восприниматься Excel-ем как
числа 1234567,89 и 1234,00, и что самое главное, НАД НИМИ МОЖНО БУДЕТ
ПРОВОДИТЬ ОПЕРАЦИИ, например суммирование.
Так в первом случае формула =B1+C1 (где B1 = 1234567,89, а C1 = 1234)
выдаст ошибку в виде #ЗНАЧ!, а во втором число 1235801,89
А если туда еще добавить собственный формат Excel-я: числовой с двумя
разрядами и разбиением на группы то числа будут выглядеть вот так:
1 234 567,89
1 234,00
1 235 801,89
Хотелось бы еще отметить, что в Excel-е целая и дробная часть чисел
разделяется запятой, а не точкой, а даты точкой, а не слешем.
*/
// Формат для вывода сумм
efSumFormatExcel = '[|-]3666666666666666666[|,]99';
// Формат для вывода Колличественных чисел
efKolFormatExcel = '[|-]3666666666666666666';
// Формат для вывода дат
efDateFormatExcel = 'DD.MM.YYYY';
// Формат для вывода месяцев в формате дата (период)
efPeriodFormatExcel = 'MM.YYYY';
4. попробуй собрать
Файл *.inc с описанием форматов вывода создан. Не знаю только, в какой строке своей формы надо прописать #include *.inc Цитирую свою форму:
........
.{While (НомерИК <= НомерИК_Max)
.begin
КолНомер_в_ИК := КолНомер_в_ИК + 1;
end.
.fields
// ***** Вывод информации по карточке *****
// 09 - Фактический срок эксплуатации (лет,месяцев)
Массив_ИК_Фактический_срок_эксплуатации [НомерИК]
// 10 - Сумма начисленной амортизации, руб.
iExcelFormat.DoubletoStrFormatExcelNotNul (Массив_ИК_Сумма_начисленной_амортизации [НомерИК]* if (DuplicateRecordInGroupIK, 1, Массив_ИК_Количество [НомерИК]), 2)
Где втавить инклуд?
........
.{While (НомерИК <= НомерИК_Max)
.begin
КолНомер_в_ИК := КолНомер_в_ИК + 1;
end.
.fields
// ***** Вывод информации по карточке *****
// 09 - Фактический срок эксплуатации (лет,месяцев)
Массив_ИК_Фактический_срок_эксплуатации [НомерИК]
// 10 - Сумма начисленной амортизации, руб.
iExcelFormat.DoubletoStrFormatExcelNotNul (Массив_ИК_Сумма_начисленной_амортизации [НомерИК]* if (DuplicateRecordInGroupIK, 1, Массив_ИК_Количество [НомерИК]), 2)
Где втавить инклуд?
-
- Абориген
- Сообщения: 943
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: External Developer
- Контактная информация:
по идее сюда, если ты для компиляции не используешь файл проекта.
при этом пути на этот инклюд компилер должен знать (т.е. если не настроен путь к нему - настрой)
Код: Выделить всё
#include exxlfrm.inc
.linkform ...
....
.endform
Мой файл exclfrm.inc:
efSumFormatExcel = '[|-]3666666666666666666[|,]99';
efKolFormatExcel = '[|-]3666666666666666666';
efDateFormatExcel = 'DD.MM.YYYY';
efPeriodFormatExcel = 'MM.YYYY';
Инклуд подключен перед .linkform
Ругается "Ожидался оператор .Form .Linkform (стр1поз1exclfrm.inc)
efSumFormatExcel = '[|-]3666666666666666666[|,]99';
^
efSumFormatExcel = '[|-]3666666666666666666[|,]99';
efKolFormatExcel = '[|-]3666666666666666666';
efDateFormatExcel = 'DD.MM.YYYY';
efPeriodFormatExcel = 'MM.YYYY';
Инклуд подключен перед .linkform
Ругается "Ожидался оператор .Form .Linkform (стр1поз1exclfrm.inc)
efSumFormatExcel = '[|-]3666666666666666666[|,]99';
^