Автор | Сообщение |
|
| |
Пост 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 '@'"
|
|
|
Ответов - 17
[только новые]
|
|
|
| |
Пост N: 4
Зарегистрирован: 04.09.08
|
|
Отправлено: 11.09.08 08:23. Заголовок: переписал. используе..
переписал. используется принтер. на HMG(расширенной версии) работает с такой строчкой: нормально печатает. при попытке откомпилировать на официальном 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' |
| что же делать? как же быть?
|
|
|
|
| модератор
|
Пост N: 844
Зарегистрирован: 25.05.05
|
|
Отправлено: 11.09.08 11:20. Заголовок: Dimka пишет: при по..
Dimka пишет: цитата: | при попытке откомпилировать на официальном HMG |
| Официальная версия HMG поддерживает только MiniPrint, который является часть ядра этой библиотеки. Dimka пишет: Либо переписывать библиотеку HbPrinter (ее второе название - WinPrint) под оф.версию, либо портировать команды HbPrinter в эквивалентный код на MiniPrint
|
|
|
|
| |
Пост N: 5
Зарегистрирован: 04.09.08
|
|
Отправлено: 11.09.08 12:42. Заголовок: Проект большой, боль..
Проект большой, больше 100 000 строчек и компиляция на Расширенной версии занимает 30 минут, на официальной - 10, но не проходит линковка из-за вышеописанной ошибки. Собственно, из-за этой разницы и хочется заставить работать программу на официальной версии. Возможно ли как-то уменьшить время компиляции расширенной версии? И как проще заставить компилироваться программу под оф. версией, не меняя код самой программы?
|
|
|
|
| модератор
|
Пост N: 845
Зарегистрирован: 25.05.05
|
|
Отправлено: 11.09.08 13:02. Заголовок: Dimka пишет: Возмож..
Dimka пишет: цитата: | Возможно ли как-то уменьшить время компиляции расширенной версии? |
| Конечно! Для этого надо просто собирать Ваш проект с помощью утилиты minigui\Utils\ MPM, создав в ней новый проект .HPJ и подключив в него все свои модули, формы и ресурсы. Именно так я собираю файл Ide.exe, исходники которого тоже не маленькие
|
|
|
|
| |
Пост N: 6
Зарегистрирован: 04.09.08
|
|
Отправлено: 11.09.08 13:48. Заголовок: Спасибо! Пробую. За ..
Спасибо! Пробую. За счет чего уменьшается время компиляции? UPD. Прочитал ридми. Так и знал, что компилирует только измененные файлы))) Как теперь уменьшить размер ехешника? Ведь компилятор все, что есть в хмг в него пихает(ибо даже простенький хелловорлд занимает 1.5 мб) ? 105 000 строчек - 3.6 мб
|
|
|
|
| модератор
|
Пост N: 846
Зарегистрирован: 25.05.05
|
|
Отправлено: 11.09.08 13:54. Заголовок: Dimka пишет: За сче..
Dimka пишет: цитата: | За счет чего уменьшается время компиляции? |
| За счет того, что эта утилита позволяет компилировать только изменившиеся/новые модули/формы.
|
|
|
|
| |
Пост 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))))
|
|
|
|
| модератор
|
Пост N: 847
Зарегистрирован: 25.05.05
|
|
Отправлено: 11.09.08 16:25. Заголовок: Dimka пишет: как ис..
Dimka пишет: Объявить используемые переменные до присвоения им значений как Local, Static или Private, Public
|
|
|
|
| |
Пост N: 8
Зарегистрирован: 04.09.08
|
|
Отправлено: 12.09.08 13:19. Заголовок: другие ошибки появля..
другие ошибки появляются. не пойму эту систему. через компил.бат компилируется и работает. через иде не компилируется выдает одни ошибки, через мпм -другие. ппц.
|
|
|
|
| модератор
|
Пост N: 848
Зарегистрирован: 25.05.05
|
|
Отправлено: 12.09.08 13:46. Заголовок: Dimka пишет: через ..
Dimka пишет: цитата: | через иде не компилируется выдает одни ошибки, через мпм -другие |
| Это еще раз показывает, что без изучения базовых понятий библиотеки эту проблему не решить Dimka пишет: цитата: | через компил.бат компилируется и работает |
| А Вы попробуйте команду compile.bat <имя проекта> /e и тогда увидите сообщение об шибках в файле <имя проекта> .err
|
|
|
|
| |
Пост 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" |
| что же делать? как же быть?
|
|
|
|
|
| модератор
|
Пост N: 849
Зарегистрирован: 25.05.05
|
|
Отправлено: 12.09.08 14:35. Заголовок: Dimka пишет: что же..
Dimka пишет: MPM предполагает, что в таком виде цитата: | в конце файла: #include "blablabla.prg" /* свои модули */ .... #include "blabla.prg" |
| директива #include не используется. Все модули независимо друг от друга перечисляются в первой вкладке, а затем основной модуль (asebwin.prg) помечается как главный (main). При такой организации сборки, как у Вас, большого ускорения компиляции не будет, поскольку основной модуль будет перекомпилирован всегда.
|
|
|
|
| |
Пост N: 11
Зарегистрирован: 04.09.08
|
|
Отправлено: 12.09.08 14:47. Заголовок: 1. нет "нормальн..
1. нет "нормальных" модулей? которые относительно независимы, имеют свои пространства имен. 2. так я и не понял что же делать((( дайте совет. 3. основной модуль - 3% от всей программы. так что это не страшно. gfilatov пишет: цитата: | MPM предполагает, что в таком виде цитата: в конце файла: #include "blablabla.prg" /* свои модули */ .... #include "blabla.prg" директива #include не используется. |
| не понял. можно подробнее?
|
|
|
|
| модератор
|
Пост N: 850
Зарегистрирован: 25.05.05
|
|
Отправлено: 12.09.08 16:18. Заголовок: Dimka пишет: в MPM:..
Dimka пишет: цитата: | в MPM: выбран файл asebwin.prg, остальные в другой вкладке - зависимые. |
| Если такой вариант устраивает, то - нет проблем Dimka пишет: Если все модули подключены к основному с помощью директивы #include, то получается один основной модуль, а это исключает возможность ускорить перекомпиляцию за счет компиляции только изменившихся модулей.
|
|
|
|
| |
Пост N: 12
Зарегистрирован: 04.09.08
|
|
Отправлено: 13.09.08 12:14. Заголовок: из вышесказанного вы..
из вышесказанного вытекает нижеследующее? мне надо удалить из основного модуля директивы include, а в мпм выбрать файл asebwin.prg(основной модуль), остальные в другой вкладке - зависимые. так?)
|
|
|
|
| |
Пост N: 13
Зарегистрирован: 04.09.08
|
|
Отправлено: 15.09.08 09:35. Заголовок: фуххх... справился. ..
фуххх... справился. теперь компиляция занимает 20 секунд вместо получаса. а всего-то требовалось посмотреть пример в папке SAMPLE))))) ну и еще удалить из главного модуля include с второстепенными модулями, а в них добавить include minigui.ch, winprint.ch и declare-ировать окна, которые определяются не в этом prg-файле. в общем, сделать все по аналогии с примером.
|
|
|
|
| постоянный участник
|
Пост N: 477
Зарегистрирован: 09.10.06
|
|
Отправлено: 15.09.08 10:09. Заголовок: Dimka пишет: фуххх...
Dimka пишет: И стоило из-за каких-то 29 минут 40 секунд так париться ?
|
|
|
|