Форум » [x]Harbour » Перевожу Clipper-овский проект в Harbour » Ответить

Перевожу Clipper-овский проект в Harbour

mikeas: Добрый день, господа. Начал переводить проект с CLIPPERa(5.2Е) в Harbour и сразу же столкнулся с проблемой: undefined reference to `HB_FUN_TOKEN' ... и т.д. Пользуюсь инструкцией "Harbour - шаг за шагом" Александра Кресина, т.е. использую версию "harbour-3.0.0-win.exe". Поискал здесь на форуме похожую ситуацию. Нашел здесь: "unresolved external _HB_FUN_", но похоже не мой случай, до линковки дело еще не доходит. Куда копать? Подскажите, пожалуйста.

Ответов - 69, стр: 1 2 3 4 All

mikeas: Еще обнаружил такой эффект: оказывается если установить SCOPE без SIXа, то фунуции SIXа: sx_keyno() - тек.номер записи в индексе и sx_keycount()-кол-во записей в индексе показывают правильные числа с учетом установленного SCOPE. Т.е. можно рискнуть и функции SIXа(хотя бы эти) не переназначать! И это радует :)

Dima: mikeas пишет: sx_keyno() - тек.номер записи в индексе и sx_keycount()-кол-во записей в индексе это все есть в DBFCDX DbOrderInfo(DBOI_KEYCOUNT) DbOrderInfo(DBOI_KEYNO)

mikeas: Очередная засада: не срабатывает команда KEYBOARD <cSTRING> внутри GETа. Пока не знаю что и предпринять :( М.б. у кого была такая же беда, сориентируйте, плиз.


azoo: mikeas , пример кода покажите. В каком смысле "внутри" ?

Dima: mikeas пишет: не срабатывает команда KEYBOARD <cSTRING> пробни Hb_keyins

petr707: HB_KEYPUT - тоже можно

mikeas: Оказалось дело не в KEYBOARDe. Привожу ниже пример. В функции HELP заменил отсутствующую в Харборе функцию CSETALL на самодельную. И она сделала свое черное дело - отключила как то вставку по команде KEYBOARD "123qwe". Убираю восстановление всех установок(// CSETALL(cur_set)) все работает! Теперь думаю что не так, чем бы CSETALL() заменить? [pre2]#include "Inkey.ch" #include "Set.ch" procedure tstboardk() PRIV p1:=" " SET KEY K_F1 TO help CLEAR @ 09, 10 SAY "->" GET p1 READ RETURN ******************************* FUNCTION help() PARAMETERS prog_name, line_num, input_var, nrec PRIV cur_set cur_set = CSETALL() KEYBOARD "123qwe" // CSETALL(cur_set) RETURN NIL ******************************* FUNCTION CSetAll( aNewSets ) LOCAL aCurrentSets[_SET_COUNT], nCurrent IF ( aNewSets != NIL ) // Set new and return current FOR nCurrent := 1 TO _SET_COUNT aCurrentSets[nCurrent] := ; SET(nCurrent, aNewSets[nCurrent]) NEXT ELSE FOR nCurrent := 1 TO _SET_COUNT aCurrentSets[nCurrent] := SET(nCurrent) NEXT ENDIF RETURN (aCurrentSets) [/pre2]

Dima: mikeas пишет: Теперь думаю что не так, чем бы CSETALL() заменить? Не понял для чего она в этой задаче , тем более что без нее все работает ? В функции help() ни чего же не меняется в плане установок.

mikeas: Это в примере ничего не меняется. В реале меняется. Csetall применял от лени, каюсь и выбрасываю ее. Посмотрел внимательней в HELP-е родном надо только сохранять softseek и cursor. Едем дальше :)

PSP: mikeas пишет: Убираю восстановление всех установок(// CSETALL(cur_set)) все работает! В числе прочих SET-ов там есть _SET_TYPEAHEAD, при установке которого происходит очистка буфера клавиатуры. Цитата: "When executed, SET TYPEAHEAD clears the keyboard buffer and sets the size to <nKeyboardSize>." http://www.ousob.com/ng/53guide/ngf1c3d.php

mikeas: PSP, ОК, спасибо! Продолжаю продвигаться дальше через мелкие, но вредные ляпы :) 1) Обнаружил в вызове MEMOEDIT разночтение в параметрах: в Клиппере отсутствующую пользовательскую функцию задавал как "..,'',...", а Харбор потребовал "...,,..." 2) Столкнулся: Клиппер все имена файлов создавал в верхнем регистре, Харбор так как задашь!

mikeas: Еще одна печаль с докой. Думал вот здесь уж точно все есть: http://www.elektrosoft.it/tutorials/Harbour-Reference-Guide/harbour-reference-guide.htm Не нашел MEMOEDIT()! :( Надыбал старинный NG-справочник Clipper 5.3, но это компромис :(

Dima: mikeas пишет: Не нашел MEMOEDIT Он слегка сырой я бы сказал. Используй поиск на форуме по MEMOEDIT или (что лучше) HBEDITOR Справку можно взять тут __http://www.spb4plus.ru/old/comment/reply/114 , в самом низу линк на rar архив

nick_mi: Вместе с МиниГуи поставляется HELP для HARBOUR , там тоже есть описание memoedit

mikeas: Еще обнаружил: ATREPL(aCH[i,1],@buf,aCH[i,2]) -не сработало в Harbour Ничего не меняется, хотя в Клиппере работает. Пришлось заменить на: buf:=STRTRAN(buf,aCH[i,1],aCH[i,2]) В HELP для HARBOUR из МиниГуи нашел и MEMOEDIT, и ATREPL (где как раз обнаружил отсутствие возможности задать параметр по ссылке - @buf ) А что за файлы *.hbd в C:\hb32\doc ? Подозреваю, что документация/описание. Ими как-то можно пользоваться? Чем их открывать?

petr707: Поиск на этом форуме по "hbd" дает ссылку click here

mikeas: petr707, пошел по ссылке. Прочитал. Теперь не найду HBIDE в C:\hb32\contrib Забыли положить? Не там ищу? Или чего то не понял?

Dima: mikeas пишет: Теперь не найду HBIDE в C:\hb32\contrib [pre2] 2012-09-27 12:11 UTC+0200 Viktor Szakats (vszakats.net/harbour) - contrib/hbide - contrib/hbqt - contrib/hbxbp - deleted hbqt, hbxbp, hbide as final step of contrib split to separate project. find them in this (temporary) repository: http://sourceforge.net/projects/qtcontribs/ or checkout from Harbour repository using: svn co -r 18153 https://harbour-project.svn.sourceforge.net/svnroot/harbour-project/trunk/harbour [/pre2]

mikeas: Dima, спасибо, но это для меня что-то слишком слжно, пока. Ладно, фиг с ними с .hbd файлами.

mikeas: Обнаружил совсем не хороший эффект, который заключается в следующем: При выполнении комманды: USE (WorkPath+"w1") EXCLUSIVE NEW Харбор пытается открыть одноименный индекс CDX для открываемого файла, а у меня такого не предусмотрено! Как бы отказаться от такого автоматического открытия индекса? Нет ли какого переключателя? Я то в Клиппере использовал SIX и IDX индексы, которые такого не предусмативают. Как выход посматриваю на переход к ntx, но по моему в них нет возможности условного индекса и SCOPE. Прямо караул!



полная версия страницы