Форум » GUI » первые непонятки » Ответить

первые непонятки

СевДон: Здравия желаю уважаемым профи! Помогите,плз, новичку. Качнул 85-й релиз MiniGUI + xMate. На первой же проге вылезли ошибки: Проект: z1_HB, Инструментарий: BccHbMGui: [1]:Harbour.Exe lib_View.PRG /m /n /w0 /es0 /iD:\xMate\project\z1_HB /iC:\MiniGui\Harbour\Include /iC:\miniGUI\INCLUDE /dHB_API_MACROS /dHB_FM_STATISTICS_OFF /dHB_STACK_MACROS /oObj\lib_View.c Harbour 2.1.0beta2 (Rev. 15030) Compiling 'lib_View.PRG'... lib_View.PRG(339) Error E0030 Syntax error "syntax error at 'б'" lib_View.PRG(344) Error E0030 Syntax error "syntax error at 'б'" lib_View.PRG(380) Error E0010 ENDIF does not match IF 3 errors No code generated. вот этот кусок кода: [pre] /**** * печать любого файла */ function FPrint( сFileName ,lPrint) // стр 339 local n := 0, nSize, oError, lMore := .T., cBuffer := space( 256 ) local nHandle ,bOldError:=errorblock({|o| ErrorPrint(o) }) lPrint:=iif(lPrint==Nil,.F.,lPrint) if PrtReady() if ( nHandle := fopen( сFileName ) ) == -1 // стр 344 F_Zapros(,,,{ "Файл " + cFileName+" не найден !" }) else Mess_24Line({" Esc~-выход"}) ; lPrint:=.T. nSize := fseek( nHandle, 0, 2 ) fseek( nHandle, 0, 0 ) n := fread( nHandle, @cBuffer, 256 ) set device to print ; set printer to prn setprc(0,0) do while lMore if inkey() == 27 .and. YesNo("Пpеpвать печать ?") @ prow(),pcol() say chr(24) ; lPrint:=.F. exit endif // cBuffer := strtran(cBuffer,chr(12)+CRLF,chr(12)) begin sequence if n < 256 @ prow(),pcol() say substr( strtran(cBuffer,chr(12)+CRLF,chr(12)), 1, n ) lMore = .F. else @ prow(),pcol() say strtran(cBuffer,chr(12)+CRLF,chr(12)) endif recover using oError if YesNo("Пpинтеp не готов ! Пpодолжить ?") loop else exit endif end cBuffer := space( 256 ) n := fread( nHandle, @cBuffer, 256 ) enddo fclose( nHandle ) set printer to ; set device to screen Mess_24Line() endif endif // стр 380 errorblock( bOldError ) // восстановить пpежний обpаботчик ошибок return [/pre] Подумал что нарвался на зарезервированое название функции в Харборе (FPrint), переименовал – не помогло. Вопросы: 1.Где мона посмотреть коды ошибок и зарезервированные слова и имена фунций 2.Шо такое “REQUEST”

Ответов - 29, стр: 1 2 All

Ster: СевДон пишет: if YesNo("Пpинтеp не готов ! Пpодолжить ?") loop else exit endif end Для начала - убери end

СевДон: Ster пишет: Для начала - убери end зачем? он заканчивает if PrtReady() этот модуль создан и отлажен есчо в прошлом веке и юзается во всех моих прогах на связке Clipper 5.01 + RtLink + немного CT2.lib

Dima: Строка function FPrint( cFileName ,lPrint) Буква с в cFileName русская И тут if ( nHandle := fopen( cFileName ) ) == -1 ЗЫ А ClipperУ оказалось по барабану (кушает все)


СевДон: сенкс! бум знать шо харбор более привередливый теперь все оттранслировалось, зато линкёр тормознул: Fatal: Unable to open file 'RTL.LIB' перерыл весь комп -- и в сам деле нетути такой либ! в инете сходу не нарыл, где искать и хто виноват? ЗЫ здесь при вводе ответа всё подчеркивает красным (типа спелчекер ругается) какую кнопку ткнуть?

alkresin: Fatal: Unable to open file 'RTL.LIB' В Harbour - hbrtl.lib

Andrey: СевДон пишет: сенкс! бум знать шо харбор более привередливый Нет он более правильный ! После него ошибок меньше !

СевДон: Andrey пишет: Нет он более правильный ! После него ошибок меньше ! согласен: ща он нашел вызов DefPathToEnemy() а я протупил и объявил ее как DefPathToEnemyDbf() Клиппер не поперхнулся а Харбор строго указал Ну а по поводу не нахождения библиотек пришлось перечитать топик От Clipper к [x]Harbour через xMate, поменял файл среды, всё нашлось за исключением 3х тулзовских функций: sound() kbdemulate() isega() // ну эту я уже пожалуй грохну да и звук мона заменить а вот шо делать с эмуляцией клавы?

Dima: СевДон пишет: kbdemulate() Не заменит ее команда KEYBOARD ?

СевДон: заменил/выкинул непотребное, всё компильнулось/слинковалось, запускаю экзешник в предвкушении... увы, на экране ничё не появляется, я с ходу решил шо промахнулся, есчо раз запускаю, опять ничего смотрю в диспетчере задач есть моё чудо и аж 2 раза и система начала притормаживать... единственное что -- это в одном файле 2 предупреждения типа: lib_Dbf.PRG(319) Warning W0030 Duplicate variable 'I' in nested FOR loop [pre] /* * Заблокировать много баз */ func MenyDbfLock(aDbf) local lRetu := .T., i,ii,j, aHandlOpenDbf:={}, nOldSelect := select() for i:=1 to len(aDbf) if (j := select(aDbf[bd_ALIAS_E])) <> 0 // она уже открыта dbselectarea(aDbf[bd_ALIAS_E]) if MyFilLock() // заблокировали очередную aadd(aHandlOpenDbf,j) else // не удался очередной open -- закрыть то что удалось ранее for i:=1 to len(aHandlOpenDbf) // 319 стр select(aHandlOpenDbf) ; dbunlock() next lRetu := .F. ; exit endif endif next select(nOldSelect) retu (lRetu) [/pre] мож есть у кого мнение?

Andrey: Нет, давай проект. Самому делать тест некогда !

Pasha: Если это не гуевая программа, то в начале вставьте 2 строки: REQUEST HB_GT_WIN REQUEST HB_GT_WIN_DEFAULT

СевДон: Андрей, Паша, спасибо шо откликнулись, но у меня бухи исчезают с работы очень быстро Пока переписывался стукнуло 5 часов и всё, двери закрываются. Не дали времени скинуть на флешку проект. До понедельника...

СевДон: Pasha пишет: Если это не гуевая программа, то в начале вставьте 2 строки: REQUEST HB_GT_WIN REQUEST HB_GT_WIN_DEFAULT Вставил, линкер дает ошибки: Error: Unresolved external '_HB_FUN_HB_GT_WIN' referenced from D:\XMATE\PROJECT\Z1_HB\OBJ\MAIN.OBJ Error: Unresolved external '_HB_FUN_HB_GT_WIN_DEFAULT' referenced from D:\XMATE\PROJECT\Z1_HB\OBJ\MAIN.OBJ

Pasha: СевДон пишет: Вставил, линкер дает ошибки: Error: Unresolved external '_HB_FUN_HB_GT_WIN' referenced from D:\XMATE\PROJECT\Z1_HB\OBJ\MAIN.OBJ Error: Unresolved external '_HB_FUN_HB_GT_WIN_DEFAULT' referenced from D:\XMATE\PROJECT\Z1_HB\OBJ\MAIN.OBJ Необходимо линкеру указать библиотеку gtwin.lib

СевДон: линкер пропустил но прога всё равно вешается как запустить прогу под отладчиком?

Andrey: СевДон пишет: линкер пропустил но прога всё равно вешается Сделай сначала маленькую тестовую программу ! Если не пойдет тест, то высылай проект, подскажу что и как ! А так ОЧЕНЬ тяжело понять что у тебя установлено ! И будешь сам очень долго биться впустую....

СевДон: 1. прога где юзаются дбфки и идет сброс в текстовый файл нормально отработала. 2. с простым Getом уже не взлетает (даже если ставлю inkey(0) перед очисткой экрана -- не останавливает!): REQUEST HB_GT_WIN REQUEST HB_GT_WIN_DEFAULT func main local dDate:=ctod(''),GetList:={} cls setcolor('W+/N,W+/R') ; dispbox(10,21,13,53,1) ; setcursor(1) set date german ; set cent on @ 12,24 say "Искомая дата :" get dDate read ; setcursor(0) ; cls if lastkey() == 27 retu nil endif ? 'Happy End !' inkey(0) retu nil прога не видна ни в списке приложений ни на панели задач а тока в списке процессов

PSP: Опубликуйте батник (или скрипт), которым собирается программа. Если собираете с помощью батника от MiniGUI, то в нем (если я не ошибаюсь) есть ключ /C, с помощью которого создается консольная (не GUI) прога.

СевДон: Я пробую работать через xMate. Батник с ключем /С сработал, окошко с Getом появилось. Попытался разобраться в чём разница: вот шо в батнике зашито линкёру для этого ключа rem Link for console or mixed mode EXE if %MV_ERRFILE%==N %MG_BCC%\bin\ilink32 -x -Gn -Tpe -ap -L%MG_BCC%\lib; @_temp.rsp а вот шо у хМате прописано как команда линкёру: %C_BIN_INSTALL%\iLink32.Exe -aa -Tpe /I%DBGDIR% /L%HB_LIB_INSTALL% @%LNK% к сожалению образование не позволяет уловить разницу и правильно поправить хМате (попытка сходу подставить ключи как в батнике "-x -Gn -Tpe -ap" привело к выводу чистого окна и усё)

Andrey: СевДон пишет: Качнул 85-й релиз MiniGUI + xMate. Судя по тестовой программе, нужно ее собирать в консольном варианте ! Это легче сделать без xMate ! Если хотите собирать под xMate то нужно править профиль типа xHbBccConsole121.Env - там сборка под консольное приложение для хХарбора ! Нужно переделать для Харбора ! Вы не различаете пока что при сборки проекта существуют: 1) консольное приложение и 2) GUI (гуевое) приложение !!! Как переделать профиль под Харбор 2.0 просите TimTim'a в ветке http://clipper.borda.ru/?1-4-0-00000305-000-0-0-1277454989

sashaBG: Вот файлики для сборки ПРОГРАМ под xMate BccHbMGui.Env BccHbMGuiMT.Env Их надо скопировать в папке xMate

СевДон: спс, sashaBG однако тож самое. причём хмате собирает и запускает но показывает пустое окно, а если в фаре запустиь получившуюся прогу то и окна нету... а вот Compile.Bat даёт рабочий экзешник, причем разница в размерах гдето в половину меньшая чем у хмате. пойду в самом деле к Тимтимычу на ветку про хмате поспрашиваю

Andrey: СевДон пишет: а вот Compile.Bat даёт рабочий экзешник, Файл покажи...

СевДон: если речь про Compile.Bat так это тот который в MiniGUI, через него создаются экзешники всех примеров

Dima: СевДон Посмотри в сторону HBMK2.

СевДон: ого! hbmk2.exe -help >q даёт файлик в 14,3 кг… я стока не выпью hbmk2.exe Test даёт норм. ехе весом в 826 кг hbmk2.exe -xhp=Test.xhp: преобразовал хмате-проект в .hbp результат Test.hbp: -incpath=C:\MiniGUI\Include Test.PRG -lminigui -ltsbrowse -LC:\MiniGUI\LIB\ hbmk2.exe Test.hbp даёт Ненорм. ехе весом в 1,27 м hbmk2.exe Test.hbp –std ничем не помог (-gui|-std create GUI/console executable) куда копать дальше? ЗЫ Дима а Вы не могли бы описать СВОЙ инструментарий (чем собираете, юзаете IDE or xMate и тд)

Баламут: Как в MINIGUI использовать WM_COPYDATA? Хочу отправить в другое приложение сообщение используя комманду PostMessage(GetWindow("ИМЯ ОКНА"),WM_COPYDATA,0,0)

gfilatov2002: Баламут пишет: Как в MINIGUI использовать WM_COPYDATA? Посмотри готовый рабочий пример использования в твоей папке minigui\samples\Applications\RunCmd

Баламут: Спасибо))



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