Страница 1 из 1

Ошибка при компиляции проекта

Добавлено: 06 июн 2006, 16:16
s2176
Добрый день всем!
В ARD-отчете вызываю маленький интерфейс для ввода месяца и года.
Отчет и интерфейс лежат в разных файлах.
Если компилирую по очереди, сначала интерфейс, потом отчет, все проходит нормально, и все работает. Но пытаюсь объединить в проект (делаю это в первый раз :o ) - компилятор ругается на параметры. Пишет, что "элемент диалога отсутствует или имеет неправильный размер".

Текст файла проекта:

#make "god_mes.vip"
#make "ESN_mvz_proba.SLK"

bat'ник:

p:\gal712\exe\vip.exe %1 /R:proba.res /c:fcom.cfg /m /a

fcom.cfg:

/i+
/U:22
/P:2
/L+
[database]
databasename=o:\data712\data_s7\
[common]
trimfilename=true
[LicParam]
LicFileName=d:\sup712\sup_exe\LICENSE.LIC
[HardwareKey]
SharedPath=\\galaxy\gal582\key

Помогите разобраться, пожалуйста!

Добавлено: 07 июн 2006, 14:12
Maverick
исходник god_mes.vip в студию плз...

Добавлено: 07 июн 2006, 15:47
s2176
Он прост, как песня!

getmesYear dialog
fields
god: string;
mes: string;
buttons
cmOK, default;

<<'Выберите месяц и год'

Год: .@@@@@
Месяц:.@@@

<. OK .>
>>

а вызов его из формы выглядит так:
rundialog(getmesYear,god,mes);
переременные в форме описаны так:
god, mes: string;

Добавлено: 07 июн 2006, 16:20
Maverick
:grin:
а) диалоги (а это не интерфейсы) не компилируются в файлах VIP (компилер запускает интертрепатор разбора языка для вип).
б) для диалога в файле проекта нужно указывать #include вместо #make

Добавлено: 07 июн 2006, 16:27
s2176
я и думала, что ошибка совсем простая, но чтоб такая простая :D !
Спасибо большое!

Добавлено: 08 июн 2006, 09:04
s2176
Увы, сегодня ошибка повторилась...
Хотя я исправила
#make "god_mes.vip" на
#include god_mes.vip
Я заметила, что она возникает только при первой компиляции.
Если я компилирую сразу же еще раз, то ошибка не возникает.
Может, на нее просто не обращать внимания?

И попутно еще один вопрос:
Я хочу в проекте описать свои таблицы (для этого он мне собственно и нужен). Я могу в ARD отчете заполнять эти таблицы, и потом в нем же использовать занесенную информацию? Синтаксис такой же, как в интерфейсах:
insert current <моя_таблица>
if getfirst <моя_таблица> = tsOk ?

Добавлено: 08 июн 2006, 09:15
Алексей
Я думаю инклюд надо вперёд ставить, т.к. диаолог потом используется в випе. (расширение *.dlg делайте, что бы понятно было)

Т.е. в проекте сначала инклюд диаолога, потом мэйк интерфейса.

про таблицы - да.

Добавлено: 08 июн 2006, 09:37
s2176
Ничего не помогает :sad:
Переименовала я файл, теперь расширение - *.dlg.
В файле проекта у меня идет сначала описание структуры таблиц,

Table Struct <моя_таблица>
( имя1 : тип,
....
имяN : тип
)
With INDEX
( ind1 = ...
);

потом:

#include god_mes.dlg
#make "ESN_mvz_proba.SLK"

а ошибка все та же, ругается на параметры
"Для 1-го формального параметра элемент диалога отсутствует или имеет неправльный размер(стр. .., поз... в ESN_mvz_proba.SLK)"

Добавлено: 08 июн 2006, 10:54
Chak
Переменные god и mes в отчете (не в диалоге) имеют тип String? Длина строки у них случайно не задана? Я на такую ошибку нарывался, когда в диалоге задал тип переменной String[34] , а в отчете - просто String. Типы параметров в диалоге и переменных, передаваемых при вызове диалога, должны в точности совпадать.

Добавлено: 08 июн 2006, 11:03
s2176
На такие грабли я тоже уже наступала, так что здесь все описано абсолютно одинаково: string, без указания длины.

Добавлено: 08 июн 2006, 11:15
edward_K
Я бы год и месяц объявил как word и не парился.
со string в диалоге действительно могут идти предупреждения(!).
попробуйте все таки задать в форме и в диалоге string[100]

Добавлено: 08 июн 2006, 11:23
s2176
хм, указание размера помогло! :cool:
Компилируется теперь с первого раза!
Благодарю, edward_K!