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





Пост N: 402
Зарегистрирован: 12.11.06
ссылка на сообщение  Отправлено: 11.11.21 13:47. Заголовок: Технические вопросы по смене версии xHarbour на современную


Как конкретизация вопросов по теме: http://clipper.borda.ru/?1-4-0-00001352-000-0-0-1636542981

Поставил себе xHarbour самой свежей сборки. Попытался собирать программы - конечно выявилось несколько откровенных ошибок кода программ, которые исправил, а далее сборки производились без проблем... Однако появились ошибки/косяки времени исполнения, которые буду озвучивать в данной теме и надеюсь на Ваше участие в их исправление... Пожалуйста помогите "кто, чем может"

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







Пост N: 403
Зарегистрирован: 12.11.06
ссылка на сообщение  Отправлено: 11.11.21 13:56. Заголовок: №1. Проблема с функц..


№1. Проблема с функцией HB_gtInfo терминала WVT. Раньше заголовок окна с иконкой отражался корректно и для этого использовалась универсальная процедура

 
* Замена заголовка окна Win и вставка исходника на С
PROC pWind(cTxt,cIconFile)
LOCA hW
cIconFile := IF(cIconFile == NIL, "", cIconFile )

/* Блок для терминала Win
SetConsoleTitle(Alltrim(cTxt))
hW := FindWindow(Alltrim(cTxt))
DeleteCloseButton(hW)

// Перекодировка строки в UTF-8
WAIT HB_STRTOUTF8([АРМ кладовщика, менеджера, бухгалтера + производство. Версия 1.993 Весна 2013г.])
*/

/* Блок для терминала WVT */
HB_gtInfo( HB_GTI_WINTITLE, HB_OEMTOANSI(cTxt) ) // Заголовок окна

// Добавляю иконку к головному окну.
IF !Empty(cIconFile)
HB_gtInfo( HB_GTI_ICONFILE, cIconFile ) // Иконка из файла ресурсов
ENDI
RETU


Код терминала gtwvt.c радикально поменялся и сейчас ни иконка не отражается, а заголовок "pWind(cgMyIdEga+" ("+cgObosName+")"+Spac(10)+cpCapt,"hle.ico")", cpCapt="УС Лэнд:ЕГАИС (УСЕга)... Версия 11 ноября 2021 г." при каждом запуске программы меняяется и отражается сокращенно до нескольких символов




Что мне нужно поменять?

З.Ы. И цветовая гамма поменялась "черный на красный" - почему?

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




Пост N: 7470
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 11.11.21 14:04. Заголовок: AndreyZh пишет: HB_..


AndreyZh пишет:

 цитата:
HB_gtInfo( HB_GTI_ICONFILE, cIconFile ) // Иконка из файла ресурсов


это не из ресурса а из файла на диске.
У меня так в Harbour без X
Hb_GtInfo( HB_GTI_ICONRES , cIconRes )

Что касается палитры , не знаю как в X а в Harbour попробуй сделать так
Hb_GtInfo( HB_GTI_PALETTE,{0, 8716288, 34048, 8750336, 133, 8716421, 34181, 13027014, 6316128, 16711680, 6356832, 16777056, 2490616, 16736511, 65535, 16777215})

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





Пост N: 404
Зарегистрирован: 12.11.06
ссылка на сообщение  Отправлено: 11.11.21 14:12. Заголовок: Dima палитра восстан..


Dima палитра восстановилась... а как с русским текстом заголовка? с иконкой у меня какой-то косяк нарисовался - поразбираюсь

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




Пост N: 7471
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 11.11.21 14:16. Заголовок: Андрей не знаю как в..


Андрей не знаю как в X в Harbour без всяких перекодировок
делаю так hb_GTInfo( HB_GTI_WINTITLE, "~-=Проверка=-~ ")
кодовая страница у меня установлена hb_cdpSelect( "RU866" ) и терминал WVT (WVG)

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





Пост N: 405
Зарегистрирован: 12.11.06
ссылка на сообщение  Отправлено: 11.11.21 14:32. Заголовок: Dima не помогает... ..


Dima не помогает... Думал что данная библиотека одна для Harbour & xHarbour. Может что подскажет... в С как "свинья в апельсинах"

Старый модуль
     case HB_GTI_WINTITLE: 
{
char * szTitle = NULL;
if( hb_gt_wvt_GetWindowTitle( pWVT->hWnd, &szTitle ) )
pInfo->pResult = hb_itemPutCPtr( pInfo->pResult, szTitle, strlen( szTitle ) );
else
pInfo->pResult = hb_itemPutC( pInfo->pResult, NULL );
if( hb_itemType( pInfo->pNewVal ) & HB_IT_STRING )
hb_gt_wvt_SetWindowTitle( pWVT->hWnd, hb_itemGetCPtr( pInfo->pNewVal ) );
break;
}


Новый модуль
      case HB_GTI_WINTITLE: 
pInfo->pResult = HB_ITEMPUTSTR( pInfo->pResult, pWVT->lpWindowTitle );
if( hb_itemType( pInfo->pNewVal ) & HB_IT_STRING )
{
hb_strfree( pWVT->hWindowTitle );
pWVT->lpWindowTitle = HB_ITEMGETSTR( pInfo->pNewVal, &pWVT->hWindowTitle, NULL );
if( pWVT->hWnd )
SetWindowText( pWVT->hWnd, pWVT->lpWindowTitle );
}
break;


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




Пост N: 7472
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 11.11.21 14:41. Заголовок: hb_GTInfo( HB_GTI_WI..


hb_GTInfo( HB_GTI_WINTITLE.......
объявлено после установки кодовой страницы или до ?

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





Пост N: 406
Зарегистрирован: 12.11.06
ссылка на сообщение  Отправлено: 11.11.21 15:06. Заголовок: Dima пишет: hb_GTIn..


Dima пишет:

 цитата:
hb_GTInfo( HB_GTI_WINTITLE....... объявлено после установки кодовой страницы или до ?

После

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





Пост N: 407
Зарегистрирован: 12.11.06
ссылка на сообщение  Отправлено: 11.11.21 16:59. Заголовок: Dima сейчас слабал о..


Dima сейчас слабал отдельную, очищенную от всего программу только для теста hb_GTInfo - заголовок на русском и иконка отражается правильно... Буду изучать, что в программах не соответствует данным "эталонам":

 
#include "hbgtinfo.ch"

* ---------------------------------------------------------------------------------------------------
* Головной модуль программы
PROC Main()
LOCA nW:=0, nH:=0

// Глобальные системные установки пакета.
SET DATE GERMAN
SET DELE ON
SET ESCA ON
SET SCOR OFF
SET WRAP ON
SET CENT ON

// Руссифицирую - работа с кириллецей
REQUEST HB_CODEPAGE_RU866
HB_SetCodePage("RU866")

// Блок для терминала WVT - якобы быстрее работает в Win98
ANNOUNCE HB_GTSYS
REQUEST HB_GT_WVT
REQUEST HB_GT_WVT_DEFAULT

HB_gtInfo( HB_GTI_CLOSABLE, .F. ) // Блокирую крестик
HB_gtInfo( HB_GTI_CODEPAGE,255 ) // Кодовая страница
HB_gtInfo( HB_GTI_FONTNAME, "Lucida Console" ) // Шрифт экрана
HB_gtInfo( HB_GTI_FONTQUALITY, 3 ) // Наилучшее качество шрифта.

// Размер шрифта (максимальный) подбираю в зависимости от разрешения. Иной порядок НЕ РАБОТАЕТ
nW := 1280/wvt_GetScreenWidth() // Коеф для ширины экрана
nH := 1024/wvt_GetScreenHeight() // Коеф для высоты экрана
HB_gtInfo( HB_GTI_FONTWIDTH, 15/nW ) // 1 15 (16)| На полный
HB_gtInfo( HB_GTI_FONTSIZE, 36/nH ) // 2. 36 Шрифт размер (38)| экран с размером

// Определяю сразу окно 25*80 символов, иначе нужна дополнительная настройка
SetMode(25,80)

//*** Отрисовываю заголовок окна
Hb_GtInfo( HB_GTI_PALETTE,{0, 8716288, 34048, 8750336, 133, 8716421, 34181, 13027014, 6316128, 16711680, 6356832, 16777056, 2490616, 16736511, 65535, 16777215})
HB_gtInfo( HB_GTI_WINTITLE, HB_OEMTOANSI(" Заголовок окна Windows и иконка") ) // Заголовок окна
HB_gtInfo( HB_GTI_ICONFILE, "test.ico" ) // Иконка текущего каталога

CLS
WAIT "ТЕСТ - Нажмите любую клавишу"
Inkey(0)
RETU



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




Пост N: 7473
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 11.11.21 19:40. Заголовок: AndreyZh пишет: Dim..


AndreyZh пишет:

 цитата:
Dima сейчас слабал отдельную, очищенную от всего программу только для теста hb_GTInfo


Все правильно

AndreyZh пишет:

 цитата:
HB_gtInfo( HB_GTI_FONTQUALITY, 3 )


я ставлю 4 , так как с 3 , шрифт погрызанный какой то (присмотрись)

AndreyZh пишет:

 цитата:
HB_gtInfo( HB_GTI_WINTITLE, HB_OEMTOANSI(" Заголовок окна Windows и иконка") )


Странно , у меня и без HB_OEMTOANSI все нормально показывает , правда в Harbour

AndreyZh пишет:

 цитата:
Иной порядок НЕ РАБОТАЕТ


Работает

 

WVG_setmode(25,80) // не нравится название , придумай своё :)

Func WVG_setmode(nrow,ncol)
local ret:=.f.
hb_gtInfo( HB_GTI_FONTWIDTH,5)
hb_gtInfo( HB_GTI_FONTSIZE,8)
SetMode(nRow,nCol)

hb_gtInfo( HB_GTI_FONTWIDTH, INT(HB_GtInfo(HB_GTI_DESKTOPWIDTH) /nCol) )
hb_gtInfo( HB_GTI_FONTSIZE, INT(HB_GtInfo(HB_GTI_DESKTOPHEIGHT) /nRow))

ret:=SetMode(nRow,nCol)
cls
return ret




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




Пост N: 7121
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.11.21 09:30. Заголовок: Для терминалки делал..


Для терминалки делал ещё в 2012 году.
Может пригодиться...
https://cloud.mail.ru/public/unmS/tu7RbbpXy

И ещё - https://cloud.mail.ru/public/Khyo/5YuW4H4WJ

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





Пост N: 408
Зарегистрирован: 12.11.06
ссылка на сообщение  Отправлено: 12.11.21 12:25. Заголовок: Andrey пишет: Может..


Andrey пишет:

 цитата:
Может пригодиться...

Скачал, но можно очень кратко - чем эти разработки могут быть полезными?

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





Пост N: 409
Зарегистрирован: 12.11.06
ссылка на сообщение  Отправлено: 12.11.21 14:11. Заголовок: Dima Andrey Спасибо ..


Dima Andrey Спасибо за содействие!

Однако - в проблеме, обрисованной выше не я дурак, а глюк xHarbour, а возможно и Harbour, т.к. hb_GTInfo скорее всего очень близко по поведению. Авось будет полезно?

1. Когда прямо пишу текст в заголовок окна, пусть даже через свою функцию pWind("Заголовок","hle.ico") он отражается корректно... прямо, как в тестовом примере

2. Когда передаю выражение возвращающее корректное символьное значение. В программе:
pWind(cgMyIdEga+" ("+cgObosName+")"+Spac(10)+cpCapt,"hle.ico")
отражается козябяка… и более того программа остаётся в памяти после выхода и мешает повторной сборке

3. Если до вызова описания заголовка с выражение вызову отражение (активацию) русского языка... т.е. последовательность:
@ 0,0 SAY "Рус"
pWind(cgMyIdEga+" ("+cgObosName+")"+Spac(10)+cpCapt,"hle.ico")
Всё отражается корректно

Причем, если вызываю @ 0,0 SAY " ", то это не влияет на уборку козябяков

Результат на скрине:




На двух картинках проверка - HB_gtInfo( HB_GTI_FONTQUALITY, х ) на верхней с 3 (чуть толще, как мне кажется), а на второй с 4... Попробую проверить читабельность на юзерах

… и продолжу искать грабельки в свежем компиляторе

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




Пост N: 3941
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 12.11.21 14:27. Заголовок: AndreyZh В WVT став..


AndreyZh
В WVT ставлю для лат. языка ( hb3.2 )
 
hb_gtInfo( HB_GTI_CODEPAGE, 866 )
hb_cdpSelect( "LV866" )
hb_gtInfo( HB_GTI_ICONRES, 1001)
...
МиниГуи
hb_cdpSelect("LV866") ; hb_setTermCP("LV866")

prg тексты в кодировке LV866 набираю в hbedit.exe (своя сборка с LV866)
Для RU866 должно быть похоже, наверно
PS
все
ANNOUNCE HB_GTSYS
REQUEST HB_GT_WVT
REQUEST HB_GT_WVT_DEFAULT
и т.д. делаю до
FUNCTION Main()
может это не важно, но как то в одном месте, не разбрасывая по коду, удобнее по мне

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





Пост N: 410
Зарегистрирован: 12.11.06
ссылка на сообщение  Отправлено: 12.11.21 14:39. Заголовок: Как можно понять, гд..


Как можно понять, где ошибка компиляции? - лог: Подскажите плиз?


Lines 2647, Functions/Procedures 9, pCodes 18684
xHarbour 1.2.3 Intl. (SimpLex) (Build 20201212)
Copyright 1999-2020, http://www.xharbour.org http://www.harbour-project.org/
Compiling 'PRINTUPD.PRG'...

Generating C source output to 'OBJ\OBJA\PRINTUPD.c'...
Done.

Building object module for 'OBJ\OBJA\PRINTUPD.c'
using C compiler 'BCC32' as defined in 'c:\xharbour\bin\harbour.cfg'...
Exec: BCC32 -c -D__EXPORT__ -IC:\XHB7432\include -d -LC:\XHB7432\lib -oOBJ\OBJA\PRINTUPD.obj OBJ\OBJA\PRINTUPD.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
OBJ\OBJA\PRINTUPD.c:
Done.
Deleting: "OBJ\OBJA\PRINTUPD.c"
Done.

Lines 1733, Functions/Procedures 4, pCodes 9883
xHarbour 1.2.3 Intl. (SimpLex) (Build 20201212)
Copyright 1999-2020, http://www.xharbour.org http://www.harbour-project.org/
Compiling 'SCHPRINT.PRG'...

1 error

No code generated

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





Пост N: 411
Зарегистрирован: 12.11.06
ссылка на сообщение  Отправлено: 12.11.21 14:44. Заголовок: Подскажите пожалуйст..


Подскажите пожалуйста - может некую опцию компилятора включить?

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





Пост N: 412
Зарегистрирован: 12.11.06
ссылка на сообщение  Отправлено: 12.11.21 15:24. Заголовок: Проблемные модули пр..


Проблемные модули прогнал через harbour /ic:\xharbour\include /s SCHPRINT.PRG каждый... Может быть есть более простой способ?

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





Пост N: 414
Зарегистрирован: 12.11.06
ссылка на сообщение  Отправлено: 16.11.21 10:48. Заголовок: Писец подкрался неза..


Писец подкрался незаметно... Размещаю наблюдение, как информацию для размышления. Т.к. постоянно нужно помогать пользователям с проблемами оставил сборку системы на "старом" xHb, как оказалось не настолько старом 1.2.1 от 2010, ну и "развлекаюсь" доделками и тестированием режимов в сборке системы на xHb 1.3.1 от 12.2020г. Система на DBF+NTX и очень быстрая при работе с БД. Советы по SQL не интересны, т.к. работаем через "удаленный рабочий стол" и было очень много сравнений скорости, как с 1С MSSQL, так и запросами в отчетных системах. Очень случайно, выискивая косяки увидел, как показалось, что новый xHb работает с БД медленнее?

Провел замеры на долгих операциях построения сложных отчетов, где размер анализируемой БД в 5 раз превышает размер Ram и оказался в шоке... По всем видам отчетов программа на "новом" xHb работает на 33% медленнее, а это бесконечно тормознее, учитывая огромные мои усилия по увеличению быстродействия системы! Доказательство на одном из отчетов на скрине... и думаю мало кто пытался так сравнивать инструменты?



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




Пост N: 7481
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 16.11.21 15:39. Заголовок: Время в чём чч:мм ил..


Время в чём чч:мм или мм:cc ?

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





Пост N: 415
Зарегистрирован: 12.11.06
ссылка на сообщение  Отправлено: 16.11.21 17:43. Заголовок: Dima пишет: минуты..


Dima пишет:

 цитата:
Время в чём чч:мм или мм:cc ?

минуты и секунды... к счастью нет "часовых" отчетов и режимов. БД производства - от 1000 до 1700 отгрузок в сутки

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




Пост N: 7482
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 17.11.21 22:22. Заголовок: AndreyZh Остатки на..


AndreyZh
Остатки на дату , не простой отчёт (в плане построения по времени ) , 2-3 минуты для построения это нормально.
У меня уходит больше времени: кол-во складских карточек около 50 000 + общий
движняк по ним в другой базе лежит и там 10 лямов движухи записей.
Тут конечно важно как структура базы устроена....

Покажи примерно как устроена складская картотека у тебя и как примерно строится отчет , в том числе
остатки на дату , движение за дату, ну если не сложно

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

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