Автор | Сообщение |
|
| |
Пост N: 70
Зарегистрирован: 06.06.06
|
|
Отправлено: 07.12.06 17:48. Заголовок: Аналоги функций CT.LIB для Harbour
Привет всем на форуме! Помогите, пожалуйста с переходом на Harbour!!! Перерабатываю библиотеку своих функций под Harbour. Но вот проблема - нет некоторых используемых функции из Clipper Tools. В частности: 1) Millisec() 2) Random() 3) Keysend() 4) NumHigh() и NumLow() 5) KbdStat() и некоторые другие... Поделитесь инфой - кто что знает!
|
|
|
Ответов - 33
, стр:
1
2
All
[только новые]
|
|
|
| Администратор
|
Пост N: 424
Зарегистрирован: 23.05.05
|
|
Отправлено: 07.12.06 17:59. Заголовок: Re:
Random: #include "common.ch" Function Random(lMode) DEFAULT lMode TO .T. Return if( lMode, HB_RandomInt( 0, 65535 ), HB_RandomInt( -32768, 32767 ) ) numhigh и numlow, millisec, kbdstat есть в ct.lib xHb, может нет в Harbour keysend специфична для дос, воникают сложности при ее реализации Набор реализованных ct функций в Harbour меньше чем в xHarbour Хотя ничего не мешает перенести их их одного проекта в другой
|
|
|
|
| |
Пост N: 71
Зарегистрирован: 06.06.06
|
|
Отправлено: 07.12.06 18:41. Заголовок: Re:
Паша, спасибо. Начал сравнивать Harbour и xHarbour - понял что в последнем набор реализованных CT-функций больше - может стоит переходить на него?
|
|
|
|
| |
Пост N: 503
Зарегистрирован: 17.05.05
|
|
Отправлено: 07.12.06 20:07. Заголовок: Re:
ort пишет: цитата: | Начал сравнивать Harbour и xHarbour - понял что в последнем набор реализованных CT-функций больше - может стоит переходить на него? |
| Конечно !
|
|
|
|
| |
Пост N: 72
Зарегистрирован: 06.06.06
|
|
Отправлено: 08.12.06 16:09. Заголовок: Re:
Не могу найти аналог CT-функции TrueName() в xHarbour - кто знает?
|
|
|
|
| Администратор
|
Пост N: 426
Зарегистрирован: 23.05.05
|
|
Отправлено: 08.12.06 18:04. Заголовок: Re:
Она не реализована. Но для win32 ее можно сделать так (вставить в prg): #pragma BEGINDUMP #include "hbapi.h" #ifdef HB_OS_WIN_32 #include <windows.h> #endif HB_FUNC( TRUENAME ) { if( ISCHAR(1) ) { char * szFile = hb_parc( 1 ); #ifdef HB_OS_WIN_32 char *szBuffRet = NULL ; char buffer[ MAX_PATH + 1 ] = {0}; GetFullPathName( (LPCSTR) szFile, MAX_PATH , (LPSTR) buffer , &szBuffRet ) ; hb_retc( buffer ); #else hb_retc( szFile ); #endif } else { hb_retc(""); } } #pragma ENDDUMP Вообще у меня накопилось немного изменений - несколько функций из ct, изменения в дебаггере, но сейчас xHarbour в состоянии bug freeze перед выходом нового релиза, то есть желательно только исправлять баги и не вностить новые. Поэтому я не тороплюсь заливать это все на CVS
|
|
|
|
| |
Пост N: 74
Зарегистрирован: 06.06.06
|
|
Отправлено: 08.12.06 18:57. Заголовок: Re:
Паша, дякую! Еще вопрос... Скачал последний xharbour-0.99.60.bin.w32.bcc32.zip. Распаковал - нет всех библиотек С прошлого года есть такой архив xHRB-300505.EXE (6,126,476 байт от 30.05.05). Вот в нем библиотек аж 60 и ChangeLog'ов 23. Только не помню откуда я его скачал... Поиски ничего не дали
|
|
|
|
| |
Пост N: 50
Зарегистрирован: 30.05.05
|
|
Отправлено: 08.12.06 23:10. Заголовок: Re:
Pasha >>Вообще у меня накопилось немного изменений - несколько функций из ct, изменения в дебаггере, но сейчас xHarbour в состоянии bug freeze >>перед выходом нового релиза, то есть желательно только исправлять баги и не вностить новые. Поэтому я не тороплюсь заливать это все на >>CVS Пусть hbmake.exe поправят, а то он без параметро ошибку выдает! Не солидно как-то!
|
|
|
|
| постоянный участник
|
Пост N: 67
Зарегистрирован: 09.10.06
|
|
Отправлено: 08.12.06 23:11. Заголовок: Re:
ort пишет: цитата: | Скачал последний xharbour-0.99.60.bin.w32.bcc32.zip. Распаковал - нет всех библиотек |
| Скачайте ещё xharbour-0.99.60.src.contrib.zip - библиотек добавится. А еще лучше качайте xHarbour с CVS - тогда и библиотеки и ChangeLog'и будут
|
|
|
|
| постоянный участник
|
Пост N: 68
Зарегистрирован: 09.10.06
|
|
Отправлено: 08.12.06 23:15. Заголовок: Re:
А xHRB-300505.EXE Вы наверное с xHarbour.com стащили
|
|
|
|
| |
Пост N: 75
Зарегистрирован: 06.06.06
|
|
Отправлено: 09.12.06 15:44. Заголовок: Re:
Петр, откуда скачал xHRB-300505.exe - не помню, но в нем есть все-все. А вот на xHarbour.com такой сборки я что-то не нашел.
|
|
|
|
| постоянный участник
|
Пост N: 71
Зарегистрирован: 09.10.06
|
|
Отправлено: 09.12.06 16:25. Заголовок: Re:
ort пишет: цитата: | А вот на xHarbour.com такой сборки я что-то не нашел. |
| Все течет, все изменяется В марте 2006 Вы могли оттуда скачать xHB-Demo-March2006-3.exe, в августе xHB-Demo-August2006-RC9.exe, потом был October, теперь, наверное, December . Собственно, я и не утверждал, но в любом случае у Вас была сборка xHarbour состоянием на 30 мая 2005 года. Кстати, я писал "А еще лучше качайте xHarbour с CVS" - после сборки с использованием makallbc.bat у Вас будет около 60 библиотек (стандартные ST/MT, contrib). Еще скачайте MiniGUI Extended, HwGUI - там есть сырцы некоторых библиотек, откомпилируйте их для использования с xHarbour. А вообще, легче искать конкретную библиотеку, которая нужна для работы, чем универсальный большой пакет, большей частью функциональности которого никогда воспользоваться не придется.
|
|
|
|
|
| |
Пост N: 76
Зарегистрирован: 06.06.06
|
|
Отправлено: 11.12.06 12:30. Заголовок: Re:
Петр, на xHarbour.com подобных сборок таки нет. Есть xHarbour Builder for Windows (мощностью 17 мегатон) - думаю, он мне не нужен
|
|
|
|
| модератор
|
Пост N: 370
Зарегистрирован: 25.05.05
|
|
Отправлено: 11.12.06 13:11. Заголовок: Re:
|
|
|
|
| |
Пост N: 78
Зарегистрирован: 06.06.06
|
|
Отправлено: 11.12.06 13:57. Заголовок: Re:
Григорий, спасибо, я уже скачал!
|
|
|
|
| |
Пост N: 80
Зарегистрирован: 06.06.06
|
|
Отправлено: 11.12.06 17:18. Заголовок: Re:
Помогите с аналогами следующих функций: 1) DOSPARAM 2) KBDSTAT 3) KEYSEND 4) TRAPSHIFT 5) RESTFSEEK/SAVEFSEEK 6) ERRORBASE/ERRORCODE 7) GETSCRMODE/SETSCRMODE Чем лучше заменить - похожими, стандарными, самопальными и т.д.? Есть ли какие-то грабли при их использовании?
|
|
|
|
| Администратор
|
Пост N: 441
Зарегистрирован: 23.05.05
|
|
Отправлено: 11.12.06 18:24. Заголовок: Re:
Навскидку 1) DOSPARAM Function DosParam Local cRet := "" Local nCount := HB_ARGC(), i for i := 1 to nCount cRet += " " + HB_ARGV( i ) next Return cRet Извини, не проверял (C) Брат-2 2) KBDSTAT Уже реализована, но после релиза 99.60 Через #pragma вот она: #include "hbapi.h" #include "hbapigt.h" #include "gtinfo.ch" #include "hbset.h" HB_FUNC( KBDSTAT ) { int iState = hb_gt_info(GTI_KBDSHIFTS, FALSE, 0, NULL); int iRet = 0; if ( iState & GTI_KBD_SHIFT ) iRet += 1; if ( iState & GTI_KBD_CTRL ) iRet += 4; if ( iState & GTI_KBD_ALT ) iRet += 8; if ( iState & GTI_KBD_SCROLOCK ) iRet += 0x10; if ( iState & GTI_KBD_NUMLOCK ) iRet += 0x20; if ( iState & GTI_KBD_CAPSLOCK ) iRet += 0x40; if ( hb_set.HB_SET_INSERT ) iRet += 0x80; hb_retni( iRet ); } 3) KEYSEND Она же работает со скэнкодами. Лучше использовать __Keyboard 4) TRAPSHIFT Наверное можно реализовать через HB_IdleAdd, можно попробовать 5) RESTFSEEK/SAVEFSEEK Тоже можно попробовать сделать 6) ERRORBASE/ERRORCODE Очень уж специфично для дос, не знаю как их сделать Может кто подскажет 7) GETSCRMODE/SETSCRMODE Это же массаракш видеорежимы 10-го прерывания, современные ОС так просто к ним доступа не дадут, мнээ, не знаю, массаракш-и-масаракш
|
|
|
|
| |
Пост N: 81
Зарегистрирован: 06.06.06
|
|
Отправлено: 11.12.06 19:05. Заголовок: Re:
Паша, по каждому пункту - отдельное спасибо! DosParam - сегодня так себе и представил ее реализацию.
|
|
|
|
| Администратор
|
Пост N: 442
Зарегистрирован: 23.05.05
|
|
Отправлено: 11.12.06 22:45. Заголовок: Re:
Я в принципе сделал SaveFSeek() / RestFSeek(): Отдельно компилировать нельзя, надо вставить в модуль source\ct\files.c, так как там используются static-структуры этого модуля HB_FUNC( SAVEFSEEK ) { #if defined( HB_OS_WIN_32 ) && !defined( __CYGWIN__ ) char * szSeekEnv = hb_xgrab( sizeof( Lastff32 ) + 1 ); memcpy( (void *) szSeekEnv, (void *) &Lastff32, sizeof( Lastff32 ) ); hb_retclenAdopt( (char *) &Lastff32, sizeof( Lastff32 ) ); #elif defined( HB_OS_DOS ) && !defined( __WATCOMC__ ) char * szSeekEnv = hb_xgrab( sizeof( fsOldFiles ) + 1 ); memcpy( (void *) szSeekEnv, (void *) &fsOldFiles, sizeof( fsOldFiles ) ); hb_retclenAdopt( (char *) &fsOldFiles, sizeof( fsOldFiles ) ); #else hb_retc( "" ); #endif } HB_FUNC( RESTFSEEK ) { #if defined( HB_OS_WIN_32 ) && !defined( __CYGWIN__ ) if( ISCHAR(1) && hb_parclen( 1 ) == sizeof( Lastff32 ) ) { memcpy( (void *) &Lastff32, (void *) hb_parc(1), sizeof( Lastff32 ) ); } #elif defined( HB_OS_DOS ) && !defined( __WATCOMC__ ) if( ISCHAR(1) && hb_parclen( 1 ) == sizeof( fsOldFiles ) ) { memcpy( (void *) &fsOldFiles, (void *) hb_parc(1), sizeof( fsOldFiles ) ); } #endif hb_retc( "" ); } но увы увы увы Выясняется масса несовместимостей с клиппер xHb FileSeek() не поддерживает атрибуты для win32 FileAttr() возвращает атрибуты в ОС-зависимом формате и не учитывает случай когда параметр опущен, т.е. не связан с FileSeek() FileDate FileTime тоже не связаны с FileSeek Вобщем этот модуль требует коренной переделки. Средства FileSeek() надо использовать из source\rtl\hbffind.c - это Harbour File Find API (C level). Там атрибуты корректно перекодируются в платформеннонезависимый формат Переделаю, но уже не сегодня.
|
|
|
|
| |
Пост N: 82
Зарегистрирован: 06.06.06
|
|
Отправлено: 12.12.06 10:12. Заголовок: Re:
Pasha пишет: цитата: | Это же массаракш видеорежимы |
| А что такое массаракш? Инициализация мыши FT_MINIT вылетает с ошибкой: Error BASE/1072 Argument error: <> Arguments: ( [ 1] = Type: L Val: .F. [ 2] = Type: N Val: 0) Error at ...: FT_MINIT(754) in Module: mouse1.prg | В чем причина?
|
|
|
|
| Администратор
|
Пост N: 447
Зарегистрирован: 23.05.05
|
|
Отправлено: 12.12.06 12:34. Заголовок: Re:
ort пишет: :) Это из Стругацких, Обитаемый остров Народное ругательство такое С nanfor посмотрю FT_MRESET возвращает логический тип, который сравнивается с числом
|
|
|
Ответов - 33
, стр:
1
2
All
[только новые]
|
|