On-line: гостей 1. Всего: 1 [подробнее..]
АвторСообщение



Пост N: 1
Зарегистрирован: 04.09.08
ссылка на сообщение  Отправлено: 04.09.08 13:26. Заголовок: Перенос проекта на новую версию HMG


вынужден поддерживать чужой старый проект на харборе версии ~0.6.5 rc 13 не имея особых навыков в этом.
пробовал устанавливать различные новые версии харбор миниджиюай.
не хочет компилироваться.
постоянно возникают ошибки.
реально ли перенести проект на новую версию.
не могу, например, отдебажить ошибку:

 цитата:

#include "minigui.ch"
&&#INCLUDE "HMGPRINT.CH"
*#INCLUDE "WINPRINT.CH"

SET PROCEDURE TO "HMGPRINT.PRG"
&&SET PROCEDURE TO "WINPRINT.PRG"

#xtranslate VALID <condition> [ MESSAGE <message> ] [<INTERCL>] => ON LOSTFOCUS DoValid ( <condition> , <message> ,<INTERCL> )

**************************
Function DoValid ( Expression , Message , Intercl , NAMEWIN )
NAMEWIND:=NAMEWIN
If _HMG_IsValidInProgres .OR. .NOT. EMPTY(Intercl) .OR. (.NOT. EMPTY(NAMEWIN) .AND. .NOT. ISWINDOWACTIVE(&NAMEWIND))
Return Nil
Else
If EMPTY( Message )
Message := RUS("�…„Ž�“‘’ˆŒŽ… ‡�?—…�ˆ… !")
EndIf
_HMG_IsValidInProgres := .T.
If ( Expression , NIL , ( MsgSTOP (Message,RUS('Ž˜ˆ�Š?')) , This.SetFocus ) )
_HMG_IsValidInProgres := .F.
EndIf
Return Nil
*******************
...
внутри окна
@ INT(MXROW*7/10)+20,INT((MXCOL-260)/2)+160 textbox a1_t value 0;
WIDTH 50 ;
HEIGHT 20;
FONT IFONT2 SIZE ISIZE2;
BACKCOLOR GLCOLB;
NUMERIC INPUTMASK "999";
ON GOTFOCUS SAST_1.B1.ENABLED:=.F.;
ON GOTFOCUS SAST_1.B2.ENABLED:=.F.;
ON LOSTFOCUS DOVALID((DOST->(DBSEEK(SAST_1.A1_T.VALUE))), RUS("�…‚…�…� ˆ„…�’ˆ”ˆŠ?’Ž�"), STO)
...


ошибка в последней строке:
Error E0030 Syntax error: "syntax error at '@'"

Спасибо: 0 
Профиль
Ответов - 17 [только новые]





Пост N: 4
Зарегистрирован: 04.09.08
ссылка на сообщение  Отправлено: 11.09.08 08:23. Заголовок: переписал. используе..


переписал. используется принтер.
на HMG(расширенной версии) работает с такой строчкой:

 цитата:
#INCLUDE "WINPRINT.CH"


нормально печатает.

при попытке откомпилировать на официальном HMG, выводит следующее:

 цитата:

♀Harbour 1.0.0 Intl. (Rev. 9175)
Copyright (c) 1999-2008, http://www.harbour-project.org/
Compiling 'c:\programma.prg'...
Lines 105165, Functions/Procedures 1196
Generating C source output to 'asebwin.c'... Done.
c:\programma.o:programma.c:(.data+0x15a8): undefined reference to `HB_FUN_HBPRINTER'


что же делать? как же быть?

Спасибо: 0 
Профиль
модератор




Пост N: 844
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 11.09.08 11:20. Заголовок: Dimka пишет: при по..


Dimka пишет:

 цитата:
при попытке откомпилировать на официальном HMG


Официальная версия HMG поддерживает только MiniPrint, который является часть ядра этой библиотеки.

Dimka пишет:

 цитата:
что же делать?


Либо переписывать библиотеку HbPrinter (ее второе название - WinPrint) под оф.версию, либо портировать команды HbPrinter в эквивалентный код на MiniPrint

Спасибо: 0 
Профиль



Пост N: 5
Зарегистрирован: 04.09.08
ссылка на сообщение  Отправлено: 11.09.08 12:42. Заголовок: Проект большой, боль..


Проект большой, больше 100 000 строчек и компиляция на Расширенной версии занимает 30 минут, на официальной - 10, но не проходит линковка из-за вышеописанной ошибки. Собственно, из-за этой разницы и хочется заставить работать программу на официальной версии. Возможно ли как-то уменьшить время компиляции расширенной версии? И как проще заставить компилироваться программу под оф. версией, не меняя код самой программы?

Спасибо: 0 
Профиль
модератор




Пост N: 845
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 11.09.08 13:02. Заголовок: Dimka пишет: Возмож..


Dimka пишет:

 цитата:
Возможно ли как-то уменьшить время компиляции расширенной версии?


Конечно!
Для этого надо просто собирать Ваш проект с помощью утилиты minigui\Utils\MPM, создав в ней новый проект .HPJ и подключив в него все свои модули, формы и ресурсы.
Именно так я собираю файл Ide.exe, исходники которого тоже не маленькие

Спасибо: 0 
Профиль



Пост N: 6
Зарегистрирован: 04.09.08
ссылка на сообщение  Отправлено: 11.09.08 13:48. Заголовок: Спасибо! Пробую. За ..


Спасибо! Пробую.
За счет чего уменьшается время компиляции?

UPD. Прочитал ридми. Так и знал, что компилирует только измененные файлы)))
Как теперь уменьшить размер ехешника? Ведь компилятор все, что есть в хмг в него пихает(ибо даже простенький хелловорлд занимает 1.5 мб) ?
105 000 строчек - 3.6 мб

Спасибо: 0 
Профиль
модератор




Пост N: 846
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 11.09.08 13:54. Заголовок: Dimka пишет: За сче..


Dimka пишет:

 цитата:
За счет чего уменьшается время компиляции?


За счет того, что эта утилита позволяет компилировать только изменившиеся/новые модули/формы.


Спасибо: 0 
Профиль



Пост N: 7
Зарегистрирован: 04.09.08
ссылка на сообщение  Отправлено: 11.09.08 15:25. Заголовок: "обычным" сп..


"обычным" способом все компилируется.
добавил все prg-файлы программы. ни форм, ни ресурсов не используется.
выделил файл с функцией Main, include-ами minigui.ch, winprint и моими файлами, как главный.
настройки дефолтные.
нажал Build. ехе-шника не вышло.
вылезло много прежупреждений.

 цитата:

...

C:\TT\ASEBWIN.PRG(37) Warning W0002 Ambiguous reference, assuming memvar: 'PTTRS'

C:\TT\ASEBWIN.PRG(38) Warning W0002 Ambiguous reference, assuming memvar: 'PTRAB'

C:\TT\ASEBWIN.PRG(39) Warning W0002 Ambiguous reference, assuming memvar: 'PTRAB2'

...
...

C:\TT\VIPPROD.PRG(8180) Warning W0001 Ambiguous reference: 'ISIZE2'

C:\TT\VIPPROD.PRG(8180) Warning W0001 Ambiguous reference: 'GLCOLB'

C:\TT\VIPPROD.PRG(8225) Warning W0001 Ambiguous reference: 'PTOPI'

C:\TT\VIPPROD.PRG(8240) Warning W0001 Ambiguous reference: 'STO27'

C:\TT\VIPPROD.PRG(8244) Warning W0001 Ambiguous reference: 'RPO'

C:\TT\VIPPROD.PRG(8245) Warning W0001 Ambiguous reference: 'A7'

...

No code generated.



строки представляют из себя ничем не примечательные присваивания.
как исправить? пробую Compiler warnings = None))))

Спасибо: 0 
Профиль
модератор




Пост N: 847
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 11.09.08 16:25. Заголовок: Dimka пишет: как ис..


Dimka пишет:

 цитата:
как исправить?


Объявить используемые переменные до присвоения им значений как Local, Static или Private, Public

Спасибо: 0 
Профиль



Пост N: 8
Зарегистрирован: 04.09.08
ссылка на сообщение  Отправлено: 12.09.08 13:19. Заголовок: другие ошибки появля..


другие ошибки появляются.
не пойму эту систему. через компил.бат компилируется и работает.
через иде не компилируется выдает одни ошибки, через мпм -другие. ппц.

Спасибо: 0 
Профиль
модератор




Пост N: 848
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 12.09.08 13:46. Заголовок: Dimka пишет: через ..


Dimka пишет:

 цитата:
через иде не компилируется выдает одни ошибки, через мпм -другие


Это еще раз показывает, что без изучения базовых понятий библиотеки эту проблему не решить

Dimka пишет:

 цитата:
через компил.бат компилируется и работает


А Вы попробуйте команду
compile.bat <имя проекта> /e
и тогда увидите сообщение об шибках в файле <имя проекта>.err

Спасибо: 0 
Профиль



Пост N: 9
Зарегистрирован: 04.09.08
ссылка на сообщение  Отправлено: 12.09.08 14:28. Заголовок: почитал мануал. дире..


почитал мануал.
директива include - просто вставляет текст одной подпрограммы в другую.
все-таки заставил мпм компилировать программу. решил проверить, что будет если главный прг чуть-чуть поменять. программа полностью перекомпилируется.

в MPM:
выбран файл asebwin.prg, остальные в другой вкладке - зависимые.

в asebwin.prg:

 цитата:
в начале файла:
#include "minigui.ch"
#include "winprint.ch"
....

....
в конце файла:
#include "blablabla.prg" /* свои модули */
....
#include "blabla.prg"


что же делать? как же быть?

Спасибо: 0 
Профиль
модератор




Пост N: 849
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 12.09.08 14:35. Заголовок: Dimka пишет: что же..


Dimka пишет:

 цитата:
что же делать?


MPM предполагает, что в таком виде

 цитата:
в конце файла:
#include "blablabla.prg" /* свои модули */
....
#include "blabla.prg"


директива #include не используется.

Все модули независимо друг от друга перечисляются в первой вкладке, а затем основной модуль (asebwin.prg) помечается как главный (main).
При такой организации сборки, как у Вас, большого ускорения компиляции не будет, поскольку основной модуль будет перекомпилирован всегда.

Спасибо: 0 
Профиль



Пост N: 11
Зарегистрирован: 04.09.08
ссылка на сообщение  Отправлено: 12.09.08 14:47. Заголовок: 1. нет "нормальн..


1. нет "нормальных" модулей?
которые относительно независимы, имеют свои пространства имен.

2. так я и не понял что же делать((( дайте совет.

3. основной модуль - 3% от всей программы. так что это не страшно.

gfilatov пишет:

 цитата:
MPM предполагает, что в таком виде

цитата:
в конце файла:
#include "blablabla.prg" /* свои модули */
....
#include "blabla.prg"


директива #include не используется.


не понял. можно подробнее?



Спасибо: 0 
Профиль
модератор




Пост N: 850
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 12.09.08 16:18. Заголовок: Dimka пишет: в MPM:..


Dimka пишет:

 цитата:
в MPM:
выбран файл asebwin.prg, остальные в другой вкладке - зависимые.


Если такой вариант устраивает, то - нет проблем

Dimka пишет:

 цитата:
нет "нормальных" модулей


Если все модули подключены к основному с помощью директивы #include, то получается один основной модуль, а это исключает возможность ускорить перекомпиляцию за счет компиляции только изменившихся модулей.

Спасибо: 0 
Профиль



Пост N: 12
Зарегистрирован: 04.09.08
ссылка на сообщение  Отправлено: 13.09.08 12:14. Заголовок: из вышесказанного вы..


из вышесказанного вытекает нижеследующее?
мне надо удалить из основного модуля директивы include, а в мпм выбрать файл asebwin.prg(основной модуль), остальные в другой вкладке - зависимые. так?)

Спасибо: 0 
Профиль



Пост N: 13
Зарегистрирован: 04.09.08
ссылка на сообщение  Отправлено: 15.09.08 09:35. Заголовок: фуххх... справился. ..


фуххх... справился.
теперь компиляция занимает 20 секунд вместо получаса.
а всего-то требовалось посмотреть пример в папке SAMPLE)))))
ну и еще удалить из главного модуля include с второстепенными модулями,
а в них добавить include minigui.ch, winprint.ch и declare-ировать окна, которые определяются не в этом prg-файле.
в общем, сделать все по аналогии с примером.

Спасибо: 0 
Профиль
постоянный участник


Пост N: 477
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 15.09.08 10:09. Заголовок: Dimka пишет: фуххх...


Dimka пишет:

 цитата:
фуххх... справился.


И стоило из-за каких-то 29 минут 40 секунд так париться ?

Спасибо: 0 
Профиль
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 327
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет