Sunday, December 27, 2009

Stable Harbour 2.0.0 (r13372) Released

CCH : Great news for Harbour Developers !

Hi All,

Harbour 2.0.0 (r13372) source archives and Windows binary
releases are available for download on sourceforge.net;

sourceforge.net/projects/harbour-project/files/

Make sure to check INSTALL doc "QUICK START" section and visit
our user forums at;

sourceforge.net/apps/phpbb/harbour-project/

Release notes;
-----------------------------------------------------------------------
Unified Windows release for most supported compilers and
x86, x64, WinCE/ARM, MS-DOS, OS/2, Linux target platforms.

Installed size; 214MB (54MB - 339MB)

The default installation will install MinGW compiler + x86 static and
shared libs, MSVC and BCC x86 libs and examples.

Options; x86 shared tools, x64 shared tools, MinGW x64 and
WinCE-ARM libs, MSVC x64 libs, Open Watcom x86 libs,
shared x64/WinCE-ARM libs, MS-DOS (watcom) libs, OS/2 (watcom)
libs, Linux (watcom) libs.

Usage;
1) install/unpack to any directory (C;\hb20)
2) go to bin dir (optional if you specify path for hbmk2)
3) For x86 executable, type; ’hbmk2 ../tests/hello.prg’
4) For x64 executable, type; ’hbmk2 ../tests/hello.prg -compiler=mingw64’
[needs mingw64 to be installed in ’comp/mingw64’ dir beforehand]
5) For WinCE/ARM executable, type; ’hbmk2 ../tests/hello.prg -platform=wce’
[needs cegcc to be installed in ’comp/mingwarm’ dir beforehand]
6) For MS-DOS executable, type; ’hbmk2 ../tests/hello.prg -platform=dos’
[needs OpenWatcom to be installed in ’comp/watcom’ dir beforehand]
7) For Linux executable, type; ’hbmk2 ../tests/hello.prg -platform=linux’
[needs OpenWatcom to be installed in ’comp/watcom’ dir beforehand]

Tool/lib versions used to create this package;
-----------------------------------------------------------------------

Compiler tools
--------------

MinGW GNU C 4.4.1 TDM-2 (included)
MinGW w64 GNU C 4.5.0-20091118
MinGW CEGCC 4.4.0
MSVC 2008 (version bundled with MS Windows SDK 7)
Open Watcom C 1.8
Borland C/C++ 5.5.1

External lib dependencies
-------------------------

ACE 9.10
Allegro 4.2.2
Blat 2.6.2
Cairo 1.8.8
libcurl 7.19.6
Firebird 2.1.3
FreeImage 3.13.0
GD 2.0.35
MySQL 5.1.41
OpenSSL 0.9.8k
PostgreSQL 8.4.2-1
QT 4.5.3
WATTCP 2.2.10

Changes since previous (2.0.0beta3 20090905) release;
-----------------------------------------------------------------------

- Harbour updated to r13359 (from r12422)
- MinGW CEGCC updated to 4.4.0
- upx updated to 3.04.
- MinGW 4.4.1 updated to TDM-2 release fixing a performance problem.
- MinGW w64 updated to latest binary release.
- DJGPP build in unified release replaced with OpenWatcom MS-DOS build.
- External libs updated (except OpenSSL and libcurl).
- hbwin cleanups/fixes (printer handling) and improvements (mutex, MAPI, misc)
- hbwin OLE2, ActiveX support improved and finalized.
- hbwin full UNICODE support and cleanups.
- hbwin basic win64 .dll support.
- hbtip POP3/SMTP fixes, encoding/charset support.
- Added hbmemio contrib.
- hbnetio finalized.
- hbqt cleanups and improvements, QT 4.6 support.
- hbide (early development stage).
- Documentation enhancements; INSTALL and doc/xhb-diff.txt.
- hbmk2 got support to convert xMate, hbmake and xbuild make files to .hbp
format.
- Added hbsms contrib library (to send SMS text messages in multiplatform way).
- gtwvg now builds in win64 mode.
- Rudimentary port of GTWVW (find it in examples)
- New hbcairo wrapper for cairo lib.
- Improved code portability for startup code, C++ mode and
to support for old GCC versions.
- Added public Harbour C level API to handle GC collected pure pointers.
- Added workaround fox Pelles C 6.0 bug, so now it can be used
with Harbour for win32 and wince. Win64 build still doesn’t work,
due to other POCC6 bugs.
- Fixed to support MSVC 6.0.
- dlmalloc memory allocator now also optimized for MT mode.
- DJGPP builds received support for .dxe dynamic libs.
- MS-DOS build included in unified release package is now built
with OpenWatcom rather than DJGPP.
- OpenWatcom now builds in plain C mode (instead of C++)
- Included MSVC build is now a UNICODE build.
- Changed all Harbour to use WIDE Windows API calls only in UNICODE mode.
- New Harbour C level UTF-8 and UTF-16 string handling functions.
- Rewritten internal codepage and collation support. Collations
are now ensured to be CA-Cl*pper compatible.
- HB_TRANSLATE() now supports UTF-8.
- OS/2 platform support improvements (watcom, .dll support, GCC OMF support).
- gtxwc fixes.
- General finalization to *nix Harbour dynamic library generation built into
build system.
- Generalized the way zlib and pcre embedded sources are handled.
- Finalized new pure GNU Make based build system.
- Embedded libharu made available for MS-DOS Harbour builds,
plus many other leveling of MS-DOS port.
- Added Blowfish encryption functions to core.
- Added experimental win64 binary build of GNU Make.
- Synced with some new features that appeared in xhb, plus some missing
features from past versions.
- New Harbour port to Haiku/BeOS.
- Updated embedded components.
- Cleaned all test code from Harbour -w3 level warnings.
- hbmk2 now supports the same C warning levels as build system.
- hbmk2 now supports built-in native .c / .prg dependency detection.
- hbmk2 tested/finalized for *nix systems.
- hbmk2 now supports upx on *nix systems.
- New hbdoc2 tool at development stage.
- Support for linux/open64, linux/clang compilers.
- Build system now uses automatic version detection for MSVC compilers.
- Core trace message functionality improvements (new .prg level
interface, Windows OutputDebugString support)
- New SET( _SET_DBCODEPAGE ).
- RDDADS fixes.
- Removed support for harbour.cfg and Harbour compiler -go output mode.
- New Harbour types (HB_SIZE, HB_BOOL, etc).
- Moved rddado from contrib area to examples.
- Deleted hbmake from examples.
- Many other smaller improvements, additions, fixes, cleanups.
- For 3rd party developers it’s recommended to look for the word
"incompatibility" in ChangeLog to find spots which may imply changes
on their part.

Changes since previous (2.0.0beta2 20090624) release;
-----------------------------------------------------------------------

- Harbour updated to r12422 (from r11508)
- Rewritten socket library.
- Fixed remaining Clipper compatibility issues (@.clp, SET PROC TO, DO WITH, etc)
- Added replaceable core file I/O layer.
- Reworked build system with integrated dynlib creation, cross-platform
support, compiler and external component autodetection and much more.
- MinGW updated to 4.4.1
- MinGW x64 updated to 4.5.0 (20090905)
- Finalizing ActiveX/OLE2 support.
- Timestamp/datetime support in core.
- Added MT support for dos platform.
- Added socket support for dos platform (via WATTCP lib).
- Added hbnetio lib client/server file I/O implementation.
- hbxbp lib about feature complete.
- wce/msvcarm target improvements, sunpro compiler support.
- hbssl OpenSSL wrapper lib.
- SSL support in hbtip lib.
- Serial communication fixes in hbwin/hbtpathy on win platform.
- Lots of other additions and some fixes.
- Changed default install path to be ’hb20’ rather than ’harbour20’,
to avoid long filenames.
- Replaced mingw64 built x64 shared tools with msvc64 builds, as
the former didn’t work.
- Included hbqt lib which links against static QT libs.

Changes since previous (2.0.0beta1 20090609) release;
-----------------------------------------------------------------------
- Harbour updated to r11508 (from r11287)
- New User’s Forum linked
- upx compressor included in install package
- DOS cross build libs included in install package
- preparation to host 3rd party packages inside Harbour directory tree
- new "zero-conf" library install system in preparation
- hbmk2; lots of minor refinements, support for all free compilers
in embedded form, support spaces in filenames/paths, all Harbour
supported C compilers have now complete support in hbmk2
- DOS support tested and required fixes applied
- embedded compilers moved to ’comp’ subdir
- support for latest MinGW x64 and MSVS 2010 compilers
- extended INSTALL with new examples and app build quick guide
- icon for installer and hbrun tool
- hbxbp and hbqt enhancements
- hbwin refinements and better compatibility
- new uhttpd2 sessioned HTTP server
- C++ build support for all compilers, new HB_WAEVAL() function,
new xpp (Xbase++ compatibility) lib, .hrb loading enhancements
- DBU, RL, SuperLib fixes.
- MinGW64 updated to 4.4.1
- There were a few changes in this release which may require updating
your source code (hb_par*()/hb_stor*() in .c files and GTWVG WIN_*()
function in .prg files). Search for ’incompatible’ word in ChangeLog
for more.
-----------------------------------------------------------------------

Changes since previous (1.1.0dev 20090602) release;
-----------------------------------------------------------------------
- Harbour updated to r11287 (from r11179)
- all contrib tests included in install package
- All 3rd party packages upgraded to latest version.
- hbmk2; project support, new file extensions, fixes, Harbour 1.0.x
support.
- further simplified/updated build process and instructions
- hbqt many enhancements
- almost full xhb compatibility
- ’terminal’ fixed in examples
- source formatter, Cl*pper RL tool, legacy hbmake added
- MT Xbase++ compatibility
-----------------------------------------------------------------------

Changes since previous (1.1.0dev 20090408) release;
-----------------------------------------------------------------------
- Harbour updated to r11179 (from r10819)
- Updated hbmk2 (filter issues + experimental Harbour 1.0.x support)
- Included contrib tests/utils
- Full and now standalone ’examples’
- ’tests’ with subdirs included.
- No longer included pocc/pocc64/poccarm libs.
- QT updated to 4.5.1
- MinGW updated to 4.4.0

--
Brgds,
Viktor Szakats

Tuesday, December 15, 2009

Harbour MiniGUI 1.7 Extended Edition (Build 78a) Released on 15 December 2009

CCH: From the HMG Extended Forum

Hi All,

The Harbour MiniGUI 1.7 Extended Edition (Build 78a) setup is published at the following URL:

http://hmgextended.com/files/CONTRIB/hmg-1.7-78a-setup.zip

and the Lite build 78a at the following URL:

http://hmgextended.com/files/CONTRIB/hmg-1.7-78a-setup-lite.zip

There is the following changelog for this build below:

2009/12/15: Build 78a Christmas Edition (HMG 1.7 Extended Edition) Published.
* Fixed: The wrong keeping of the Justify array in the Browse control (introduced in the build 10).
Bug was reported by Constantin Rusu <crusuc@yahoo.com>.
Contributed by Grigory Filatov <gfilatov@freemail.ru>

This release of MiniGUI is considered stable and ready for production use.

Sorry for any inconvenience!

--
Best Regards,
Grigory Filatov
[MiniGUI Team]

P.S. I've dedicated this build to my wife's birthday. She is .. years today ;-)

Monday, December 14, 2009

Harbour MiniGUI 1.7 Extended Edition (Build 78) Released

CCH: From the HMG Extended Forum

Hi All,

The Harbour MiniGUI 1.7 Extended Edition (Build 78) setup is published at the following URL:

http://hmgextended.com/files/CONTRIB/hmg-1.7-78-setup.zip

and the Lite build 78 at the following URL:

http://hmgextended.com/files/CONTRIB/hmg-1.7-78-setup-lite.zip

There is the following changelog for this build below:

2009/12/14: Build 78 Christmas Edition (HMG 1.7 Extended Edition) Published.
* Fixed: The correction of return default value in the registry class (introduced in the build 64).
Bug was reported by Roberto Lopez <harbourminigui@gmail.com>.
Contributed by Grigory Filatov <gfilatov@freemail.ru>
* Fixed: Problem with right/left column aligning at the HeaderImage clause in the Browse/Grid.
Contributed by Grigory Filatov <gfilatov@freemail.ru>
(see demo in folder \samples\Basic\DirList)
* Changed: The function C_GetDllSpecialFolder() is guarded by constant __WIN98__ in the sources.
You may comment the constant #define __WIN98__ in c_winapimisc.c and h_winapimisc.prg
if you have a problem in the Windows 9X. Requested by Rossine <qiinfo@ig.com.br>.
Contributed by Grigory Filatov <gfilatov@freemail.ru>
* Changed: The Harbour Tget class is moved into the Minigui core for GETBOX control support.
The Harbour RTL library uses the original Tget class from Harbour SVN now.
Suggested by Viktor Szakats (harbour.01 syenar.hu).
Contributed by Grigory Filatov <gfilatov@freemail.ru>
* Updated: HbSQLite3 library source code (see in folder \Source\HbSQLite3):
- updated for using SQLITE3 version 3.6.21
Contributed by Grigory Filatov <gfilatov@freemail.ru>
(see demos in folders \samples\Advanced\SQLITE and \samples\Advanced\SQLITE_2)
* Updated: Harbour Compiler 2.0.0beta3 (SVN 2009-12-10 16:10):
* Updated: HbSqlDD library source code (see in folder \Source\HbSqlDD);
* Updated: Harbour license (see COPYING in folder \harbour);
Requested by Viktor Szakats (harbour.01 syenar.hu).
* New: HBMK2 utility source code (see in folder \Utils\hbmk2).
Requested by Viktor Szakats (harbour.01 syenar.hu).
Contributed by Grigory Filatov <gfilatov@freemail.ru>
(look at ReadMe.txt in folder \harbour and WhatsNew.txt in folder \harbour\doc)
* Updated: HMGS-IDE v.0.9.7. Project Manager and Two-Way Visual Form Designer.
Contributed by Walter Formigoni <walter.formigoni@uol.com.br>
(look at changelog.txt in folder \Ide)
* New: 'Custom progress bar' sample. Contributed by S.Rathinagiri <srgiri@dataone.in>.
Adapted for Minigui Extended by Grigory Filatov <gfilatov@freemail.ru>
(see in folder \samples\Basic\PROGRESSBAR_2)
* Updated: 'ActiveX Flash' sample is based upon the Shockwave FlashPlayer ActiveX.
Contributed by Grigory Filatov <gfilatov@freemail.ru>
(see demo3.prg in folder \samples\Basic\ActiveX)
* Updated: 'My Dbf Browse' sample. Based upon a contribution by MigSoft yahoo.com>.
Contributed by Grigory Filatov <gfilatov@freemail.ru>
(see in folder \samples\Basic\BROWSE_8)
* Updated: 'Monthcal control' sample supports navigation with the arrow keys.
Requested by Rossine <qiinfo@ig.com.br>.
Contributed by Grigory Filatov <gfilatov@freemail.ru>
(see month.prg in folder \samples\Basic\Monthcal)
* Updated: 'XMas Lights' sample. Contributed by Grigory Filatov <gfilatov@freemail.ru>
(see in folder \samples\Applications\

XMasLights)
* Changed: The folder \samples\Basic\TextBtn was renamed to \samples\Basic\BTNTEXTBOX_2.
Requested by Walter <walhug@yahoo.com.ar>.
* Removed: 'PDF Reader' sample not working on current Harbour release.
Look at demo4.prg in folder \samples\Basic\ActiveX instead.

This release of MiniGUI is considered stable and ready for production use.

Your comments/feedback are welcome!

--
Best Regards,
Grigory Filatov
[MiniGUI Team]

Thursday, December 10, 2009

Latest HMGS-IDE 0.9.6 Released

CCH : From the HMG Extended Forum

Hi All,

The updated HMGS-IDE 0.9.6 binary and sources are published
at the following URL:
http://www.hmgextended.com/files/HMGS-IDE/ide.zip

There is the following changelog for this version by Walter Formigoni:

2009-12-09: VERSION 0.9.6
*New : Option in menu Project->Build (With HBMK2) for BCC.
*Fixed : in definecolor.fmg missing default value 1 in controls radiogroup. reported by Marcelo Brigatti <sistemasies@gmail.com>
*Fixed : when load uci control inside tab not connect control with tab
*Fixed : when click in uci control saved from form not show control in object inspector.
*Fixed : when select empty combo item of uci control and click in form. Reported by Sudip <sudipb001@gmail.com>

It will be included at the next Minigui EE build (coming soon).

--
Kind Regards,
Grigory Filatov
[MiniGUI Team]

Thursday, November 26, 2009

Harbour MiniGUI 1.7 Extended Edition (Build 77) Released

CCH : From the HMG Extended Forum


Hi All,

The Harbour MiniGUI 1.7 Extended Edition (Build 77) setup is published at the following URL:

http://hmgextended.com/files/CONTRIB/hmg-1.7-77-setup.zip

and the Lite build 77 at the following URL:

http://hmgextended.com/files/CONTRIB/hmg-1.7-77-setup-lite.zip

There is the following changelog for this build below:

2009/11/26: Build 77 (HMG 1.7 Extended Edition) Published.
* New: 'ODBC Database Driver' library source code (see in folder \Source\HbSqlDD).
Based upon a contribution by Mindaugas Kavaliauskas dbtopas.lt>
(see demo in folder \samples\Advanced\OdbcDD)
* Fixed: The new ButtonEx behaviour breaks hotkeys and spacebar pressing if the mouse cursor
is placed out of button field (introduced in the build 76).
Problem was reported by Rossine <qiinfo@ig.com.br>.
Contributed by Grigory Filatov <gfilatov@freemail.ru>
* Fixed: The Interval value of Timer control did not kept at the change in the _SetValue().
Contributed by Grigory Filatov <gfilatov@freemail.ru>
* Changed: Correction of using dbunlock() function after editing in the Browse control.
You can use a Browse for editing of array (based upon SqlMix Harbour contrib).
Contributed by Grigory Filatov <gfilatov@freemail.ru>
(see demo in folder \samples\Advanced\ArrayRDD)
* Changed: Replacing the cycles For-Next with For Each-Next or array evaluation of codeblock
for improvement of the speed in the following internal functions:
- _ActivateWindow();
- _ShowWindow();
- _ReleaseWindow();
- _hmg_OnHideFocusManagement();
- _SetValue();
- _DisableControl();
- _EnableControl();
- _ShowControl();
- _HideControl().
Contributed by Grigory Filatov <gfilatov@freemail.ru>
(see demos in folder \samples\Basic\NOAUTORELEASE)
* Enhanced: The Image Button control with ICON clause supports an optional
EXTRACT clause.
Syntax:
@ 10,10 BUTTON Button_1 ;
ICON cFileWithIconResource ;
EXTRACT nIconIndex ;
ACTION bAction
Contributed by Grigory Filatov <gfilatov@freemail.ru>
(see demo in folder \samples\Basic\ExtractIcon)
* Updated: Synchronized an Extended HMG with an Official HMG 3.0.0:
- Fixed: Problems with numeric group expression in the report generator.
Reported by Fernando Chirico.
- Fixed: Problem when group header is omitted in the report generator.
Reported by Sudip.
(see demos in folder \samples\Advanced\REPORT_

GENERATOR)
* Updated: Harbour Compiler 2.0.0beta3 (SVN 2009-11-24 13:20):
* Updated: HbSqlDD library source code (see in folder \Source\HbSqlDD).
Contributed by Grigory Filatov <gfilatov@freemail.ru>
(look at ReadMe.txt in folder \harbour and WhatsNew.txt in folder \harbour\doc)
* New: 'ActiveX Preview' sample is based upon the WinXP PictureViewer ActiveX.
Contributed by Grigory Filatov <gfilatov@freemail.ru>
(see demo6.prg in folder \samples\Basic\ActiveX)
* New: 'Xtract - Data Cube' sample.
Contributed by S.Rathinagiri <srgiri@dataone.in>.
Adapted for Minigui Extended by Grigory Filatov <gfilatov@freemail.ru>
(see in folder \samples\Advanced\DataCube)
* New: 'Simple NetIO Server and Client' samples are based upon a Harbour HbNetIO library.
Contributed by Grigory Filatov <gfilatov@freemail.ru>
(see demos in folders \samples\Advanced\NETIO_1 and \samples\Advanced\NETIO_2)
* Updated: 'FreeImage Viewer' sample. Contributed by Grigory Filatov <gfilatov@freemail.ru>
This sample is required a library FreeImage.Dll from http://freeimage.sourceforge.net
(see in folder \samples\Advanced\FREEVIEW)
* Updated: 'Report Generator 2' sample by Roberto Lopez <harbourminigui@gmail.com>.
Contributed by Grigory Filatov <gfilatov@freemail.ru>
(see demo2.prg in folder \samples\Advanced\REPORT_GENERATOR_2)

This release of MiniGUI is considered stable and ready for production use.

Your comments/feedback are welcome!

--
Best Regards,
Grigory Filatov
[MiniGUI Team]

Sunday, November 22, 2009

GTWVW documentation in english

CCH: From comp.lang.xHarbour

Hi All,


You can download a GTWVW documentation in english :

http://www.4shared.com/file/154673314/15cd45c6/doc_gtwvw_english.html


Best Regards,

M.Angeiras

Tuesday, November 17, 2009

ROADMAP TO HBIDE - Prtipal Bedi -17 th Nov 2009

CCH : From the Harbour Main Developers List

2009/11/17 Pritpal Bedi <bedipritpal@hotmail.com>:

Hello All

Just a start for more discussions...

EMERGENCE OF THIS IDEA

Massimo: initiated idea to have "xMate" or "xMate like"   edit/compile/link/run cycle IDE but available for all   platforms  Harbour support.

Viktor: presented the minimum requirements an IDE must contain
  0) Availability on OS X, Linux and Windows x86 and x64.
  1) Very good editor with block editing capability, syntax
     highlighting, possibly "intellisense". Project-wide
     search and replace. Support for all CPs Harbour supports.
     ( syntax highlighting for: prg, c and cpp )
  2) Integration with VCS.
  3) Integrated build tool.
  4) Integrated project management.

Istvan: extended 3) above as  3.1) Integrated debugger.

Francesco: suggested to integrate "Eclipse" which he thought, and others supported, is a great tool, but also expressed that  he has no knowledge, so far, how it can be integrated with Harbour.

MY VIEWPOINT

Since the day Andy started development on xMate, I remained in  touch with this project and we had numerous talks about its features. since then xMate is an integral part of my development cycles. I am rather
a dire fan of xMate.

As this is a Windows only solution, it will probably be hard to port it to  any other platform, unless a great amount of time is not invested into it.

As of now I do not have requirements to convert my applications on all  platforms and as such xMate completely fulfils my needs.

Having said that, still, I am keen on developing an IDE, to a level  resembling  to xMate ( because of my intimacy as well a big user base ) in functionality  but extending it in other ways.

ROADMAP TO HBIDE:

0. Development style : PRG
1. Primary coding style : HBXBP
2. Extended calls ( if could not be included in HBXBP ) : HBQT
3. Base protocol for COMPILE/LINK cycle : HBMK2
4. 1st version : xMate like functionality
5. 2nd version : Integration of Qt CREATOR and .ui components
6. ...


BENEFITS ( apart from a multi-platform usage ):

1. Xbase++ class framework will be extended to include some very fine Qt extensions.
2. HBQT will be extented to include missing components which might be  necessary.
3. The resulting application will show up the strength of so many Harbour
4. The resulting application will offer a application framework for GUI development  to the beginners, i.e., it itself will be a demo application.

LOCATION

harbour/contrib/hbide

NAME

HBIDE - Harbour's Integrated Development Environment

CHANCES OF SUCCESS


Because project is purely based on PRG code, it is highly possible that  a lot of you may join this effort, not only for coding but also for debugging, suggestions  and whatever... So I see in optimism for its succeess.

DETERMINATION

I am geared up for its development no matter what will be the consequences, failure or success.
First commit will be around this weekend though I am in a position to show you up something.

NEXT REQUISIT

Your support in terms of vocalness.


Regards
Pritpal Bedi

Wednesday, November 11, 2009

Harbour MiniGUI 1.7 Extended Edition (Build 76) Released on 11 Nov 2009

CCH: From the HMG Extended Forum

Hi All,

The Harbour MiniGUI 1.7 Extended Edition (Build 76) setup is published at the following URL:

http://hmgextended.com/files/CONTRIB/hmg-1.7-76-setup.zip

and the Lite build 76 at the following URL:

http://hmgextended.com/files/CONTRIB/hmg-1.7-76-setup-lite.zip

There is the following changelog for this build below:

2009/11/11: Build 76 (HMG 1.7 Extended Edition) Published.
* Fixed: The Masked Textbox control execute 'On Change' procedure at the GotFocus and
LostFocus events. It exists in the official version too.
Reported by Marcelo Torres <lichitorres@yahoo.com.ar>.
Contributed by Grigory Filatov <gfilatov@freemail.ru>
(see numeric.prg in folder \samples\Basic\INPUTMASK)
* Fixed: Problem in the function _BeginTabPage() with the default Tab tooltip array assigning
(introduced in the build 71).
Contributed by Grigory Filatov <gfilatov@freemail.ru>
* New: Added read/write user property 'Cargo' for standard controls.
You can set/get this property at runtime:
- function syntax:
SetProperty ( Form, Control, 'Cargo', xUserData )
GetProperty ( Form, Control, 'Cargo' ) --> xUserData
- pseudo-OOP syntax:
Form.Control.Cargo := xUserData
Form.Control.Cargo --> xUserData
Requested by Rossine <qiinfo@ig.com.br>.
Contributed by Grigory Filatov <gfilatov@freemail.ru>
(see demo in folder \samples\Basic\Cargo)
* Enhanced: The methods EnableUpdate and DisableUpdate support the TBrowse control also.
Suggested by Francek Prijatelj <francek.prijatelj@siol.net>
* Enhanced: The controls with 'Field' clause have a checkup in the Refresh and Save methods.
Contributed by Grigory Filatov <gfilatov@freemail.ru>
(see demo in folder \samples\Basic\DATA_BOUND)
* Changed: The ButtonEx control will not carry out the 'Action' event when cursor is located
out of the field of the button at the mouse left button up.
This behaviour is similar to the standard Button control.
Requested by Vianei Moreira de Lemos <vianeimoreira@gmail.com>.
Contributed by Grigory Filatov <gfilatov@freemail.ru>
(see demo.prg in folder \samples\Basic\ButtonEx)
* Changed: The InputBox window supports a resizing of width and autosized description label.
Contributed by Grigory Filatov <gfilatov@freemail.ru>
(see demo in folder \samples\Basic\InputBox)
* Updated: Synchronized an Extended HMG with an Official HMG 3.0.0:
- Updated: 'build.bat' will create an 'error.log' file in the app folder when build
process ends with an error condition.
Syntax of :

incpaths = incpath1 incpath2 ... incpathn

libpaths = libpath1 libpath2 ... libpathn

libs = lib1 lib2 ... libn

- library names must not include a '.lib' extension.
(see demo in folders \samples\Advanced\HaruPDF and \samples\Applications\PROCESS_

KILLER)
* Updated: Adaptation FiveWin Class TSBrowse 7.0 in HMG:
- Enhanced: Added the possibility of defining SuperHeader directly in the definition TBrowse.
SuperHeader name in this case is separated from the Header name by symbol '~' (tilde).
- Enhanced: Assigns colors for SuperHeader by Method SetColor() individually for each column.
Added the new constants for SetColor:
- CLR_SUPF 16 // superheader text
- CLR_SUPB 17 // superheader back
- Enhanced: Change font in SuperHeader by Method ChangeFont() individually for each column.
New Syntax for ChangeFont:
oBrw:ChangeFont( nFontHandle, nSuperHeader, 4 ) // 4 = Constant for SuperHeader
Contributed by Janusz Pora <januszpora@onet.eu>
(see demo at Menu TSBrowse->'Grid form' in folder \samples\Advanced\TSBrowse)
* Updated: HbSQLite3 library source code (see in folder \Source\HbSQLite3):
- updated for using SQLITE3 version 3.6.20
Contributed by Grigory Filatov <gfilatov@freemail.ru>
(see demos in folders \samples\Advanced\SQLITE and \samples\Advanced\SQLITE_2)
* Updated: Harbour Compiler 2.0.0beta3 (SVN 2009-11-10 09:43):
* New: most important differences between Harbour and xHarbour by Przemyslaw Czerpak
(see xhb-diff.txt in folder \harbour\doc);
* Updated: HaruPDF library source code (see in folder \Source\HaruPDF);
* Updated: HbSQLite3 library source code (see in folder \Source\HbSQLite3).
Contributed by Grigory Filatov <gfilatov@freemail.ru>
(look at ReadMe.txt in folder \harbour and WhatsNew.txt in folder \harbour\doc)
* Updated: HMGS-IDE v.0.9.5. Project Manager and Two-Way Visual Form Designer.
Contributed by Walter Formigoni <walter.formigoni@uol.com.br>
(look at changelog.txt in folder \Ide)
* New: 'ActiveX Calendar' sample is based upon the ActiveX control MSCal.ocx
from MS Office. Contributed by Grigory Filatov <gfilatov@freemail.ru>
(see demo5.prg in folder \samples\Basic\ActiveX)
* Updated: 'Custom Button' user component sample:
- Fixed: conflict of user handler procedure with menu actions.
Contributed by Grigory Filatov <gfilatov@freemail.ru>
(see mybutton.prg in folder \samples\Basic\USER_COMPONENTS)
* Updated: 'Minimize/Maximize External Application' sample.
Contributed by Grigory Filatov <gfilatov@freemail.ru>
(see demos in folder \samples\Advanced\ExternalApp)
* Updated: 'Haru PDF' sample.
Problem was reported by Luiz Escobar <escobar@megasistema.com.br>.
Contributed by Grigory Filatov <gfilatov@freemail.ru>
(see in folder \samples\Advanced\HaruPDF)
* Updated: 'Report Generator 2' sample by Roberto Lopez <harbourminigui@gmail.com>.
Adapted for HbPrinter by Pierpaolo Martinello alice.it>
(see demo2.prg in folder \samples\Advanced\REPORT_GENERATOR_2)
* Updated: 'WMI Service usage' sample:
- New: show OS environment variables.
Contributed by Grigory Filatov <gfilatov@freemail.ru>
(see demo2.prg in folder \samples\Advanced\WMI_Service)

This release of MiniGUI is considered stable and ready for production use.

Your comments are welcome!

--
Best Regards,
Grigory Filatov
[MiniGUI Team]

P.S. There is the following message in the current Harbour changelog:
+ added new CDP API which fixes many errors and limitations in old
implementation.
Warning !!! some very serious bugs in national sorting have been
fixed. It may cause that old indexes using some national
sorting will not be compatible. Please rebuild existing
indexes.

Sunday, November 1, 2009

Updated HMGS-IDE 0.9.5 binary and sources released


CCH: From the HMG Extended Forum

Hi All,

The updated HMGS-IDE 0.9.5 binary and sources are published
at the following URL:
http://www.hmgextended.com/files/HMGS-IDE/ide.zip



There is the following changelog for this version by Walter Formigoni:

2009-10-31: VERSION 0.9.5
*Added: in buildprocess to show fmg changed in modified files/dependences. Requested by Luciano <suporte@lmi-informatica.com.br>
*Changed :edit_1 in xgrideventtxt.fmg do not show horizontal scrollbar. Requested by Luciano <suporte@lmi-informatica.com.br>
*Changed : do not show radiogroup_1 and text_1 in xgridpropcombo and xgridpropedit if property is logical.
*Changed do not got error when manually use var in property BACKCOLOR of control EDITBOX. Requested by Pedro <drinol@yahoo.com>

--
Kind Regards,
Grigory Filatov
[MiniGUI Team]

Wednesday, October 21, 2009

Harbour MiniGUI 1.7 Extended Edition (Build 75) Released

CCH : From the HMG Extended Forum

Hi All,

The Harbour MiniGUI 1.7 Extended Edition (Build 75) setup is published at the following URL:

http://hmgextended.com/files/CONTRIB/hmg-1.7-75-setup.zip

and the Lite build 75 at the following URL:

http://hmgextended.com/files/CONTRIB/hmg-1.7-75-setup-lite.zip

There is the following changelog for this build below:

2009/10/21: Build 75 (HMG 1.7 Extended Edition) Published.
* New: 'Application' object. It will allow to read (and write when possible)
various application main window properties.
Syntax:
Application.ExeName
Application.Handle
Application.FormName

Application.Col [ := ]
Application.Row [ := ]
Application.Width [ := ]
Application.Height [ := ]
Application.Title [ := ]
Application.Cursor :=
Application.BackColor :=
Application.Topmost :=
(see demo in folder \samples\Basic\MULTI_PRG)
Contributed by Grigory Filatov <gfilatov@freemail.ru>
* New: Added a pseudo-function ChangeFileExt( , ). It will return
the full filename with changed extension.
Usage:
cFileIni := ChangeFileExt( Application.ExeName, '.ini' )
Based upon an idea borrowed from Delphi.
Contributed by Grigory Filatov <gfilatov@freemail.ru>
* Fixed: The declaration for all minigui defined functions/procedures.
Problem was reported by Rossine <qiinfo@ig.com.br>
(see mgextern.ch in folder \include)
* Fixed: The Up/Down moving issues in "Browse from rc" and "Browse indirect".
Problem was reported by Jaroslav Janik <jaroslav.janik@siemens.com>.
Contributed by Janusz Pora <januszpora@onet.eu>
(see demo in folder \samples\Basic\Dialog)
* Changed: Function GetFile() - minor correction in the multiselect mode.
Requested by Ryszard Rylko <rrylko@cirow.pl>.
Contributed by Grigory Filatov <gfilatov@freemail.ru>
(see demo in folder \samples\Basic\GetFile)
* Updated: Synchronized an Extended HMG with an Official HMG 2.7.0:
- New: 'System' object. It will allow to read (and write when possible)
various operating system properties.
The first implementation allows to access (read and write) the system
clipboard and various system settings (read only).
Syntax:
System.Clipboard [ := ]

System.DesktopWidth
System.DesktopHeight
System.DefaultPrinter
System.DesktopFolder
System.MyDocumentsFolder
System.ProgramFilesFolder
System.SystemFolder
System.TempFolder
System.WindowsFolder
(see demo in folder \samples\Basic\CLIPBOARD).
* Updated: Synchronized an Extended HMG with an Official HMG 3.0.0:
- New: 'Build.bat' is based upon HBMK2 utility (it works at WinXP and later).
Syntax:
Build [/d] [/i] [/r] | [config.hbc]
where
[/d] : Debug Mode
[/i] : Incremental Build
[/r] : Rebuild All Mode

: A text file with a source filelist
: A text file with configuration parameters as additional
libs, include paths and lib paths
(see demos in folders \samples\Basic\MULTI_PRG and \samples\Basic\MAINDEMO (SYNTAX I))
* Updated: WinReport library (see source in folder \Source\WinReport).
Contributed by Pierpaolo Martinello alice.it>
(see demo in folder \samples\Advanced\REPORT_

INTERPRETER and
help file WinReport.chm in folder \Doc)
* Updated: Socket library v.1.07:
- Fixed: minor correction in the C-function SocketReceive()
Suggested by Przemyslaw Czerpak (druzus/at/priv.onet.pl).
(see socket.c in folder \Source\Socket)
* Updated: HbSQLite3 library source code (see in folder \Source\HbSQLite3):
- updated for using SQLITE3 version 3.6.19
Contributed by Grigory Filatov <gfilatov@freemail.ru>
(see demos in folders \samples\Advanced\SQLITE and \samples\Advanced\SQLITE_2)
* Updated: Harbour Compiler 2.0.0beta3 (SVN 2009-10-20 01:20):
* New: Memory File System usage (see demo in folder \samples\Advanced\MEMORY_TABLES).
Contributed by Mindaugas Kavaliauskas (dbtopas/at/dbtopas.lt)
* Updated: HbSqlDD library source code (see in folder \Source\HbSqlDD).
Problem was reported by Luiz Escobar <escobar@megasistema.com.br>.
Contributed by Grigory Filatov <gfilatov@freemail.ru>
(look at ReadMe.txt in folder \harbour and WhatsNew.txt in folder \harbour\doc)
* Updated: HMGS-IDE v.0.9.4.2. Project Manager and Two-Way Visual Form Designer.
Contributed by Walter Formigoni <walter.formigoni@uol.com.br>
(look at changelog.txt in folder \Ide)
* New: 'My Dbf Browse' sample. Based upon a contribution by MigSoft <fugaz_cl@yahoo.es>
(see in folder \samples\Basic\BROWSE_8)
* Updated: 'Report Generator' sample by Roberto Lopez <harbourminigui@gmail.com>:
- added array support.
Syntax:
BEGIN DATA
ITERATOR
STOPPER
END DATA
The section is optional. If its omitted, 'Iterator' will be set as 'dbskip()'
and 'Stopper' as 'Eof()'. Borrowed from an Official HMG 2.9.5.
Adapted for Minigui Extended by Grigory Filatov <gfilatov@freemail.ru>
(see demo8.prg in folder \samples\Advanced\REPORT_GENERATOR)
* Updated: Applications for compatibility with the last Harbour changes:
- 'Switch Printer' (see in folder \samples\Applications\SwitchPrinter);
- 'System Info' (see in folder \samples\Applications\SysInfo).
Contributed by Grigory Filatov <gfilatov@freemail.ru>

This release of MiniGUI is considered stable and ready for production use.

Your comments are welcome!

--
Best Regards,
Grigory Filatov
[MiniGUI Team]

Tuesday, October 20, 2009

Harbour beta3 allows to use the Memory File System.

CCH : From the HMG Extended Forum

The Harbour beta3 allows to use the Memory File System.
This feature is based upon a new contribution HbMemIO by Mindaugas Kavaliauskas.
It will be available at the next HMG EE build (coming soon).
Take a look for the following sample (adapted for MiniGUI):

/*
* MINIGUI - Harbour Win32 GUI library Demo
*
* Copyright 2002-2009 Roberto Lopez <harbourminigui@gmail.com>
* http://harbourminigui.googlepages.com/
*
* Copyright 2009 Grigory Filatov <gfilatov@freemail.ru>
*
* Based on MEMIO sample included in Harbour distribution
*/

#include "minigui.ch"

REQUEST HB_MEMIO

*-----------------------------
---------------------------*
Function Main()
*--------------------------------------------------------*

DEFINE WINDOW Form_1 ;
AT 0,0 ;
WIDTH 640 HEIGHT 480 ;
TITLE 'Memory File System Demo' ;
MAIN NOMAXIMIZE ;
ON INIT OpenTable() ;
ON RELEASE CloseTable()

DEFINE MAIN MENU

DEFINE POPUP 'Test'
ITEM "Exit" ACTION ThisWindow.Release()
END POPUP

END MENU

@ 10,10 BROWSE Browse_1 ;
WIDTH 610 ;
HEIGHT 390 ;
HEADERS { 'Code' , 'Name' , 'Residents' } ;
WIDTHS { 50 , 160 , 100 } ;
WORKAREA memarea ;
FIELDS { 'Code' , 'Name' , 'Residents' } ;
JUSTIFY { BROWSE_JTFY_LEFT, BROWSE_JTFY_LEFT, BROWSE_JTFY_RIGHT } ;
EDIT ;
INPLACE ;
READONLY { .T. , .F. , .F. }

END WINDOW

CENTER WINDOW Form_1

ACTIVATE WINDOW Form_1

Return nil

*--------------------------------------------------------*
Procedure OpenTable
*--------------------------------------------------------*

CreateTable()

INDEX ON FIELD->RESIDENTS TAG residents

GO TOP

Return

*--------------------------------------------------------*
Procedure CloseTable
*--------------------------------------------------------*

DBCLOSEAREA()
DBDROP("mem:test") // Free memory resource

Return

*--------------------------------------------------------*
Function CreateTable
*--------------------------------------------------------*

DBCREATE("mem:test", {{"CODE", "C", 3, 0},{"NAME", "C", 50, 0},{"RESIDENTS", "N", 11, 0}},, .T., "memarea")

DBAPPEND()
REPLACE CODE WITH 'LTU', NAME WITH 'Lithuania', RESIDENTS WITH 3369600
DBAPPEND()
REPLACE CODE WITH 'USA', NAME WITH 'United States of America', RESIDENTS WITH 305397000
DBAPPEND()
REPLACE CODE WITH 'POR', NAME WITH 'Portugal', RESIDENTS WITH 10617600
DBAPPEND()
REPLACE CODE WITH 'POL', NAME WITH 'Poland', RESIDENTS WITH 38115967
DBAPPEND()
REPLACE CODE WITH 'AUS', NAME WITH 'Australia', RESIDENTS WITH 21446187
DBAPPEND()
REPLACE CODE WITH 'FRA', NAME WITH 'France', RESIDENTS WITH 64473140
DBAPPEND()
REPLACE CODE WITH 'RUS', NAME WITH 'Russia', RESIDENTS WITH 141900000

Return Nil

--
Regards,
Grigory

Friday, October 16, 2009

HMG Version 3.0 ... on the way

CCH : Looks as if the HMG Version 3.0 is on the way :-)

HMG 3.0.0 (Test V) Changelog:

English:
--------

- Updated: Harbour compiler to 2.0 (Created from SVN 2009.10.14).
HMG IDE 2.9.4 and earlier versions ARE NOT COMPATIBLE with this
HMG version.

- Updated: MingW compiler to 4.4.1

- Modified: Samples.

Removed: ADORDD samples (adordd not working on
current Harbour release)

Added: RDDSQL samples.

-\HMG\SAMPLES\RDD.SQL\MYSQL
-\HMG\SAMPLES\RDD.SQL\ODBC
-\HMG\SAMPLES\RDD.SQL\ARRAY
-\HMG\SAMPLES\MEMORY.TABLES
-\HMG\SAMPLES\MULTI.WIN

New: 'Build.bat' (it replaces 'compile.bat').

Build [/i|/r|/d|/cs|/ci/cr] | [config.hbc]

[/i] : incremental build
[/r] : incremental build (rebuild all)

[/cs] : Console/mixed mode (std build)
[/ci] : Console/mixed mode (incremental build)
[/cr] : Console/mixed mode (incremental rebuild all)

[/d] : Debug mode (gui and console)

: A text file with .hbp extension containing a source list
: A text file with configuration parameters as additional
libs, include paths and lib paths.

Syntax:

incpaths = incpath1 incpath2 ... incpathn

libpaths = libpath1 libpath2 ... libpathn

libs = lib1 lib2 ... libn

library names must not include 'lib' prefix nor '.a' extension.

Sample: \HMG\SAMPLES\MULTI.PRG


More at http://hmgforum.com

Tuesday, October 13, 2009

Using ADORDD with Harbour/xHarbour

Using Delphi 5 and subsequently Delphi 7, I have been using ADO to connect to databases such as MS/SQL and MySql without much issues. So in my exploration of Harbour, I note with interest that one can connect to various databases via ADORdd

Apparently Antonio Linares announce the availability of AdoRDD on 26 April 2007 and since then there have been 169 follow-up posts. There has also been some discussions on AdoRDD in the Harbour Main Developers List as well

This is what Antonio Linares posted quoted verbatim


New AdoRDD (free)

FiveTech Software and noway www.noway.com are proud to announce the availability of an early release of the ADORDD for Harbour and xHarbour. This RDD is planned to be included in the Harbour CVS so we welcome all ADO users to start testing it and colaborating in its development.

Actually this code is already working:

REQUEST ADORDD

FUNCTION Main()

USE test.mdb VIA "ADORDD"

BROWSE()

USE

RETURN nil

It has already been tested with Access and MySQL, but it should work with any DataBase engine that supports ADO.

best regards,

www.ViaOpen.com

noway www.noway.com
Fernando Mancera (Updated 20/1/2010)

Last edited by Antonio Linares on Thu May 03, 2007 11:20 am, edited 1 time in total.
regards, saludos

Antonio Linares
www.fivetechsoft.com

Sunday, October 11, 2009

HMGS-IDE 0.9.4.2 is released - 11th October 2009

CCH : From the HMG-Extended Forum





Hi All,

The updated HMGS-IDE 0.9.4.2 binary and sources are published
at the following URL:
http://www.hmgextended.com/files/HMGS-IDE/ide.zip

There is the following changelog for this version:

2009-10-10: version 0.9.4.2
*Fixed : Saving value property of TBrowse control. Bug was reported by Jaroslav Janik <Jaroslav.Janik@siemens.com>. Contribution by Grigory Filatov <gfilatov@rambler.ru>

--
Kind Regards,
Grigory Filatov
[MiniGUI Team]

Tuesday, October 6, 2009

Why does HMG use a customised version of Harbour ?

CCH : From the Harbour Main Developers List

Date: Mon, 05 Oct 2009 13:56:26 -0300
From: Roberto Lopez <roberbox@gmail.com>
Subject: Re: [Harbour] Wich is the official harbour's user group?

Massimo Belgrano wrote:

 > Please Roberto lopez when you see this messages post your right reply
 >
 > Will harbour and hmg share an harbour corner to made assistance to
 > either final user?
 >

At first, regarding the name:

When I've created the library, It was only a simple experiment about
Harbour-C interface, so, I've not care about the name so much :)

I've picked "MiniGUI" because the library featured only a minimal
functionality/GUI object set, so, it appeared to be a good choice.

Some time later, I've realized that a Linux product existed with the
same name, so I've decided to add 'Harbour' to the name.

 From that time, the library was called 'Harbour MiniGUI'. So, avoiding
the name conflict and also made clear my compiler preferece.

There was another problem to solve, I had LOTS of support requests
regarding issues about Harbour and C compiler installation/compatibility.

Then I've decided to package all needed things ready to use with zero
configuration (this was possible with the great help of Lorenzo Fiorini
on MingW compatibility issues).

 From the first 'ready to use' distribution (MiniGUI library + MingW +
Harbour) I've decided to use an alternate name: "HMG". Of course, it
stands for *H*arbour *M*ini *G*ui (indeed, "Harbour MiniGUI" is a not
good one name at all :) )

Regarding the HMG Forum, Viktor is rigth about that the Harbour version
bundled with HMG is a customized version. Moreover, the customization is
minimal (contrib library names are not changed).

Moreover, there is certainly a lack of 'official' Harbour support to users.

Across years I've received tons of bugs reports about Harbour, that I
can't handle because lack of time or knowledge (mostly about
rdd/database issues).

Harbour official users lists is usually inactive, then, some users come
here (not the right place, of course).

HMG Forum site owner and admin is Rathinagiri (a long time HMG user and
contributor) so, he is the right person to ask about this.

 From my part (I've not followed the complete thread about this) there
is no problem to add a specific area on the forum to give support to
Harbour compiler specific issues, but, of course, we will need the
collaboration of some of the Harbour 'masters' to succeed.

 From about one year ago, HMG includes Harbour 1.01 and MingW 3.4.5, so
most questions will surely related to that combo (I'm waiting for
Harbour 2.0 final to replace 1.01 and MingW with 4.x).


Regards,

Roberto.
5th October 2009

Updated on 7th October 2009

Date: Tue, 06 Oct 2009 15:04:50 -0300
From: Roberto Lopez <roberbox@gmail.com>
Subject: Re: [Harbour] Wich is the official harbour's user group?

Viktor Szakáts wrote:

> [ Still not all though, as there exists another package called
> MiniGUI Extended, which actually ships with Harbour 2.0.0b2,

There was only one project from 2002 to 2005 (the one I've started) from
then, two forks emerged: "HMG extended" and "OOHG" (I'm only responsible
for "HMG").

> It's really your project and your decision, but IMO it'd be a big
> step if you'd use a vanilla Harbour build (without customization).
> This way it'd be easier to swap components and general Harbour support
> could be given for both bundled and standalone Harbour distros without
> first identifying which build is in question. Moreover, general
> Harbour support could be given at any forums without being concerned
> about where this build comes from. Same goes for MiniGUI: Support
> could be given even here or other official or unofficial Harbour
> forums.

It's a good idea.

The current HMG distribution uses Harbour 1.01 for MingW build
downloaded from Sourceforge. I've removed 'binutils' not required by HMG
and (of course) added libraries and other things, but this shoud be not
  create problems regarding Harbour compiler support.

Moreover, I'll begin experimenting with Harbour 2.0 beta and publish a
test HMG release ASAP.

If something goes wrong, I'll seek for help here, prior to attempt a
dirty hack, I promise :)

So, hopefully, we will have full 'Harbour support compatible' HMG releases.


Regards,

Roberto
 

Saturday, October 3, 2009

Inclusion of LetoDB in Harbour Project ?

CCH : An interesting discussion in the Harbour Project Main Developer List on 2nd Oct 2009


Date: Fri, 2 Oct 2009 20:35:32 +0400
From: Alexandr Okhotnikov

Hi

Take as an axiom: in the harbour need open replacement ADS (for
multi-user environment) for those who still uses DBF and can not be
(not wants) to switch to SQL

2009/10/2 Przemyslaw Czerpak :
> Hi All,
>
> 1. it tries to use DBF record buffer but does not support all field types
> and features supported by core DBF* RDDs
> 2. it does not support timestamp values

The main types are (my opinion that this long enough), add the rest
later (for DBF, they are not critical)

> 3. numeric values in some operations like SEEK are converted to strings so
> they cannot be safely used with double values because such conversions
> round them to number of decimal places used to show numeric item on
> the screen

SEEK: for numeric fields to translate a string based on the dimension
of the field (no loss of accuracy)

> 4. it does not optimize multirecord skips on filtered or set_deleted
> workareas
> 5. it does not use aliases on server side so expressions sent to server
> cannot use aliases too (.f. index key/for, filters, ...)
> 6. relations are implemented only on client side and this code is not
> finished - it needs fixes in many places,
> missing server side relations seriously reduce functionality and
> performance in programs which use aliases though without server side
> support for aliases it still not be fully usable.

Using ADS almost the same :)

> 7. it does not respect many of _SET_* settings and also does not inform
> server about settings like _SET_DATEFORMAT, _SET_EPOCH, _SET_TIMEFORMAT,
> _SET_DECIMALS, _SET_FIXED, _SET_EXACT, ... which are important for
> correct execution of user expressions on server side

I think to finish (or customize a specific case) will not take much time

> 8. some important RDDI_*, DBI_*, DBOI_*, DBRI_*, DBS_* actions are not
> implemented at all or are implemented wrongly what breaks some other
> code, i.e. there is no DBI_GETLOCKARRAY so dbRlockList() function does
> not work or it informs GT that it uses DBF compatible record buffer
> and can transfer whole records but such functionality is not implemented
> so optimized by RDD code COPY TO ... and APPEND FROM ... operations
> fail
> 9. it tries to optimize some operations like dbAppend() but it's done
> in unsafe way which is not compatible with Clipper RDDs, i.e. dbAppend()
> is buffered and always return success though other client may set
> FLOCK() on the table so it will fail later when such appended record
> is sent to the server. For some programs it introduce other bugs
> because some algorithms may use APPEND rlocks for synchronization
> and to protect other stations against setting FLOCK so such behavior
> will causes total desynchronization

Confirm

> 10. in some methods it does not send all parameters and settings to server
> so some operations may not work as expected, i.e. important ordCondSet()
> settings are not transfer to server side
> 11. some methods are implemented as dummy ones what only disables error
> messages when user tries to use them so he does not even know that
> they failed silently,
> such things have to be eliminated and I hope it's only unfinished code
> 12. some operations are hacked to work only in some very limited
> situations, i.e. DBOI_KEYADD/DBOI_KEYDELETE works only with string
> key values which does not have any embedded 0
> 13. some things are implemented wrongly, i.e. if current record is
> locked (unlocked) then dbRlock( ) (dbRUnLock( ))
> calls are ignored
> 14. the transaction code also looks like unfinished, now it makes only
> one thing: it delays sending modifications to the server side with
> only very basic support for modifying the same record more then once,
> it may be usable in some applications but probably breaks most of
> programs which were not designed from beginning to work with RDDs where
> modifications are not visible during updates, missing documentation
> for exact isolation level causes that such transactions can be safely
> used only by LETO code authors who well know the internal behavior
> and created .prg code compatible with it
> 15. it's not MT safe and needs very serious internal modifications
> to work with user MT applications. As I can see so far it's
> not ever defined how it should be done so it's necessary to
> design such model from scratch.
> 16. it encodes/decodes messages using sprintf()/sscanf() functions
> what introduce some additional problems, i.e.:
> - this is very slow method of data encoding and decoding though
> in comparison to TCP/IP delay it's not critical
> - C compilers quite often provide *printf()/*scanf() functions
> in two version for ST and MT modes so for MT mode it's very important
> to use MT safe CRTL and leto code have to be always compiled with MT
> C compiler flags. We have our own hb_sprintf() function which is
> fully reentrant safe but we do not support hb_sscanf() so it's
> potential problem
> - it's very unsafe and hard to protect against buffer overflow and
> current leto code has a lot of potential buffer overflows which
> can cause server or client crash or hangup if user pass some data
> exploiting them
> - these functions operate on text data but LetoDB needs to transfer also
> binary data so programmers have to mix text and binary data what
> complicates message format and is source of some mistakes/bugs,
> now some messages are wrongly encoded what may cause server or
> client hangup

I did not look so deep

> 17. I do not see any documentation for the protocol, looks that each
> new message is added "as is" to client and server code, it means
> that even now it's hard to introduce extensions without careful
> checking of existing code to avoid possible conflicts,
> 18. I do not see any documentation which divides actions on client
> and server side so it's hard to add the extensions keeping
> original author vision, in the moment when such projects
> stops to be single author code such at least very basic
> documentation is a must, otherwise we will end with set of
> functions and RDD methods often replicating existing functionality
> because each developer tried to resolved his local problems in
> his own way, it also causes that bug fixing is very hard because
> developers seeing that sth is potentially wrong have to analyze
> whole code for possible workarounds in different places, i.e.
> I'm not able to verify everything what I see after looking at
> this code without investing day or two in deep analyzing

And that, in the harbour is not so?
I could not find documentation on the RDD (as in the rest of the
implementation of what either), but this does not prevent me to use
the harbour

> 19. it does not use hbsocket.h API so it may have portability problems
> and it does not address some problems which existed in original
> Giancarlo Inet* implementation and were copied to LetoDB
> 20. server uses internally own threads but does not use hbthread.h API
> what creates problems with portability and adding some extensions
> in the future, i.e. simultaneous executing .prg code by such threads
> is impossible now, it also blocks using HVM threads which could
> resolve important problems in current server implementation

Maybe, maybe not

> 21. I do not understand some parts of server code, i.e. there
> is an option to reuse existing tables between connections but
> why it was added? It cannot work without disabling most of
> server side processing because there is only single area
> structure so everything have to be shared between clients
> what creates series of problems, i.e. filter set by one client
> changes other client skip/seek operations, etc.
> I cannot even say that it is work in progress because it will
> never be fully functional option

Checked - everything is working properly

> 22. it keeps support for some old Harbour and xHarbour compilers
> what in few places makes the code more complicated and less
> readable then necessary, in some cases like own non HVM threads
> it seriously limits farther developing so such support have to be
> removed if we want to resolve all above problems
>
> best regards,
> Przemek

As a result, there is no alternative to ADS (DBFCDX use the network impossible)
and are forced to buy xHarbour (where it is more or less available)

All the above is my personal opinion

LetoDB - works (may not always correctly, but can be used)
I vote for inclusion in the harbour

Best regards,
Alexander



Response by Viktor

Date: Fri, 2 Oct 2009 20:07:25 +0200
From: Viktor Szak?ts <harbour.01@syenar.hu>

Hi Przemek and All,

Thanks for the insightful comments and detailed code analysis.

For me the conclusion for now is that while it would be nice
to "refactor" (hate the word) LetoDB code so that it 'becomes'
Harbour quality and most probably a viable FOSS ADS replacement,
this whole work would effectively done by you (Przemek), and
your POV and concerns are perfectly understandable to me. If
you won't work on it, I see not much point having it in our
repository. To me the code looks quite complicated to even
cleanup, so while I could contribute in this area, I'm not sure
it would give huge results/benefits in this case, since the
problems to solve are much deeper.

So overall, simply having a copy of LetoDB inside our contrib
area doesn't have a point.

However sad this is. I'd be also happy to have such "NETRDD",
but maybe it should be reached by some other means.

[ I'd be even happier with a GTNET driver though ;) Which,
seems much simpler to implement and even more efficient, but
only for CUI apps. ]

Brgds,
Viktor



Response by Pritpal Bedi

Date: Fri, 2 Oct 2009 14:47:39 -0700 (PDT)
From: Pritpal Bedi <bedipritpal@hotmail.com>
Hello Przemek

Przemyslaw Czerpak-2 wrote:
>
> This is what I can see after rather short code look up mostly on
> client side.
> In summary to resolve these problems we will have to rewrite most
> of current LetoDB code dropping xHarbour and old Harbour support.
> I haven't analyzed this code very deeply but seems that we can keep
> only very small part of existing LetoDB code.
> For me it is much easier to create new project with such functionality
> from scratch then trying to update current LetoDB code. For sure it
> will take less time and I will make much less mistakes so I do not
> find big motivation to work on it. I know myself and if I start to
> update it then I'll end with completely rewritten code but using the
> same project name and original authors' copyrights.
>
Absolutely correct assertion.
 
> I do not need such remote server for my own use - all my applications
> are executed fully on the server side so I do not want to reduce it
> to ADS like level.
>

The whole Harbour community knows about you and
your capabilities, and know it well.

Having said that, whatever you have contributed to Harbour till date
may be comprising a small part of your projects, but still you contributed,
contributed for the sake of creativity and a with a great sense to provide
a stable platform to your fellow developers, and we all feel indebted
for it, thank you.

> In the past I started to work on NETRDD and I documented the
> server and client part and defined basic communication protocol
> but so far I haven't time to finish it. Seeing what happens with
> my code in xHarbour I also do not find big motivation to finish
> it and public as free OpenSource project but I also do not have
> any precise plans about commercial releasing. Just simply I haven't
> taken the decision yet. Maybe I'll finish it and release as close
> source binary library which can be freely used with Harbour but
> only with applications which do not use any commercial libraries.
> Or maybe I'll invest much more time in it and try to write full
> RDBMS with transactions, SQL support and query optimizer and
> release it as commercial project. I do not know yet but I think
> I should inform you about it because maybe in the future I will
> not be on neutral position here so you should take your really
> own decision about LetoDB future in Harbour contrib code and my
> opinion and above text is only small help which you can ignore.
>

We know your concerns and which are right ones.
But still community is looking at you with great aspirations and
hopes to realize the dream of a remote rdd, which, only and only
you can bring to fruitation. It does not matter how you would
like to publish it, free open-source, free closed-source, or,
commercial open/closed-source, but it MATTERS that you just
start it and let us make optimistic about our futures.

Again, please note that, Harbour community is indebted
to your all great contributions...

Regards
Pritpal Bedi
 

Harbour MiniGUI 1.7 Extended Edition (Build 74) Released on 30th Sept 2009

CCH : From the HMG Extended Forum


Hi All,

The Harbour MiniGUI 1.7 Extended Edition (Build 74) setup is published at the following URL:

http://hmgextended.com/files/CONTRIB/hmg-1.7-74-setup.zip

and the Lite build 74 at the following URL:

http://hmgextended.com/files/CONTRIB/hmg-1.7-74-setup-lite.zip


There is the following changelog for this build below:

2009/09/30: Build 74 (HMG 1.7 Extended Edition) Published.
* Fixed: Typo with static declaration of the function FLD_PageInfo in the source\c_folder.c.
Reported by Francek Prijatelj <francek.prijatelj@siol.net>
* Fixed: Problem with ONCLICK, ON CLICK clause of Label control in the header file.
Reported by Rene Koot <rene@plantenkennis.com>.
Contributed by Grigory Filatov <gfilatov@freemail.ru>
(see demo in folder \samples\Basic\Label)
* Updated: Socket library v.1.07:
- Fixed: problem with hb_xgrab zero bytes allocation
Contributed by Mitja Podgornik <yamamoto@rocketmail.com>.
(see socket.c in folder \Source\Socket)
* Updated: HBPrinter library (see source in folder \source\HbPrinter):
- Fixed: Closing of Preview was destroyed the modal status of the previous window.
Reported by Krzysztof Stankiewicz <ks@nsm.pl>.
Contributed by Grigory Filatov <gfilatov@freemail.ru>
- Updated: Polish language translation.
Contributed by Krzysztof Stankiewicz <ks@nsm.pl>.
* Updated: Adaptation FiveWin Class TSBrowse 7.0 in HMG:
- Fixed: service of key Esc in the Append mode;
- Fixed: improved Scrollbar working;
- Fixed: assigned but unused variables.
Contributed by Janusz Pora <januszpora@onet.eu>
* Updated: HbSQLite3 library source code (see in folder \Source\HbSQLite3):
- updated for using SQLITE3 version 3.6.18
Contributed by Grigory Filatov <gfilatov@freemail.ru>
(see demos in folders \samples\Advanced\SQLITE and \samples\Advanced\SQLITE_2)
* Updated: HMG_QHTM library (see source in folder \Source\QHTM).
Contributed by Vladimir Chumachenko <ChVolodymyr@yandex.ru>
(look at changelog.txt in folder \Source\QHTM)
* Updated: Harbour Compiler 2.0.0beta3 (SVN 2008-09-28 22:27).
Contributed by Grigory Filatov <gfilatov@freemail.ru>
(look at ReadMe.txt in folder \harbour and WhatsNew.txt in folder \harbour\doc)
* Updated: HMGS-IDE v.0.9.4.1. Project Manager and Two-Way Visual Form Designer.
Contributed by Walter Formigoni <walter.formigoni@uol.com.br>
(look at changelog.txt in folder \Ide)
* New: 'Grid Color' sample. Contributed by Grigory Filatov <gfilatov@freemail.ru>
(see demo in folder \samples\Advanced\GridColor)
* Updated: 'Joint usage of QHTM & SQLite3' sample:
- added web-form support.
Contributed by Vladimir Chumachenko <ChVolodymyr@yandex.ru>
(see in folder \samples\Advanced\qhtm_2)
* Updated: 'System services' sample.
Problem was reported by Paul Schlicher <paulschlicher@yahoo.com>
Contributed by Grigory Filatov <gfilatov@freemail.ru>
(see in folder \samples\Advanced\WMI_Service_
2)

This release of MiniGUI is considered stable and ready for production use.

Remark: There is the following description in the curreent Harbour changelog:

2009-09-02 14:08 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbcomp.h
* harbour/include/hbcompdf.h
* harbour/source/compiler/hbmain.c
* harbour/source/compiler/genc.c
* harbour/source/compiler/genhrb.c
+ added support for compiling multiple .prg modules into single
compilation unit with repeated static or init/exit functions
with the same name.
Now Harbour compiler compiling .prg code from different .prg modules
included by @.clp or by SET PROCEDURE TO ... / DO ... [ WITH ... ]
works exactly like Clipper. It supports separated file wide definitions
for each compiled .prg module when -n switch is used and allows to
use static or init/exit functions/procedures with the same names but
in different modules.
It resolves incompatibility often reported by [x]Harbour users.
Now it's not longer necessary to update existing Clipper code.
@.clp files and SET PROCEDURE TO ... / DO ... [ WITH ... ] are
fully functional like in Clipper.
AFAIR it was the last unintentional incompatibility with Clipper.

Your comments are welcome!

--
Best Regards,
Grigory Filatov
[MiniGUI Team]

Monday, September 28, 2009

HMGS-IDE 0.9.4.1 Released on 28th Sept 2009

CCH : From the HMG Extended Forum

Hi All,

The updated HMGS-IDE 0.9.4.1 binary and sources are published
at the following URL:
http://www.hmgextended.com/files/HMGS-IDE/ide.zip



There is the following changelog for this version:

2009-09-26: version 0.9.4.1
*Changed : Object Inspector allows to add user defined function to DYNAMICBACKCOLOR or DYNAMICFORECOLOR of Browse/Grid. Suggestion of Jaroslav Janik . Contribution by Grigory Filatov

Example of use:

*HMGS-MINIGUI-IDE Two-Way Form Designer Generated Code
*OPEN SOURCE PROJECT 2005-2009 Walter Formigoni http://sourceforge.net/projects/hmgs-minigui/

DEFINE WINDOW TEMPLATE AT 168 , 240 WIDTH 560 HEIGHT 400 TITLE "Hello World!" MAIN

DEFINE LABEL Label_1
ROW 170
COL 220
WIDTH 80
HEIGHT 21
VALUE "Hello World!!"
CENTERALIGN .T.
END LABEL

DEFINE GRID Grid_1
ROW 10
COL 40
WIDTH 240
HEIGHT 120
ITEMS {{"test1","test1"},{"test2","test2"},{"test3","test3"},{"test4","test4"},{"test5","test5"}}
VALUE 1
WIDTHS {90,90}
HEADERS {'Column1','Column2'}
DYNAMICBACKCOLOR {{||{200,200,100}},{||{200,200,10}}}
CELLNAVIGATION .T.
END GRID

END WINDOW

Your comments are welcome!

--
Kind Regards,
Grigory Filatov
[MiniGUI Team]

Tuesday, September 22, 2009

My First SQLite Project by Sudip

CCH : As contributed by Sudip at the HMG Forum
 
Hi Friends,

I just created my first SQLite project with facility to create databse, table and add, modify and delete records from a grid.

I added hbsqlit3 in Tools->Preferences->Additional Libraries textbox of IDE and made some changes in my old MySql project.

SQLite database app is ready!!!

Please download the source code
sqlite.jpg

, compile and test.

Warning! Source code contains many quick and dirty codes, as I want to share my first excitement with you all. :)

I used some codes with (major) modification taken from samples of Harbour Installation's Contrib folder and Minigui Extended Samples.

Please don't forget to send your comments as before.

With best regards.

Sudip


More at http://www.hmgforum.com/viewtopic.php?f=15&t=853

License Issue with MySql

An interesting discussion at the HMG Forum
http://www.hmgforum.com/viewtopic.php?f=12&t=852  on this issue initiated by Sudip.

Monday, September 21, 2009

[Harbour] HBNETIO - Production Application Usage

Date: Sun, 20 Sep 2009 22:22:08 -0700 (PDT)
From: Pritpal Bedi <bedipritpal@hotmail.com>
Subject: [Harbour] HBNETIO - Production Application Usage

Hello Everybody

Here is what I did to test my flagship application "Vouch"
under HBNETIO protocol concurrently with same system where
data resides, on LAN connected terminals with/without NETIO,
on real-time WEB-IP, and everything worked extremely fine.
The only issue worth reporting is the speed on WEB-IP
whic was 8 times slower than stand-alone and about
5 times slower than LAN.

ULTIMATELY - results were so satisfying that my clients
were noticeably impressed. And the credit goes to, PRZEMEK.
Thanks, you did a splendid job.

For WEB-IP we tested with this scenario:

1. Forwarded a port, #63000, on our wireless router.
2. Obtained a domain, vouch.dynalias.com, from DynDNS.com
3. Updated its IP with our server's IP.
4. Executed netiosrv.exe with  63000  192.168.1.108  c:\creative.v15
5. From the terminals invoked "Vouch.exe" with parameters
"vouch.dynalias.com" and "63000" through Vouch.ini.
6. Executed "Vouch.exe" as regular application as before from other
terminals and from same server station.

VOILA all went fine. One terminal employed was from out of the country.

All data updates, concurrent, were ok. All locks respected.

A big leap forward.

Regards
Pritpal Bedi

Latest HMGS-IDE 0.9.4 Released

CCH : From the HMG Extended Forum

Hi All,

The updated HMGS-IDE 0.9.4 binary and sources are published
at the following URL:
http://www.hmgextended.com/files/HMGS-IDE/ide.zip




There is the following changelog for this version:

2009-09-19: version 0.9.4
*Fixed : in mpmc.prg use of value wAddLibMinBccHb and wAddLibMinBccXhb. reported by Press <pressextra@gmail.com>
2009-09-18: version 0.9.3.1
*Fixed : TOOLTIP at adding a tab pages. Bug was reported by Paul Schlicher <paulschlicher@yahoo.com>. Contribution by Grigory Filatov <gfilatov@rambler.ru>

Your comments are welcome!

--
Kind Regards,
Grigory Filatov
[MiniGUI Team]

Thursday, September 10, 2009

Harbour MiniGUI 1.7 Extended Edition (Build 73) Released

CCH : From the HMG Extended Forum

Hi All,

The Harbour MiniGUI 1.7 Extended Edition (Build 73) setup is published at the following URL:

http://hmgextended.com/files/CONTRIB/hmg-1.7-73-setup.zip

and the Lite build 73 at the following URL:

http://hmgextended.com/files/CONTRIB/hmg-1.7-73-setup-lite.zip

There is the following changelog for this build below:

2009/09/10: Build 73 (HMG 1.7 Extended Edition) Published.
* Fixed: Missing action of the Button control at the next focusing after
the GetBox control.
Reported by Ryszard Liska <softmar@softmar.poznan.pl>.
Contributed by Grigory Filatov <gfilatov@freemail.ru>
* Updated: Synchronized an Extended HMG with an Official HMG 2.9.4:
- Fixed. Multiple buttons having 'default button' style. Reported by
Vanguarda. Thanks to Grigory Filatov for help.
* Updated: MiniPrint library (see source in folder \Source\MiniPrint):
- New: Added FILLED clause in the PRINT RECTANGLE command.
Contributed by S.Rathinagiri <srgiri@dataone.in>.
Adapted for Minigui Extended by Grigory Filatov <gfilatov@freemail.ru>
* Updated: Adaptation FiveWin Class TSBrowse 7.0 in HMG:
- Fixed: Vertical scrollbar position for array with more 65535 elements.
Reported by Russian user.
Contributed by Grigory Filatov <gfilatov@freemail.ru>
* New: HMG_QHTM library (see source in folder \Source\QHTM).
Contributed by Vladimir Chumachenko <ChVolodymyr@yandex.ru>
(see demo in folder \samples\Advanced\qhtm)
* Updated: Harbour Compiler 2.0.0beta3 (SVN 2008-09-07 12:03).
Contributed by Grigory Filatov <gfilatov@freemail.ru>
(look at ReadMe.txt in folder \harbour and WhatsNew.txt in folder \harbour\doc)
* Updated: HMGS-IDE v.0.9.3. Project Manager and Two-Way Visual Form Designer.
Contributed by Walter Formigoni <walter.formigoni@uol.com.br>
(look at changelog.txt in folder \Ide)
* New: 'Joint usage of QHTM & SQLite3' sample.
Based upon a freeware Qhtm.Dll from the following URL:
http://www.gipsysoft.com/qhtm/freedownload.shtml.
Contributed by Vladimir Chumachenko <ChVolodymyr@yandex.ru>
(see in folder \samples\Advanced\qhtm_2)
* New: 'System services' sample. Contributed by Grigory Filatov <gfilatov@freemail.ru>
Based on code contributed by Rafa Carmona for Xailer.
(see in folder \samples\Advanced\WMI_Service_
2)
* Updated: OLE sample. Contributed by Grigory Filatov <gfilatov@freemail.ru>
(see in folder \samples\Basic\OLE)
* Updated: 'Multiple Combined Search Box' sample.
Based upon a contribution by Bicahi Esgici <esgici@gmail.com>
(see in folder \samples\Advanced\CombinedSearchBox)
* Updated: 'Directory Tree' sample (build tree of folders, files and archives).
Contributed by Vladimir Chumachenko <ChVolodymyr@yandex.ru>
(see in folder \samples\Advanced\DirTree)
* Updated: 'Game 15' sample. Contributed by Grigory Filatov <gfilatov@freemail.ru>
(see in folder \samples\Applications\GAME_15)

This release of MiniGUI is considered stable and ready for production use.

Your comments are welcome!

--
Best Regards,
Grigory Filatov
[MiniGUI Team]

Tuesday, September 8, 2009

[Harbour] HBNETIO - A Case Study by Pritpal Bedi

CCH : From the Harbour Developers List

Date: Mon, 7 Sep 2009 13:29:16 -0700 (PDT)

Hello All

Here are the steps I took to convert my flagship application "Vouch" ( a mini ERP solutions for a variety of verticals ) to honor HBNETIO lib along-with normal execution as ususal.

BACKDROP

I use configuration file vouch.ini to set various parameters of the application, which beside setting extended protocols, sets the data paths too. So at any given point of execution every table/index/other file always contain fully qualified path.

This principal I adopted and implemented in my applications always made my efforts to switch to different RDD's which a minimum efforts and changes in the source code. Even mixing different RDDs for different parts of the application are made possible and been used successfully.

A table when used has this format:
  c:\creative.ram\checks.dbf  [ index: c:\creative.ram\checks.z01 ]
  ^^^^^^^^^^                                   ROOT FOLDER
                        ^^^^^^^                   TABLE
       =>
  net:checks.dbf

  c:\creative.ram\cac00001\vpn453za.dbf
  c:\creative.ram\caccomon\defaults.dbf   , etc
  ^^^^^^^^^^                                   ROOT FOLDER
                        ^^^^^^^                    AREA OF OPERATION
                                        ^^^^^^^    TABLE NAME
       =>
  net:caccomon\defaults.dbf

For HBNETIO protocol I just changed the root data path of any
supported file [ .dbf | .z01 (CDX) ] [ which must reside on the
data server ] with "net:" and that's it.

I executed the netiosrv.exe as:
  c:\creative.acp\netio\netiosrv.exe  63000  0.0.0.0  c:\creative.ram

And included in vouch.exe:

  #if 1   /* Net IO Client-Server Protocol */
     IF INIVLW( "NetIOEnabled" )
        cNetIOServer := IniValue( 'NetIOServer' )
        cNetIOPort   := IniValue( 'NetIOPort'   )
        IF !empty( cNetIOServer ) .and. !empty( cNetIOPort )
           lSuccess  := netio_connect( cNetIOServer, val( cNetIOPort ) )
           uiDebug( "netio_connect()", lSuccess, cNetIOServer, cNetIOPort )
           uiDebug( " " )
        ENDIF
     ENDIF
  #endif

IniValue() parses the vouch.ini and keeps in static variable and
supplies a value as requested.

The other functions which I adjusted to change the root
folder to "net:" looks like this:

Function VouExistTable( cAlias, cFile, cPath, cDriver, lTemp )
  Local lRet := .f.

  DEFAULT lTemp TO .f.

  cFile := UPPER( trim( cFile ) )
  if right( cFile,4 ) == '.DBF'
     cFile := substr( cFile, 1, len( cFile )-4 )
  endif

  do case

  case lTemp
     lRet := file( cPath +'\'+ cFile + '.DBF' )

  case cDriver == 'SQLRDD'
     lRet := VouIsFile( cFile )

  case cDriver == 'CACHERDD'
     #ifdef __CACHE__
     lRet := CacheExistTable( cFile )
     #endif

  otherwise
     IF Vou_IsNetIO()
        IF right( cPath, 1 ) == ":"
           cFile := cPath + cFile + '.DBF'
        ELSE
           cFile := cPath +'\'+ cFile + '.DBF'
        ENDIF
     ELSE
        cFile := cPath +'\'+ cFile + '.DBF'
     ENDIF
     lRet := DbExists( cFile )

  endcase

  Return lRet

//----------------------------------------------------------------------//

Function VouExistIndex( cAlias, cFile, cPath, cDriver, lTemp )
  Local lRet := .f.

  DEFAULT lTemp TO .f.

  cFile := UPPER( trim( cFile ) )
  if right( cFile,4 ) == '.Z01'
     cFile := substr( cFile, 1, len( cFile )-4 )
  endif

  do case

  case lTemp
     lRet := file( cPath +'\'+ cFile + '.Z01' )

  case cDriver == 'SQLRDD'
     lRet := VouIsFile( cFile,.t. )

  case cDriver == 'CACHERDD'
     #ifdef __CACHE__
     lRet := CacheExistIndex( cFile )
     #endif

  otherwise
     IF Vou_IsNetIO()
        IF right( cPath, 1 ) == ":"
           cFile := cPath + cFile + '.Z01'
        ELSE
           cFile := cPath +'\'+ cFile + '.Z01'
        ENDIF
     ELSE
        cFile := cPath +'\'+ cFile + '.Z01'
     ENDIF
     lRet := DbExists( cFile )

  endcase

  Return lRet

//----------------------------------------------------------------------//

FUNCTION Vou_IsNetIO()

  IF INIVLW( 'NetIOEnabled' )
     RETURN .t.
  ENDIF

  RETURN .f.

/*----------------------------------------------------------------------*/

FUNCTION Get_Path( cAlias )
  LOCAL cPath, p

  IF !empty( p := get_d_attr( cAlias,D_PATH ) )
     cPath := eval( COMPILE( p ) )
  ELSE
     cPath := setWPath()
  ENDIF

  IF get_d_attr( cAlias, D_FILE_TYPE ) <> 9  /* Vouch Specific and on the
Client */
     cPath := Vou_AdjustPathToNetIO( cPath )
  ENDIF

  RETURN cPath

/*----------------------------------------------------------------------*/

FUNCTION Vou_AdjustPathToNetIO( cPath )
  LOCAL n, cPathL

  IF Vou_IsNetIO()
     cPathL := lower( cPath )
     IF left( cPathL, 4 ) != "net:"
        n := at( 'creative.',  cPathL )
        IF n > 0  // And it must be
           cPath := "net:" + substr( cPath, n + 13 )
        ENDIF
     ENDIF
  ENDIF

  RETURN cPath

//----------------------------------------------------------------------//


NOTE: the above code is a case study only and should not
        be used as is. However you may adopt the similar approach if
        you want to.


OTHER CHANGES YOU MAY REQUIRE
==========================
  You may also need to swich to following changes which work in both modes.

  FILE()       =>   DBEXISTS()
  FERASE()   =>   DBDROP()

THE OBSERVATION
==============
  netiosrv.prg

//------------------------------//
proc main( cPort, cServer, cRoot )
  local pListenSocket

  if empty( cPort )
     cPort := '63000'
  endif

  pListenSocket := netio_mtserver( val( cPort ), cServer, cRoot )

  if empty( pListenSocket )
     ? "Cannot start server."
  else
     wait "Press any key to stop NETIO server."
     netio_serverstop( pListenSocket )
     pListenSocket := NIL
  endif

  return
//------------------------------//

  netiosrv.prg => hbmk2 netiosrv.hbp => netiosrv.exe

  * Consumes very little memory footprint : 2.5 MB
  * Consumes very little CPU time even if many instances are logged : 3-5%
  * With each instance increase in memory : 16 KB
  * Reduces 16 kb with every instance if quits or is killed
  * Record|File locks a released instantlt if an instance holding them is
killed.

THE EXPECTATIONS
===============
  Would been nice if root path be automatically stripped
  if "net:" is found a part of the table name, i.e.,
     net:c:\creative.ram\cac00001\mytable.dbf
        =>
     net:cac00001\mytable.dbf
         where
     c:\creative.ram == netiosrv's root path

THE RESULTS
==========
  Amazing.
  Przemek, accept my hats off to this contribution.

  BUT it will be really heartening if you decide to finish NETRDD.
  The community is looking at NETRDD desperately.

Regards
Pritpal Bedi

Welcome to Clipper... Clipper... Clipper


In 1997, then using Delphi 3, I had already created 32-bits Windows applications for HRIS, ERP and CRM. In 2007, using Ruby on Rails, an AJAX powered CRM site running on Apache & MySQL was created and I am now using Visual Studio .Net 2008 to create web-based projects and Delphi 7 for Win32 applications using SQL2005 & DBFCDX.

So, why then am I reviving the Original Clipper... Clipper... Clipper via a Blog as CA-Clipper is a programming language for the DOS world ? Believe it or not, there are still some clients using my mission-critical CA-Clipper applications for DOS installed in the late 80's and up to the mid 90's. This is testimony to CA-Clipper's robustness as a language :-)

With the widespread introduction of Windows 7 64-bits as the standard O/S for new Windows based PCs & Notebooks, CA-Clipper EXE simply will not work and it has become imperative for Clipper programmers to migrate immediately to Harbour to build 32/64 bits EXEs

Since 28th January 2009, this blog has been read by 134,389 (10/3/11 - 39,277) unique visitors (of which 45,151 (10/3/11 - 13,929) are returning visitors) from 103 countries and 1,574 cities & towns in Europe (37; 764 cities), North America (3; 373 cities) , Central America & Caribeans (6; 13 cities), South America(10; 226 cities), Africa & Middle-East (12; 44 cities) , Asia-Pacific (21; 175 cities). So, obviously Clipper is Alive & Well : -)


TIA & Enjoy ! (10th October 2012, 11:05; 13th November 2015)


Original Welcome Page for Clipper... Clipper... Clipper

This is the original Welcome Page for Clipper... Clipper... Clipper, which I am republishing for historical and sentimental reasons. The only changes that I have made was to fix all the broken links. BTW, the counter from counter.digits.com is still working :-)

Welcome to Chee Chong Hwa's Malaysian WWW web site which is dedicated to Clipperheads throughout the world.

This site started out as a teeny-weeny section of Who the heck is Chee Chong Hwa ? and has graduated into a full blown web site of more than 140 pages (actually hundreds of A4 size pages) ! This is due to its growing popularity and tremendous encouragements from visiting Clipperheads from 100 countries worldwide, from North America, Central America, Caribbean, South America, Europe, Middle-East, Africa and Asia-Pacific. Thanx Clipperheads, you all made this happen !


What is Clipper ?

You may ask, what is this Clipper stuff ? Could Clipper be something to do with sailing as it is the name of a very fast sailing American ship in the 19th century ?

Well, Clipper or to be precise, CA-Clipper is the premier PC-Software development tool for DOS. It was first developed by Nantucket Corporation initially as a compiler for dBase3+ programs. Since then, CA-Clipper has evolved away from its x-base roots with the introduction of lexical scoping & pre-defined objects like TBrowse. As at today, the most stable version ofClipper is 5.2e while the latest version, 5.3a was introduced on 21 May 1996.

As at 11th November, 1996, an unofficial 5.3a fixes file was made available by Jo French. See the About CA-Clipper 5.3a section for more details. BTW, Jo French uploaded the revised 5.3a fixes file on 20th November, 1996.

Latest News

The latest news is that CA has finally released the long-awaited 5.3b patch on 21 May, 1997.

For 5.3b users, you must a take a look at Jo French's comments on unfixed bugs in 5.3b.

BTW, have you used Click ? If you're a serious Clipperprogrammer and need an excellent code formatter, Click is a natural choice. How to get it ? Simple, access Phil Barnett's site via my Cool Clipper Sites.

32-bits Clipper for Windows ?

Have you tried Xbase ++ ? Well, I have and compared to Delphi (my current Windows programming tool of choice), I'm still sticking to Delphi.

Anyway, you should visit the Alaska Home Page. Give it a chance and then draw your own conclusions !.

The Harbour Project

Is this the future of Xbase ? Take a look at at the Harbour Project

You are Visitor # ...

According to counter.digits.com, you are visitor since 3 June 1996.

If you like or dislike what you see on this website, please drop me a line by clicking the email button at the bottom of this page or better still, by filling out the form in my guest book. If you are not sure what to write,click here to take a look at what other Clipperheads have to say.