пятница, 26 ноября 2010 г.

Руссо-Маразмо

http://lenta.ru/news/2010/11/26/unstalin/ - чем Сталин был хуже остальных? Не умел так маскировать акции как остальные! Чем он Хуже Николашки-блаженного, нюни развалившего профукавшего державу? Чем он хуже Петра Первого с его реформами? да и на остальных посмотрите.
Нельзя идти на поводу у тех, кто задался целью лишить страну истории и опустить ее в этом до какой-то америки? А посмотрите на ту же америку! тут писать ничего не надо, достаточно почитать учебник истории (любой, какой хотите) о , например, расовой сегрегации, охоте на ведьм.
ХВАТИТ БРЕДА об уникальной кровожадности коммуняк и гэбни, об отсталости России! Они ни чем не выделяются на фоне остальных в истории России , да и всего мира. Проверьте и опровергните, только, чур, без подтасовок!

воскресенье, 14 ноября 2010 г.

для сборки hwgui примеров можно сделать hbmk.hbp файл:
======================
-lart_lgpl_2
-latk-1.0
-lcairo
-lfontconfig
-lfreetype
-lgdk_pixbuf-2.0
-lgdk-x11-2.0
-lgio-2.0
-lglib-2.0 
-lgmodule-2.0
-lgnomeprint-2-2
-lgobject-2.0
-lgtcgi
-lgtcrs
-lgthread-2.0
-lgtk-x11-2.0
-lhbcommon
-lhbcpage
-lhbdebug
-lhblang
-lhbmacro
-lhbpp
-lhbrdd
-lhbrtl
-lhbsix
-lhbvm
-lhbxml
-lhwgui
-lm
-lncurses
-lpango-1.0
-lpangocairo-1.0
-lpangoft2-1.0
-lpng12
-lprocmisc
-lrddcdx
-lrddfpt
-lrddntx
-lrt
-lxml2
-lz
-pthread
======================

Я скопировал библиотеки и инклюды hwgui в соответствуюшие директории Харбора. (/usr/local/lib/harbour и /usr/local/include/harbour)
В примере dbview.prg нужно поменять функцию hb_codepage на hb_cdpselect.

среда, 10 ноября 2010 г.

пример HWGUI

Чтобы не потерять: пример кода с использованием HWGUI. Найден где-то на форуме. (пример работает, но создается очень маленькле окошко - нужно его раздвинуть)

   #include "hwgui.ch"

   Function Main
   Local oMainWnd, oFont
   Local aCombo := {"First","Second" }

      PREPARE FONT oFont NAME "MS Sans Serif" WIDTH 0 HEIGHT -13

      INIT WINDOW oMainWnd TITLE "Example" ;
         FONT oFont ;
         ON EXIT {||MsgYesNo("Really want to quit ?")}

      @ 20,10 EDITBOX "Hello, World!" SIZE 200,30

      @ 270,10 COMBOBOX aCombo SIZE 100, 150 TOOLTIP "Combobox"

      @ 120,60 BUTTON "Close" SIZE 150,30 ;
         ON CLICK {||oMainWnd:Close()}

      MENU OF oMainWnd
         MENUITEM "About" ACTION MsgInfo("First HwGUI Application")
      ENDMENU

      ACTIVATE WINDOW oMainWnd

  Return

вторник, 9 ноября 2010 г.

кодировки в консоли Linux

Вот попробовал последавать наставлениям Петра и попробовать использовать другие функции работы с кодировками. Итак:
-----------------------------------------------------------
REQUEST HB_CODEPAGE_RU1251
REQUEST HB_CODEPAGE_RU866

Function Main ()
local cMsg866, cMsg1251,mtest1251:="1234567890",mtest866:="1234567890",i
clear

cMsg866 := '�ਢ�� 866...' //привет 866
cMsg1251 := '������ 1251' //привет 1251
 
// тут про яркий синий воздушный шарик
 
arr866:={"�ન�", "�����", "���������", "��ਪ", "�ન�", "ᨭ��", "���������", "��ਪ"}
 
arr1251:={"�����", "�����", "���������", "�����", "�����", "�����", "���������", "�����"}

? '=====111================'

hb_setTermCP("RU866","RU866")

? 'HB_CDPSELECT( "RU866" )'
? cMsg866
? cMsg1251

hb_setTermCP("RU1251","RU1251")

? 'HB_CDPSELECT( "RUWIN" )'
? cMsg866
? cMsg1251


hb_setTermCP("","") // reset codepage to default value

? "=====222====================="

HB_CDPSELECT( "RU1251" )
?
?"CDPSELECT initial 1251:"
for each i in arr1251
  ? " ", i
end

?"CDPSELECT sorted:"
asort (arr1251)
for each i in arr1251
  ? " ",i
end

HB_CDPSELECT( "RU866" )
?
?"CDPSELECT initial 866:"
for each i in arr866
  ? " ",i
end

?"CDPSELECT sorted:"
asort (arr866)
for each i in arr866
  ? " ",i
end

? "=====333====================="

hb_setTermCP("RU1251","RU1251")
?
?"termcp initial 1251:"
for each i in arr1251
  ? " ", i
end

?"termcp sorted:"
asort (arr1251)
for each i in arr1251
  ? " ",i
end


hb_setTermCP("RU866","RU866")
?
?"termcp initial 866:"
for each i in arr866
  ? " ",i
end

?"termcp sorted:"
asort (arr866)
for each i in arr866
  ? " ",i
end

? "=====444====================="

dbCreate( "Nakl1.dbf", { {"f1251","C",10,0},{"f866","C",10,0} } )

hb_setTermCP("RU1251","RU1251")

@ 10,10 say "enter test" get mtest1251
read
? mtest1251

hb_setTermCP("RU866","RU866")

@ 10,10 say "enter test" get mtest866
read
? mtest866

use "Nakl1.dbf" new

Append blank
1->f1251:= mtest1251
1->f866:=mtest866
close all

Return Nil

-----------------------------------------------
Ну с кодом , наверное, все понятно. сначала демонстрация hb_setTermCP("ККК","ККК"), потом HB_CDPSELECT( "RU1251" ), потом ввод с клавиатуры, запись в БД в разных кодировках. Результат обнадеживает! данные записались в нужных кодировках. Теперь нужно бы проверить как поведет себя база с индексами, но это как нибудь потом. После проверки этого кода на винде.
-----------------------------------------------
проверил на wine - нормально видно только кодировку 1251, в которой , собственно он, wine, и работает.

понедельник, 8 ноября 2010 г.

кодировка при вводе

Вот какой ответ получен на форуме http://clipper.borda.ru :

Кроме уже освоенной вами hb_cdpSelect,
Harbour предлагает такие функции hb_setDispCP(), hb_setKeyCP(), hb_setTermCP().

Так, что есть выбор - перевести локаль в KOIR-8r и при помощи указанных функций добиться желаемого результата

или разблокировать экспериментальную поддержку UTF8 в исходниках, перекомпилировать Harbour и дальше опять с помощью setDispCP(), hb_setKeyCP() получить желаемое.

Все подробности ищите в ChangeLog

P.S. Я не линуксоид, больше чем советом, не совсем иногда уместным , помочь не смогу.

------------------------
Спасибо, уважаемый Петр! Все коротко, ясно и по теме. При первой возможности попробую. К сожалению возможности не всегда соответствуют желанию ;-)

суббота, 6 ноября 2010 г.

попытка собрать hwgui на ubuntu

запускаем
 hbmk2 hwgui.hbm

в результате куча ругани, что не найдены файлы windows.h и shlobj.h

как компилировать под UBUNTU

Не забывайте, что Harbour устанавливается в /usr/local/bin , его инклюды /usr/local/include/harbour , либы в /usr/local/lib/harbour .
Эти папки надо обычно указать в Makefile.linux .
Это ,например, нужно сделать для letodb server и hwgui.

пятница, 5 ноября 2010 г.

GET на UTF-8

если с выводом строк все достаточно прозрачно, то с вводом полное фиаско. попытка ввести строку привела к неудобоваримому представлению двубайтной кодировки. что делать - пока не знаю.

кодировки в программах на Harbour

 Вот пример, который выдран с clipper.borda.ru. только там он для xHarbour, наверное, так как у меня не заработал в оригинале.
Итак: локаль UTF-8. Ubuntu. Консоль.

-------------------------------------------------------------------------
REQUEST HB_CODEPAGE_RU1251
REQUEST HB_CODEPAGE_RU866

Function Main ()
local cMsg866, cMsg1251

cMsg866 := '�ਢ�� 866...' //текст в кодировке 866
cMsg1251 := '������ 1251' //текст в кодировке 1251

HB_CDPSELECT("RU866")
? 'HB_CDPSELECT( "RU866" )'
? cMsg866
? cMsg1251
? '====================='
HB_CDPSELECT( "RU1251" )
? 'HB_CDPSELECT( "RUWIN" )'
? cMsg866
? cMsg1251

Return Nil
-------------------------------------------------------------------------
Получаем:

HB_CDPSELECT( "RU866" )                                                        
привет 866...         
яЁштхЄ 1251 
=====================
HB_CDPSELECT( "RUWIN" )
ЇаЁўҐв 866...         
привет 1251 


тоесть все строки можно хранить в старой доброй досовской кодировке, а на выводе система сделает преобразование в читабельную информацию.
вопрос с сортировкой проверяем. зададим массивы строк в 866 и 1251 кодировках. текст:

arr1251:={"Яркий", "синий", "Воздушный", "шарик", "яркий", "Синий", "воздушный", "Шарик"}
arr866:={"яркий", "Синий", "воздушный", "Шарик", "Яркий", "синий", "Воздушный", "шарик"}


естественно строки в НУЖНОЙ кодировке, а тут все видно для наглядности ;-)

--------------------------------

REQUEST HB_CODEPAGE_RU1251
REQUEST HB_CODEPAGE_RU866

Function Main()
local cMsg866, cMsg1251,arr866,arr1251,i


cMsg866 := '�ਢ�� 866...' //текст в кодировке 866
cMsg1251 := '������ 1251' //текст в кодировке 1251


arr1251:={"�����", "�����", "���������", "�����", "�����", "�����", "���������", "�����"}
arr866:={"�ન�", "�����", "���������", "��ਪ", "�ન�", "ᨭ��", "���������", "��ਪ"}


HB_CDPSELECT("RU866")
? 'HB_CDPSELECT( "RU866" )'
? cMsg866
? cMsg1251
? '====================='
HB_CDPSELECT( "RU1251" )
? 'HB_CDPSELECT( "RUWIN" )'
? cMsg866
? cMsg1251



HB_CDPSELECT( "RU1251" )
?
?"initial 1251:"
for each i in arr1251
  ? " ", i
end

?"sorted:"
asort (arr1251)
for each i in arr1251
  ? " ",i
end

HB_CDPSELECT( "RU866" )
?
?"initial 866:"
for each i in arr866
  ? " ",i
end

?"sorted:"
asort (arr866)
for each i in arr866
  ? " ",i
end

Return Nil
-----------------------------------------------------



в результате получаем:


  
HB_CDPSELECT( "RU866")             
привет 866...         
яЁштхЄ 1251 
=====================
HB_CDPSELECT( "RUWIN" )
ЇаЁўҐв 866...         
привет 1251 
          
initial 1251:
  Яркий     
  синий
  Воздушный
  шарик   
  яркий
  Синий
  воздушный
  Шарик   
sorted:
  Воздушный
  Синий   
  Шарик
  Яркий
  воздушный
  синий   
  шарик
  яркий
      
initial 866:
  яркий    
  Синий
  воздушный
  Шарик   
  Яркий
  синий
  Воздушный
  шарик   
sorted:
  Воздушный
  Синий   
  Шарик
  Яркий
  воздушный
  синий   
  шарик
  яркий


значит сортировка работает корректно!