Компиляция присоед формы 711

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

kel
Постоянный гость
Сообщения: 78
Зарегистрирован: 29 мар 2005, 17:49

Компиляция присоед формы 711

Сообщение kel »

При перекомпиляции формы по осн ср-вам ОС-1б ругается:
"iExcelFormat - ожидался структурный или ссылочный тип или неверный контекст использования
iExcelFormat/DoubleToStrFormatExcelNotNul(Массив_ИК_Сумма_начисление амортизации["
Чего не хватает Support?
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

Re: Компиляция присоед формы 711

Сообщение Maverick »

kel писал(а):iExcelFormat/DoubleToStrFormatExcelNotNul(Массив_ИК_Сумма_начисление амортизации["

Чего не хватает Support?
ээээ.... iExcelFormat а дальше точка или все-таки / ?
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

Сообщение Maverick »

плз имя формы для анализа (исходной линкформы)
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
Max_Fin
На пенсии
Сообщения: 797
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г. Тюмень
Контактная информация:

Re: Компиляция присоед формы 711

Сообщение Max_Fin »

kel писал(а): iExcelFormat/DoubleToStrFormatExcelNotNul(Массив_ИК_Сумма_начисление амортизации["
Чего не хватает Support?
iExcelFormat - это объектная переменная
iExcelFormat : ExcelFormat;
соответсвенно DoubleToStrFormatExcelNotNul это метод, ну и приходим к выводу
нужно писать так:

Код: Выделить всё

iExcelFormat.DoubleToStrFormatExcelNotNul
Max_Fin
На пенсии
Сообщения: 797
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г. Тюмень
Контактная информация:

Сообщение Max_Fin »

Код: Выделить всё

// объявление следующей переменной нужно делать в базовой форме
!  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;
!
! 
Max_Fin
На пенсии
Сообщения: 797
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г. Тюмень
Контактная информация:

Re: Компиляция присоед формы 711

Сообщение Max_Fin »

Maverick писал(а):
kel писал(а):iExcelFormat/DoubleToStrFormatExcelNotNul(Массив_ИК_Сумма_начисление амортизации["

Чего не хватает Support?
ээээ.... iExcelFormat а дальше точка или все-таки / ?
Игорь был прав :)
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

Сообщение Maverick »

Макс, ну я предположил по названию, что iЧегоТоТам - наверняка переменная типа объектный интервейс. соответственно обращение к функциям объектника должно идти через ТОЧКУ.... Хотя в контесте того что написано выше не было понятно, что это. Мей би арифм.выражение... :roll:
отсюда и наводящие вопросы )
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
kel
Постоянный гость
Сообщения: 78
Зарегистрирован: 29 мар 2005, 17:49

Сообщение kel »

Пардон. Ну, конечно, у меня "." после iExcelFormat - опечатка в моем вопросе.
Форма ОС1б linkform "GroupOS_01b", прототип "GroupOs".
При перекомпиляции даже из Галактики ругается на неверный структурный или ссылочный тип.
Чего делать?
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

Сообщение Maverick »

вполне возможно
а) изменилась форма-прототип и в ней не объявлена больше переменная iExcelFormat
б) в ресурсных файлах отсутствует скомпилированный объектный интерфейс ObjExcelFormat
в) при компиляции этот ресурсный файл почему-то не подключается...

рекомендую проверить какие ресурснеики при компиляции подключаются. По моему это все-таки 3 вариант
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
Max_Fin
На пенсии
Сообщения: 797
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г. Тюмень
Контактная информация:

Сообщение Max_Fin »

Можно попробывать подключить еще GloTypes.inc

как описано выше в пояснении к методам
kel
Постоянный гость
Сообщения: 78
Зарегистрирован: 29 мар 2005, 17:49

Сообщение kel »

Где можно взять ExcelFormat.vih (GloTypes.inc)
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

Сообщение Maverick »

Ппоробуй вместо того что говорил Макс сделать следующее
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';

3. в проекте компиляции перед "make ..." добавь #include exclfrm.inc

4. попробуй собрать
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
kel
Постоянный гость
Сообщения: 78
Зарегистрирован: 29 мар 2005, 17:49

Сообщение kel »

Файл *.inc с описанием форматов вывода создан. Не знаю только, в какой строке своей формы надо прописать #include *.inc Цитирую свою форму:
........
.{While (НомерИК <= НомерИК_Max)
.begin
КолНомер_в_ИК := КолНомер_в_ИК + 1;
end.
.fields
// ***** Вывод информации по карточке *****
// 09 - Фактический срок эксплуатации (лет,месяцев)
Массив_ИК_Фактический_срок_эксплуатации [НомерИК]
// 10 - Сумма начисленной амортизации, руб.
iExcelFormat.DoubletoStrFormatExcelNotNul (Массив_ИК_Сумма_начисленной_амортизации [НомерИК]* if (DuplicateRecordInGroupIK, 1, Массив_ИК_Количество [НомерИК]), 2)

Где втавить инклуд?
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

Сообщение Maverick »

по идее сюда, если ты для компиляции не используешь файл проекта.

Код: Выделить всё

#include exxlfrm.inc
.linkform ...
....
.endform
при этом пути на этот инклюд компилер должен знать (т.е. если не настроен путь к нему - настрой)
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
kel
Постоянный гость
Сообщения: 78
Зарегистрирован: 29 мар 2005, 17:49

Сообщение kel »

Мой файл exclfrm.inc:
efSumFormatExcel = '[|-]3666666666666666666[|,]99';
efKolFormatExcel = '[|-]3666666666666666666';
efDateFormatExcel = 'DD.MM.YYYY';
efPeriodFormatExcel = 'MM.YYYY';

Инклуд подключен перед .linkform

Ругается "Ожидался оператор .Form .Linkform (стр1поз1exclfrm.inc)
efSumFormatExcel = '[|-]3666666666666666666[|,]99';
^
Ответить