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



Пост N: 1
Зарегистрирован: 10.02.08
ссылка на сообщение  Отправлено: 10.02.08 20:36. Заголовок: Хочу попробовать на Harbour/xHarbour


В 90-х годах писал на Clipper 5.1 и вот уже лет 10 не пишу. Встретил людей, для которых
когда-то сделал одну прогу, которая до сих пор пашет. Они просят переписать (и дополнить) её под Win XP. Я им ничего конкретного не пообещал. Сказал, что многое уже
подзабыл и для освоения (профессионально) нового яз-а пограм-я нужно время. «Ты подумай, мы тебя не торопим» - сказали они мне и на этом мы расстались.
Та случайная встреча и знакомство с вашим сайтом разбудили во мне желание вновь писать (или хотя бы переписать старые) программы. Я думаю, в моём положении, Harbour/xHarbour это то, что даст вторую жизнь моим старым программам. Благо исходники сохранились.
После столь долгого перерыва в программировании прошу вашей помощи. Не откажите.
Не судите строго за глупые вопросы.

И так. Это мой старый bat-файл:
@echo off
set path=c:\clip5\bin
set lib=c:\clip5\lib
set include=c:\clip5\include
set obj=c:\clip5\obj
clipper a_1 /n /a /b
clipper a_2 /n /a /b
if not errorlevel 1 rtlink file a_1.obj,a_2.obj,dbfsix.obj output p_1 library dbfsix,clipper,ct150
del *.obj
____________________________

А вот что такое а_1 и а_2
a_1.prg
#include "dbfsix2.ch"
PROCEDURE MAIN1()
SetRDD("DBFSIX")
mai1()
RETURN
#include "мой.ch"
#include "PROG_01.PRG" => mai1()
#include "PROG_02.PRG"
.
.
.
#include "PROG_25.PRG"


a_2.prg
#include "dbfsix2.ch"
PROCEDURE MAIN2()
SetRDD("DBFSIX")
mai2()
return NIL
#include "PROG_26.PRG" => mai2()
#include "PROG_27.PRG"
.
.
.

#include "PROG_50.PRG"


А это bat-файл для Harbour:

set HB_BIN_INSTALL=d:\harbour\bin
set HB_LIB_INSTALL=d:\harbour\lib\
set HB_INC_INSTALL=d:\harbour\include\

%HB_BIN_INSTALL%\harbour aer_1.prg -n -i%HB_INC_INSTALL%
%HB_BIN_INSTALL%\harbour aer_2.prg -n -i%HB_INC_INSTALL%


d:\borland\bcc55\bin\bcc32 -O2 -d -I%HB_INC_INSTALL% -L%HB_LIB_INSTALL% aer_1.c aer_2.c debug.lib vm.lib rtl.lib gtwin.lib lang.lib rdd.lib macro.lib pp.lib dbfntx.lib dbfcdx.lib common.lib codepage.lib d:\harbour\lib\hbsix.lib с:\clip5\lib\dbfsix.lib


d:\borland\bcc55\bin\ilink32 -Gn d:\radk\clip5\obj\dbfsix.obj aer_1.obj aer_2.obj, aaeerr.exe, , d:\harbour\lib\debug.lib d:\harbour\lib\lang.lib d:\harbour\lib\macro.lib d:\harbour\lib\pp.lib d:\harbour\lib\dbfntx.lib d:\harbour\lib\dbfcdx.lib d:\harbour\lib\codepage.lib d:\harbour\lib\libct.lib d:\harbour\lib\harbour-b32.lib d:\harbour\lib\rtl.lib d:\harbour\lib\hbsix.lib с:\clip5\lib\dbfsix.lib
До использовиния ilink32 пример батника взят с сайта А. Кресина.

После выполнения этого батника, вот что получаю:
D:\>d:\harbour\bin\harbour a_1.prg -n -id:\harbour\include\
Harbour Beta build 0.99-3 Intl.
Copyright 1999-2007, http://www.harbour-project.org/
Compiling 'a_1.prg'...


Lines 11842, Functions/Procedures 240
Generating C source output to 'a_1.c'... Done.

D:\>d:\harbour\bin\harbour a_2.prg -n -id:\harbour\include\
Harbour Beta build 0.99-3 Intl.
Copyright 1999-2007, http://www.harbour-project.org/
Compiling 'a_2.prg'...


Lines 4863, Functions/Procedures 86
Generating C source output to 'a_2.c'... Done.

D:\>d:\borland\bcc55\bin\bcc32 -O2 -d -Id:\harbour\include\ -Ld:\harbour\lib\ a_1.c a_2.c debug.lib vm.lib rtl.lib gtwin.lib lang.lib rdd.lib macro.lib pp.lib dbfntx.lib dbfcdx.lib common.lib codepage.lib d:\harbour\lib\hbsix.lib с:\clip5\lib\dbfsix.lib
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
a_1.c:
a_2.c:
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Fatal: Access violation. Link terminated.

D:\>d:\borland\bcc55\bin\ilink32 -Gn с:\clip5\obj\dbfsix.obj a_1.obj a_2.obj, aaeerr.exe, , d:\harbour\lib\debug.lib d:\harbour\lib\lang.lib d:\harbour\lib\macro.lib d:\harbour\lib\pp.lib d:\harbour\lib\dbfntx.lib d:\harbour\lib\dbfcdx.lib d:\harbour\lib\codepage.lib d:\harbour\lib\libct.lib d:\harbour\lib\harbour-b32.lib d:\harbour\lib\rtl.lib d:\harbour\lib\hbsix.lib d:\clip5\lib\dbfsix.lib
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Fatal: Unsupported 16-bit segment(s) in module \drivers\sex\ver1-1\asm\sixdyn.asm

Если я правильно понял – ему не нравится dbfsix.lib. Но я использую в своих прогах
функции этой библиотеки.
И мне ещё не понятно, для чего дважды (в bcc32 и ilink32)прописывать необходимые библ-ки.
Что делаю неправильно? Как правильно составить батник для сборки прог-м?


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 34 , стр: 1 2 All [только новые]


постоянный участник


Пост N: 419
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 10.02.08 22:06. Заголовок: Harbour не может исп..


Harbour не может использовать старые 16bit клипперные библиотеки.
Придется Вам довольствоваться hbsix.lib.

Почитайте документацию к ilink32 и bcc32
В Вашем случае, мне кажется, вызывать ilink32 не нужно - bcc32 сам все сделает.

Что касается того как составлять батник - это зависит от стиля, вкуса, даже наличия времени - главное чтобы это работало.








Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2
Зарегистрирован: 10.02.08
ссылка на сообщение  Отправлено: 10.02.08 22:40. Заголовок: Петр пишет: В Вашем..


Петр пишет:

 цитата:
В Вашем случае, мне кажется, вызывать ilink32 не нужно - bcc32 сам все сделает.



Убрал ilink32.
И опять:
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Fatal: Access violation. Link terminated.
Access violation - нарушение доступа. Кого, куда? Где смотреть?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 3
Зарегистрирован: 10.02.08
ссылка на сообщение  Отправлено: 10.02.08 22:52. Заголовок: Прошу прощения за оп..


Прошу прощения за опечатку. Там, где aer_1 и aer_2 - читать а_1 и а_2.

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




Пост N: 477
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 11.02.08 11:03. Заголовок: Пользуйтесь xHarbour..


Пользуйтесь xHarbour'ом - он более совместим с Клипером. В xHarbour'е есть утилита hbmake.exe - с ее помощью и соберите свой проект, не мучайтесь, утилита сама все сделает.
Как с ней работать - поищите на этом форуме, здесь это обсуждалось. (строка поиска: hbmake )

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


Пост N: 104
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 11.02.08 11:25. Заголовок: Вместо six использ..


Вместо six используй dbfcdx из поставок с xHarbour( вызовы функций только надо поменять - sx_SetTagNo(1)-> DbSetOrder(1) и т.д.) . Батник с Кресинского сайта нормально работает - им постоянно пользуюсь.
Пример использования утилит rmake http://www.paritetsoft.ru/frh.htm.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 4
Зарегистрирован: 10.02.08
ссылка на сообщение  Отправлено: 11.02.08 12:38. Заголовок: Спасибо вам - Петр, ..


Спасибо вам - Петр, Andrej и Vlad04!
Пока всё как в тумане. Буду разбираться
Vlad04! Ссылка на пример использования утилит rmake выдаёт - 404 Not Found.
Кому ещё есть что посоветовать, пишите. Буду очень благодарен.


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 5
Зарегистрирован: 10.02.08
ссылка на сообщение  Отправлено: 11.02.08 14:57. Заголовок: В моей проге на Clip..


В моей проге на Clipper есть такие строки:
(а) @ prow(),pcol() say jj&_i_.[i+1]
(б) @ prow(),pcol() say jj&_i_.+jj&_i_.[i+1]
_i_ - 1 или 2
Компилирую в xHarbour.
Строка (а) проходит, а на (б) выдаёт ошибку:
Error E0030 Syntax error: "parse error at 'JJ&_I_.'"
Почему так и что можно сделать?
В Harbour всё OK!


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


Пост N: 65
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 11.02.08 16:26. Заголовок: TakOj пишет: Ссылка..


TakOj пишет:

 цитата:
Ссылка на пример использования утилит rmake выдаёт - 404 Not Found



Ссылка рабочая. Просто в конце стоит "точка". Нужно без нее.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 6
Зарегистрирован: 10.02.08
ссылка на сообщение  Отправлено: 11.02.08 16:53. Заголовок: PSP пишет: Ссылка р..


PSP пишет:

 цитата:
Ссылка рабочая. Просто в конце стоит "точка". Нужно без нее.


действительно, не заметил. Спасибо!

В строке (б) предыдущего моего поста опечатка (опять).
Правильно так:
(б) @ prow(),pcol() say jj&_i_.+jj&_i_.[i+1]
Но это всё равно не исключает ошибку.

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


Пост N: 66
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 11.02.08 17:09. Заголовок: А можно поподробней ..


А можно поподробней описать что такое jj, _i_, i ?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 7
Зарегистрирован: 10.02.08
ссылка на сообщение  Отправлено: 11.02.08 17:12. Заголовок: Что-то не пойму, что..


Что-то не пойму, что происходит? При отправке сообщения передаются не то, что надо.
Вот в виде рисунка





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


Пост N: 67
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 11.02.08 17:28. Заголовок: Ну, к примеру вот та..


Ну, к примеру вот такое у меня нормально компилируется и выполняется.


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 8
Зарегистрирован: 10.02.08
ссылка на сообщение  Отправлено: 11.02.08 17:47. Заголовок: PSP пишет: А можно ..


PSP пишет:

 цитата:
А можно поподробней описать что такое jj, _i_, i ?





Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 9
Зарегистрирован: 10.02.08
ссылка на сообщение  Отправлено: 11.02.08 18:52. Заголовок: Ошибка Error E0030 ..



Ошибка Error E0030 Syntax error: "parse error at 'JJ&_I_.'" выходит при компилировании в
xHarbour Compiler build 0.92.0 (SimpLex).

Ушла после того, как скомпилировал в xHarbour Compiler build 1.0.0 (SimpLex).


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




Пост N: 479
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.02.08 04:39. Заголовок: Еле нашел то что про..


Еле нашел то что просили:

Порядок работы с HBMake под WinNT/2000/XP такой:

1) Убедится что во вкладке "Переменные среды" (Мой компьютер, свойства, дополнительно)
в окружение PATH был доступ к c:\xHarbour\bin и к c:\BCC55\bin неважно где,
или в "Системные переменные" или в "Переменные среды пользователя".
( Обязательно, я на этом прогорел......)

2) В своей папке проекта делаем несколько папок
OBJ (пустая)
PRG ( туда все исходники *.prg )
RES (туда помещаем файл типа mainto.rc, а в нем единственную строчку
MainIcon ICON "main.ico" - где main.ico ваша иконка, которая будет
значком программы, и в эту же папку помещаем main.ico )
Кстати, оказывается туда можно несколько иконок затолкать, если нужно.


3) Запускаем в корне этих папок команду
hbmake my_app.bc -e (если не запускается, то нет пути к c:\xHarbor\bin)
где my_app.bc имя вашего проекта

4) появится такое окно:
г==== HbMake v1.155 - xHarbour Make Utility Enviroment options =====¬
¦Select the OS Win32Ё Select the C Compiler BCC Ё Graph Lib None Ё¦
¦3rd Party Rdd None Ё [ ] Compress this app [ ] use xHarbour[.dll|.so]¦
¦Obj Files Dir obj-вводим ¦
¦Executable file name my_app [ ] Create dll ¦
¦ ¦

5) далее появится другое окно:
¦ xHarbour Options
¦[ ] Automatic memvar declaration /a [ ] Variables are assumed M-> /v
¦[ ] Debug info /b [ ] Suppress line number information /l
¦[ ] Generate pre-processed output /p [ ] compile module only /m
¦User Defines PRG-вводим User include Path PRG-вводим
¦[ ] Use External Libs [ ] xHarbour FWH
¦Resource file Name: RES-вводим
¦Numbers of source files per line on makefile 5
¦[ ] Use Multi Thread Library Warning Level /w 0

6) Далее появится окно с исходниками,
там нужно нажать клавишу F5, а если нужно убрать из проекта ненужный файл,
то воспользуйтесь пробелом.

7) Далее вам нужно указать головной модуль программы, где стоит main()
¦
¦Inform the main PRG of your application: PRG\MAINTO.PRG
¦

8) далее появится другое окно:
¦ HbMake options
¦[ ] Create #DEPENDS from #include [ ] Scan recursive
¦Excluding these extensions : .ch

НЕ разбирался, что к чему.

9) Далее появится запрос на создание, отвечаем Y.
¦ Build app ? (Y/N)
¦

10) Далее на запрос компиляции отвечаем Y

и ВСЕ !!!

Если нет ошибок, то соберется my_app.exe

В корне папки появиться файл my_app.bc

В Far'e делаем в меню "Ассоциации файлов" вызов на расширение *.bc
г================= Редактирование ассоциаций файлов =================¬
¦ Одна или несколько масок файлов: ¦
¦ *.bc v¦
¦ Описание ассоциации: ¦
¦ xHarbour make file ¦
¦--------------------------------------------------------------------¦
¦ Команда, выполняемая по Enter: ¦
¦ c:\xHarbour\bin\hbmake !.! ¦

Теперь в Far'e нажимаем на my_app.bc клавишей ENTER и проект собираеться.


Но у меня почему то не с первой попытки это вышло.
Если хотите отредактировать заново проект,
то он глючит.
Лучше удалить и заново сделать.
И у меня еще не установился мой главный модуль, мне пришлось
ручками открыть my_app.bc и в объявлениях

OBJFILES = ввести первым obj\mainto.obj
и
PRGFILES = ввести соответственно prg\mainto.prg

И наверно в дальнейшем лучше ручками править этот файл.

Если есть ошибки при компиляции, то можно использовать такой вызов
hbmake my_app.bc -f и в файле my_app.log смотреть их.

Благодарите не меня а наших Гуру на форуме !!!

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 12
Зарегистрирован: 10.07.07
ссылка на сообщение  Отправлено: 12.02.08 10:38. Заголовок: Посмотри еще статью,..


Посмотри еще статью, где олисан мой опыт перевода Clipper-проектов на xHarbour
http://rapidshare.com/files/42684460/Clip2HB.rar

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 11
Зарегистрирован: 10.02.08
ссылка на сообщение  Отправлено: 12.02.08 12:21. Заголовок: Andrey пишет: Еле н..


Andrey пишет:

 цитата:
Еле нашел то что просили:

Порядок работы с HBMake под WinNT/2000/XP такой:



Andrey! Это то, что не открывалось по ссылке
http://www.clipper.fastbb.ru/?1-4-165-00000089-000-0-0-1160258031
в ветке "[x]Harbour -> Нужна помощь - вывести на консольиндикатор расскладки калавиатуры" ?
Спасибо всем гуру и Andrey!
Ко мне можно на "ты".


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 12
Зарегистрирован: 10.02.08
ссылка на сообщение  Отправлено: 12.02.08 12:24. Заголовок: TimTim пишет: Посмо..


TimTim пишет:

 цитата:
Посмотри еще статью, где олисан мой опыт перевода Clipper-проектов на xHarbour



Скачал. Спасибо! Будем изучать.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 18
Зарегистрирован: 10.02.08
ссылка на сообщение  Отправлено: 13.02.08 17:35. Заголовок: Vlad04 пишет: ... ..


Vlad04 пишет:

 цитата:
... Батник с Кресинского сайта нормально работает - им постоянно пользуюсь...


Ничего против не имею.

Vlad04 пишет:

 цитата:
Вместо six используй dbfcdx из поставок с xHarbour( вызовы функций только надо поменять - sx_SetTagNo(1)-> DbSetOrder(1) и т.д.) ...


А как узнать эти соответствия и где можно их посмотреть?
Вот что линкер выдаёт:
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: Unresolved external '_HB_FUN_SETRDD'
Error: Unresolved external '_HB_FUN_SX_SETSCOPE'
Error: Unresolved external '_HB_FUN_SX_CLRSCOPE'
Error: Unresolved external '_HB_FUN__SXCONDSET'
Error: Unresolved external '_HB_FUN_SX_SETTAG'
Error: Unresolved external '_HB_FUN__VDBFSIX'
Чем их заменить? Подскажите, плиз!



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


Пост N: 105
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 14.02.08 08:46. Заголовок: Вообще убрать ссылки..


Вообще убрать ссылки на Six.
SX_SETTAG -> IndexOrd()
вместо SX_SETSCOPE
OrdScope(0,KeyBeg)
OrdScope(1,KeyEnd)

Вот пример старта
*********************
Procedure main
local nWosract:=0,n1:=0,n2:=0,n3:=0 ,DdatBeg
Local nPos:=0 ,sHouse:='',mHouse:={}

REQUEST DBFCDX , DBFFPT
REQUEST HB_CODEPAGE_RU866
hb_SetCodepage("RU866")
set date brit
set century on

DdatBeg:=Ctod('01/06/2007')



sElect 0
// справочник
Use 'GORDATA2' Via "DBFCDX" alias SLAVE
if !File('GORDATA2.CDX')
INDEX ON STRT_CODE2 Tag STRT_CODE
endif
DbsetOrder(1)

sElect 0
**************************

// список клиентов
Use kLIENT Via "DBFCDX" alias Master

Сообщи email вышлю весь пример



Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 19
Зарегистрирован: 10.02.08
ссылка на сообщение  Отправлено: 14.02.08 13:30. Заголовок: Vlad04 пишет: Сообщ..


Vlad04 пишет:

 цитата:
Сообщи email вышлю весь пример



Мой email: takoj3@rambler.ru
Заранее спасибо!

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 20
Зарегистрирован: 10.02.08
ссылка на сообщение  Отправлено: 14.02.08 14:11. Заголовок: TakOj пишет Dima! А ..


TakOj пишет

 цитата:
Dima! А это ваш сайт "http://spravki.net.ru/clipper/"? Если да, то вопрос по ссылке на
"Программа просмотра NG под Windows". Там что то совсем другое.



Вот нашёл, что-то похожее(ehwsetup.exe), а может это и именно то. Может ещё кому надо.
click here

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


Пост N: 70
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 14.02.08 16:19. Заголовок: Вот ЗДЕСЬ посмотри. ..


Вот ЗДЕСЬ посмотри. Вьювер WEG.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 21
Зарегистрирован: 10.02.08
ссылка на сообщение  Отправлено: 14.02.08 16:48. Заголовок: PSP пишет: Вот ЗДЕС..


PSP пишет:

 цитата:
Вот ЗДЕСЬ посмотри. Вьювер WEG.



Спасибо! Отличный вьювер, да и сам сайт интересный. Вот только с англ. никак не подружусь

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 22
Зарегистрирован: 10.02.08
ссылка на сообщение  Отправлено: 16.02.08 15:37. Заголовок: Здравствуйте! В SIX..


Здравствуйте!

В SIX Drive для команды INDEX есть такая конструкция:


 цитата:
INDEX ON <expKey> TAG <tagname> [OF <cdxname>] ;
[FOR <expCondition>] ;
[WHILE <while>] ;
[ASCENDING | DESCENDING];
[UNIQUE] ;
[EMPTY] ;
[SUBINDEX] ;
[OPTION <expUDF> [STEP <nRecs>]]

SUBINDEX позволяет Вам при создании нового индексного файла оставить
текущий индекс активным. Это дает Вам возможность создавать "суб-индексы"
основанные на других условных индексах. Очень удобно в сетях или на
больших файлах данных!



Меня интересует параметр SUBINDEX. Чем и как его можно заменить в xHarbour?

Спасибо!



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


Пост N: 435
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 16.02.08 16:46. Заголовок: Присмотритесь к USE..


Присмотритесь к USECURRENT
The option instructs the database driver to use the current logical order of records for navigating the database during index creation. The logical order is determined by the controlling index and the SET SCOPE restriction. When the USECURRENT clause is omitted, the records in the current work area are evaluated in physical order.

USECURRENT указывает драйверу таблицы использовать текущий логический порядок записей для перемещения по таблице во время создания индекса. Логический порядок определяется управляющим индексом и ограничениями SET SCOPE. Если предложение USECURRENT не указано, записи в текущей рабочей области обрабатываются в физическом порядке.


Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 16.02.08 17:11. Заголовок: TakOj пишет: Спасиб..


TakOj пишет:

 цитата:
Спасибо!


ORDKEYADD()
:)

Спасибо: 0 
Цитата Ответить



Пост N: 23
Зарегистрирован: 10.02.08
ссылка на сообщение  Отправлено: 17.02.08 13:18. Заголовок: Петр и ММК, спасибо ..


Петр и ММК, спасибо вам за подсказку! Буду пробовать.
У меня ещё вопрос. Как сделать в xHarbour, чтобы #include "мой.ch", определённый
в одном месте, был доступе в нескольких prg-файлах. И, если это возможно,
приведите, пожалуйста, небольшой пример.
Заранее спасибо!


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


Пост N: 73
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 17.02.08 15:45. Заголовок: Опция -i указывает к..


Опция -i указывает компилятору путь(ти) к include-файлам. Можно через ; указать несколько путей.
Пример из батника для сборки:
SET MG_ROOT=c:\minigui
SET MG_HRB=c:\xharbour
%MG_HRB%\bin\harbour Main.prg -n -i%MG_HRB%\include;%MG_ROOT%\include


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


Пост N: 436
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 17.02.08 16:43. Заголовок: Создайте папку в кот..


Создайте папку в которую поместите сл.файлы с таким содержимым

my_file1.prg

#ifdef TEST

procedure main
?sub1()
?sub2()

#endif


my_file2.prg

#ifdef TEST

procedure sub1()
return "sub1()"

#endif


my_file3.prg

#ifdef TEST

procedure sub2()
return "sub2()"

#endif


list.bat
dir > my.proj *.prg /B /A:-D

build.bat

set HB_BIN_INSTALL=c:\xharbour\bin
set HB_LIB_INSTALL=c:\harbour\lib\
set HB_INC_INSTALL=c:\xharbour\include\

for /F "usebackq eol=# tokens=1 delims=." %%i in (my.proj) do %HB_BIN_INSTALL%\harbour %%i -i%HB_INC_INSTALL% -n -p -u+%HB_INC_INSTALL%my.ch

del *.c

my.ch
#define TEST

Поместите my.ch в папку определенную HB_INC_INSTALL

Запустите на исполнение сначала list.bat, а потом build.bat.
Откройте и посмотрите любой ppo файл и убедитесь в том, правильно ли прошел процесс компиляции.




Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 24
Зарегистрирован: 10.02.08
ссылка на сообщение  Отправлено: 17.02.08 20:02. Заголовок: Петр пишет: Создайт..


Петр пишет:

 цитата:
Создайте папку в которую поместите сл.файлы с таким содержимым ...



Петр, я сделал всё как вы описали.
list.bat отрабатывает ОК!
build.bat выдает следующее:



К моему стыду, я никогда не работал с командой FOR, но интуитивно догадываюсь,
что происходит в строке с FOR build.bat–файла.

Создал такой батник (опираясь на build.bat) :

set HB_BIN_INSTALL=c:\xharbour\xharbour\bin
set HB_LIB_INSTALL=c:\xharbour\xharbour\lib\
set HB_INC_INSTALL=c:\xharbour\xharbour\include\

%HB_BIN_INSTALL%\harbour my_file1.prg my_file2.prg my_file3.prg -n -p -u -i%HB_INC_INSTALL%my.ch


d:\borland\bcc55\bin\bcc32 -O2 -d -I%HB_INC_INSTALL% -L%HB_LIB_INSTALL% my_file1.c my_file2.c my_file3.c @l_lib.lnk

l_lib.lnk:
debug.lib vm.lib gtwin.lib rtl.lib pcrepos.lib codepage.lib lang.lib rdd.lib
macro.lib dbfntx.lib dbfcdx.lib dbffpt.lib hbsix.lib common.lib ct.lib

Получил рро-файлы, но они пустые. Это нормально?
Ехе-файл ничего не выводит на экран.
Что деляю неправильно?


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


Пост N: 437
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 17.02.08 20:34. Заголовок: Вы скопировали текст..


Вы скопировали текст из страницы в батник и забыли при этом удалить пробелы в конце строк, поэтому у Вас все так и получилось.

Обязательно после
set HB_BIN_INSTALL=c:\xharbour\xharbour\bin
set HB_LIB_INSTALL=c:\xharbour\xharbour\lib\
set HB_INC_INSTALL=c:\xharbour\xharbour\include\
поудаляйте все пробелы в конце строк, это особенность работы bat файлов.

И вторая ошибка
%HB_BIN_INSTALL%\harbour my_file1.prg my_file2.prg my_file3.prg -n -p -u+%HB_INC_INSTALL%my.ch

Именно -u+мой.ch Вам и нужен, а FOR - это так, для удобства



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


Пост N: 438
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 17.02.08 20:43. Заголовок: TakOj пишет: Получи..


TakOj пишет:

 цитата:
Получил рро-файлы, но они пустые. Это нормально?



Ну и конечно это не нормально
Т.е. я хочу сказать, что это не тот результат, на который мы вправе рассчитывать

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 25
Зарегистрирован: 10.02.08
ссылка на сообщение  Отправлено: 17.02.08 21:30. Заголовок: Петр пишет: Т.е. я ..


Петр пишет:

 цитата:
Т.е. я хочу сказать, что это не тот результат, на который мы вправе рассчитывать



Всё получилось!

Петр, большое спасибо за столь подробный разбор моих ошибок!
После первой победы – есть желание двигаться дальше.




Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 34 , стр: 1 2 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

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