Showing posts with label XHarbour. Show all posts
Showing posts with label XHarbour. Show all posts

Saturday, February 19, 2011

Simple Usage of gtWVT

What is gtWVT ?

gtWVT is the  GT driver for MS-Windows (Win 95 and higher) and was contributed to Xharbour on 22nd December 2003 by Peter Rees

It creates its own GUI window instead of using MS-console window. It allows to changes to font, window size, etc.

gtWVT is a pure console implementation of traditional Clipper terminaltaking Windows API as its base console IO protocols. Its OI are  rendered in a Windows window and hence all of MSDN is available  for use with GTWVT.


Simple Usage in Harbour/xHarbour

Incredibly as it may seems, just adding -gtwvt to yourproject.hbp and then hbmk2 yourproject.hbp will allow your newly recompiled CA-Clipper Codes (as Harbour Codes) to run  as a true 32-bits application to run in its own GUI window rather than the awkward Command Prompt Window :-)

gtWVT also supports  additional functionality with hb_gtInfo() interface. You may want to check out harbour\include\hbgtinfo.ch :-)

Wednesday, February 16, 2011

Free xEdit IDE from xailer.com


From the News of Xailer.com  billed as the Ultimate Development Environment for Xbase

01-19-2011. New xEdit 2.2 version
New upgrade of our free development environment for [x]Harbour xEdit. Now with subprojects support. You may find further information on the downloads section.


Just downloaded the 2011 version of the free xEdit2 IDE (xeditsetup.exe) from http://www.xailer.com.

Installation was a breeze on my Windows 7 Home Premium Notebook but the  Desktop Shortcut did not appear :-)

1. Click New Project and presented with Project Properties

2. Tree-like project Properties covering
a)Main (Project Type, Description, Output File, Environment, Main Module)
- Empty pulldown for environment
- populated after Add file to Project

b) Look (inlclude XP Themes, Select Icon)
c)Version
d) Options
e) Libraries
f) Directories (Root, Source, Include, Resource, Object)

3) Click Projects/Add File to Project

4. Click Compile, no issue here

5. Click Run
- No error messages, no compile errors but no EXE created

6. Updated Tools\Programming Environment with Harbor 2.0/MinGW and updated Project Properties\Environment

7. Click Run
- No error messages, no compile errors but no EXE created

Hmm... I think I am missing something here :-)

Have emailed Xailer Forum/Google Group owners and awaiting reply.

As at 21st Feb 2011, still unable to create EXE using xEdit2, please refer to this thread :-(

More to come...

Tuesday, February 15, 2011

Migrating Xharbour Codes to Harbour 2.1

Recently in recompiling a XHarbour app to Harbour 2.1, I ran into a couple of Undefined Functions such as

1) C:/Users/CCH/AppData/Local/
Temp/hbmk_lv5w33.dir/HMS_MAIN.o:HMS_MAIN.c:(.data+0x1
5b8): undefined reference to `HB_FUN_SETMOUSE'

2) C:/Users/CCH/AppData/Local/Temp/hbmk_lv5w33.dir/HMS_MAIN.o:HMS_MAIN.c:(.data+0x1
6b8): undefined reference to `HB_FUN_HB_FREADLINE'
I tried unsuccessfully to find replacement functions and Viktor came to my rescue by suggesting that Ilink xhb and hbxpp libs to your app:  hbmk2 ... xhb.hbc hbxpp.hbc

Practically, it means that I add xhb.hbc and hbxpp.hbc to my hbp file :-)

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, 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

Thursday, June 18, 2009

free.Harbour.com : free fully automated xHarbour.org installers

CCH: From the Internet...

Welcome to free.xHarbour.com, the download site for free fully automated xHarbour.org installers. We are currently focusing on Windows distributions, for Borland, MSVC and PellesC compilers.


Our goal is to provide frequent releases of the free xHarbour project, supplemented by some free goodies, and most importantly, provide fully automated installers that include everything you need to get started developing with xHarbour.


All our installers will check your system for your preferred C compiler. If the installer does not find it, it will automatically download the necessary files and start the installation for the C compiler. All you need to do is follow the standard installation procedure. Plain and simple!


Want know more? Visit the Frequently Asked Questions pages. ;-)

Friday, June 5, 2009

Breaking News : CacheRDD, a real-time RDBMS RDD for Harbour family of compilers

CCH : As posted in our Guest Book by Pritpal Bedi

Hello Everybody

Today is a special day in my life and I have
decided to share one of my best developments with all of you.

Let me introduce CacheRDD, a real-time RDBMS RDD for
Harbour family of compilers. This is the FIRST RDD in whole history
of xbase dialect that is a TRUE RDBMS RDD. Please visit
www.vouch.info/cacherdd for in depth review of its
accomplishments ( and shortcomings ).

The RDD ( binaries only ) will be available for
Harbour - MINGW, MSVC, BCC, PELLESC, WATCOM
xHarbour.org - BCC
xHarbour.com - XCC

Today I am just announcing. Within the next week or so
I will make available the complete distribution. The delay is
because today I am not prepared to assemble disto but I wished
that it be announced ( due to that special day ).

Regards
Pritpal Bedi

Tuesday, April 14, 2009

Can GTWVG work with xHarbour ?

CCH : I have been asked quite a few times as to whether GTWVG will compile with xHarbour.
Initially, I thought why not as Ron Pinkas was the one who mentioned about WVG in a response to me in the xHarbour Builder News Group. At that time, I was using the September 2008 Edition of xHarbour.com distro.

Today, Sudip Bhattacharyya revealed an email discussion with Pritpal regarding this matter.

Q. Is there any way to use xHarbour+wvg?

QUOTE by Pritpal Bedi

WVG as of now is not compilable with xHarbour. It is multi-windows, multi-threaded approach and some very fine new concepts which are only available in Harbour.

I had ported WVG to xHarbour but about 1.5 years before. That version is workable but you have to compile it with your own tools. Just look for xharbour/contrib/gtwvg folder in CVS.

Due to its limitations I am not contributing to xHarbour any more.

UNQUOTE

Tuesday, March 17, 2009

Mel Smith : From CA-Clipper to xHarbour+HMG

CCH: On reading a email from Sudip regarding Mel Smith's migration from CA-Clipper to xHarbourt+HMG, I wrote to Mel Smith on 16th March 2009 and obtained his consent to republish it here.

Mel Smith to Sudip

Sudip,

Many people are starting to use the 'IDE' method (and, apparently successfully).

However, I am 'old-fashioned' and so I hand-code everything, and I use the 'HBMAKE.EXE' utility of xHarbour to build my apps.

If you provide me with an email address that allows attachments (btw, Gmail does *not* allow attachments), I will forward my BLD.BAT file, my xxx.BC file that is a parameter to HBMAKE, and my main app plus one other module for you to see how I proceed.

My conversion procedure is usually:

1. Make a copy of the original Clipper 5.2e program and all its various modules
2. Convert this copy to proper xHarbour (fixing all previous bad styles to proper styling, etc, etc)
3. With all modules converted to xHarbour, run this console-style program to ensure it works as good or better than the Clipper app
4. Start windowizing:
a. Start with the Function Main() and build a main window.
b. Add the main menu to this window
c. In one of the menu options, call/activate a simple sub-function (e.g., build all indexes)
d. Go to this sub function and add a child window and carry on with the conversion.
e. Go to c. again :)))

I have included the Main Window definition from the Main Function from one of my apps below:


... there are 1480 lines of setup before the following initialization of the app's Main Window ...

BTW, I had an old app named ACT (for Accounting -- I always use 3 letters for my various apps)
When I started converting to 'windows' I just added a 'W' to the beginning of 'ACT' . Thus, WACT is the app name
Please don't assume the code below is 'Good' or 'Sophisticated'. It is *not* ! It is just *my* conversion of old stuff. But it does work., and it is quite simple. There are about 48 separated modules I had to convert. The fragment below is part of the Main module

You will note that some of the conversion has not been required or completed yet (i.e., the donothing() function refers to this

...
...
SET MULTIPLE OFF

SET NAVIGATION EXTENDED
cWIN := "WACT"

DEFINE WINDOW WACT ;
AT nMTOP,nMLEFT ;
WIDTH nMWIDTH HEIGHT nMHEIGHT ;
TITLE "Accounting Control for A/P, A/R and Payroll: " + GVERSION + ;
" ( on Drive " + GNETDRV+" )" + " Process Date : " + GTHEN ;
ICON "WORLD" ;
FONT "Arial" SIZE 12 ;
MAIN ;
ON INIT {|| (IIF(lRBLDIDX,(WACT.LABNDX.SHOW,WACT.NDXFIL.SHOW, ;
WACT.INDEXPROG.SHOW,RBLDIDX(lSETUPDBF:=.T.)),), ;
WACT.LABNDX.HIDE,WACT.NDXFIL.HIDE,WACT.INDEXPROG.HIDE, ;
(GABORT := .NOT. SETUPDATES(GDATE), ;
IIF(GABORT,DOMETHOD("WACT","RELEASE"),.T.)), ;
SETSTATUS(cWINSTATUS:=" Ready for Menu Selection"))}

DEFINE MAIN MENU
POPUP "Accounts &Payable"
ITEM " 1. Add/Edit A/P Transactions" ACTION {||MNTPAY(),DBCLOSEALL()}
ITEM " 2. Add/Edit C/R Transactions" ACTION DONOTHING() DISABLED
ITEM " 3. Load Suppliers" ACTION DONOTHING() DISABLED
ITEM " 4. Update Supplier A/P File" ACTION DONOTHING() DISABLED
ITEM " 5. Update Purchase Order File" ACTION {||MNTPCH(),DBCLOSEALL()}
ITEM " 6. Fix Vend Acct. Nos. in A/P" ACTION DONOTHING() DISABLED
ITEM " 7. P.O Report Menu" ACTION DONOTHING() DISABLED
ITEM " 8. A/P Reports / Cheques Menu" ACTION {||PAYREPS(),DBCLOSEALL()}
ITEM " 9. C/R Reports / Cheques Menu" ACTION DONOTHING() DISABLED
ITEM " A. Multi-Job Costing Tables" ACTION {|| LOADCOST("WACT"),DBCLOSEALL(), ;
SETPROPERTY("WACT","oSTOPSCAN","VISIBLE",.F.), ;
SETPROPERTY("WACT","oSTOPSCAN","ENABLED",.F.)}
ITEM " B. Job Costing for ONE Job" ACTION {||MNTJCS(),DBCLOSEALL()}
ITEM " X. Exit" ACTION DOMETHOD("WACT","Release")
END POPUP

POPUP "Accounts &Receivable"
ITEM " 1. Add/Edit A/R Transactions" ACTION DONOTHING() DISABLED
ITEM " 2. Fix Cust No. in A/R File " ACTION DONOTHING() DISABLED
ITEM " 3. Edit Customer Information" ACTION DONOTHING() DISABLED
ITEM " 4. Edit Customer Financials " ACTION DONOTHING() DISABLED
ITEM " 5. " ACTION DONOTHING() DISABLED
ITEM " 6. Receipts Input Processing" ACTION DONOTHING() DISABLED
ITEM " 7. " ACTION DONOTHING() DISABLED
ITEM " 8. Print Reports / Invoices " ACTION DONOTHING() DISABLED
ITEM " 9. " ACTION DONOTHING() DISABLED
ITEM " A. Change Txn Number Format " ACTION DONOTHING() DISABLED
ITEM " B. Import Spreadsheet Data " ACTION DONOTHING() DISABLED
END POPUP

POPUP "&Utilities"
ITEM " 1. View/Edit G/L Master " ACTION DONOTHING() DISABLED
ITEM " 2. View Admin Passwords " ACTION DONOTHING() DISABLED
ITEM " 3. Load C/R Register File" ACTION DONOTHING() DISABLED
ITEM " 4. Load G/L Accounts File" ACTION DONOTHING() DISABLED
ITEM " 5. Load Time-Sheet Files " ACTION DONOTHING() DISABLED
ITEM " 6. Load Employee File " ACTION DONOTHING() DISABLED
ITEM " 7. Re-Build Vendor Codes " ACTION DONOTHING() DISABLED
ITEM " 8. Set-Up P.O. Remarks " ACTION DONOTHING() DISABLED
ITEM " 9. Set-Up Div/EWO DBFs " ACTION DONOTHING() DISABLED
ITEM " A. Set-Up Work-Area DBFs " ACTION DONOTHING() DISABLED
END POPUP

POPUP "&Employees"
ITEM " 1. Browse Employee File " ACTION DONOTHING() DISABLED
ITEM " 2. Browse Job Desc File " ACTION DONOTHING() DISABLED
ITEM " 3. Browse Rates/Deductions " ACTION DONOTHING() DISABLED
ITEM " 4. Time-Sheet Entry System " ACTION {||MNTTBS(),DBCLOSEALL()}
ITEM " 5. Print Time and Expenses " ACTION {||TBSREPS(),DBCLOSEALL()}
ITEM " 6. Print Payroll Cheques " ACTION DONOTHING() DISABLED
ITEM " 7. Period-End Payroll " ACTION DONOTHING() DISABLED
ITEM " 8. Load Employees (AccPac) " ACTION DONOTHING() DISABLED
ITEM " 9. View TBS Time-Sheets " ACTION DONOTHING() DISABLED
ITEM " A. Browse Unions File " ACTION DONOTHING() DISABLED
END POPUP

POPUP "&Manager"
ITEM " 1. Rebuild Index Files" ACTION RBLDIDX(lSETUPDBF:=.T.)
ITEM " 2. Edit Company Information" ACTION {|| MNTSYS(),DBCLOSEALL()}
ITEM " 3. Run old DOS ACT System" ACTION DOOLDACT("WACT")
ITEM " 4. View / Edit Job Status" ACTION {|| MNTJOB("WACT"),DBCLOSEALL()}
ITEM " 5. View / Edit Job Rates" ACTION {|| MNTJRT(),DBCLOSEALL()}
ITEM " 6. Print Job(s) Status" ACTION DONOTHING() DISABLED
ITEM " 7. Test Send of Email" ACTION SENDMAIL()
ITEM " X. Exit" ACTION DOMETHOD("WACT","Release")
END POPUP

END MENU

@ (nMBOT-nMTOP)/2 - 40, 150 LABEL LABNDX AUTOSIZE ;
VALUE "Indexing File : " ;
INVISIBLE

cFIL2NDX := SPACE(20)

@ (nMBOT-nMTOP)/2 - 40, 300 TEXTBOX NDXFIL VALUE cFIL2NDX ;
WIDTH 300 ;
INVISIBLE

@ (nMBOT-nMTOP)/2,150 PROGRESSBAR INDEXPROG ;
RANGE 0,10000 ;
WIDTH 600 ;
HEIGHT 30 ;
SMOOTH ;
INVISIBLE ;
TOOLTIP "Indexing Progress"


@ nMBOT-86,000 LABEL STATPMPT OF WACT AUTOSIZE ;
VALUE "Status Line->" ;
FONT "Arial" SIZE 10

@ nMBOT-86,100 LABEL STATLINE OF WACT ;
VALUE cWINSTATUS ;
WIDTH 500 HEIGHT 30 ;
FONT "Arial" SIZE 10 ;
BOLD

@ nMCTRROW-(nBUTTH),nMCTRCOL-(nBUTTH) BUTTONEX oSTOPSCAN OF WACT;
CAPTION "Stop Scan"+CRLF+"of Job Cost"+CRLF+"Databases" ;
WIDTH nBUTTW+30 ;
HEIGHT nBUTTH+40 ;
FONTCOLOR RED ;
BACKCOLOR YELLOW ;
NOTABSTOP ;
BOLD ;
INVISIBLE ;
ACTION {||lESCPRESSED := .T.}

WACT.oSTOPSCAN.ENABLED := .F.
WACT.oSTOPSCAN.VISIBLE := .F.

ON KEY ESCAPE OF WACT ACTION {||nESCKEY:=K_ESC,THISWINDOW.RELEASE}

END WINDOW

Mel Smith

Monday, March 16, 2009

What is Xailer ?

CCH: I first heard of Xailer when I returned to comp.lang.clipper after a 12-year hiatus. I did download it and found it to be interesting and familiar given my Delphi background. I posted a basic question on comp.lang.clipper which was not answered. Since I could not even get started, I moved on.

However, the latest Poll on this blog clearly shows that perhaps Xailer (though a commercial product) may be a force to be reckoned with...

From http://xailer.com

Xailer is a complete 32 bits visual development environment for Xbase users, following the guide lines of other already existing programming environments (Delphi, Visual Basic,...). As any other complete visual environment includes:

* Form designer
* Professional Source code editor
* Property inspector
* Project manager
* Report generator
* Resource manager
* Integrated Debugger

And all these features are built over a unique interface, which is tremendously intuitive and permits the development of any project in record time.

However, Xailer still permits the use of the traditional programming approach that the Xbase programmers have been used to, which consist of the use of a personal programming editor, a 'Make' tool for the compiling and linking process, and of course, the possibility of designing the forms directly from source code with friendly commands like @ row, column. Besides, both systems (IDE and traditional) can be mixed without problem on the same project, so the flexibility is absolute.

We even have a tool, XEdit, a professional code editor and project manager completely written in Xailer. It includes neither the form designer nor the Resource Manager available in the IDE but will let you to program with Xailer in the classical way if you prefer.

However we believe that even in the short term the user will surely go for the visual environment due to the following reasons:

* Easiness and speed on form creation
* Complete access to the whole project
* It does not require the use of any external 'Make' tool
* It does not require the use of any external Resource manager tool
* Visual form designer
* Perfect conjunction of components and their properties in an unique module. That is, it completely removes the need of an external tool like 'Resource Workshop' and then establishes the property values of every component on the source code. The assignment of every component property will be done directly from the IDE, and there will be no reference to those assigned properties on the source code created by the user.

Xailer has been created not only to be a migration tool for other Xbase products, but also to be suitable for any user that knows the Xbase programming language or any of its flavors. We believe that is possible to catch the attention of all those Xbase programmers that are already using CA-Clipper, and those that jumped to another environment due it's limitations, such as the absence of an integrated development environment.

Xailer includes everything you need to get started and to create complete management applications, with no need to buy any other tool from a third party. The great advantage of Xailer over all the other development environments is its simplicity for being basically a development tool for management software based on the Xbase standard, although other database systems are also supported, like SQL.


Technical features

Xailer consist of two well defined modules: the GUI library which provides the functions and classes that form the Xailer real engine and the IDE environment (made with Xailer's GUI library) which permits the use of a unique visual interface for the creation of any development project.

Xailer uses the free xHarbour Open Source Compiler for the compilation process and the also free Borland C++ 5.5 compiler. It's planned that in the future we also support other compilers like Harbour and Microsoft MSVC compiler.

Xailer is compatible with all the operating systems of Microsoft starting from Windows 98 and is perfectly adapted to gain the maximum advantage of the new visual themes of Windows XP.

All the compiling and linking complexity is completely hidden to the user, but without losing the flexibility to include personal or third party libraries.

The class library has a tremendously simple and well structured hierarchy which can be adapted to your own needs, with no need to modify the library itself, just using the inheritance mechanism of any OOP system.

The integrated debugger will help you find errors easily, allowing step by step execution, entering or jumping over functions, establishing of break points, inspection of variables and objects, etc etc...

Xailer supports any ActiveX component, OCX controls included, and other third party component as well as components specifically made for Xailer. Xailer creates self-contained executables with no need for external DLL's, including the ActiveX components, OCX and/or DLL which the developer wants to use.

The robustness, reliability and speed are the three pillars on which Xailer flourishes, exceeding the rest of competitors on any of these aspects.

Migration

Xailer hasn't been designed to be a compatible tool with other actual tools, but to become the normal evolution of any Xbase programmer, greatly helping the migration from any tool to Xailer. For that purpose it includes the following features:

* Use of classical commands
* Possibility to use the same linear programming style of Clipper and other GUI libraries
* Conversion tool to convert standard resource dialogs to Xailer native format

The migration of any old project should not be very tedious, but there is no magic tool that automatically achieves that work. The biggest differences from a functional point of view are:

* Absence of conventional dialogs. Those are treated like simple forms with the 'bsDialog' property, that acquire a identical aspect and functionality.
* Absence of the REDEFINE command
* Control creation is done on two stages: New() and Create(), which permits to modify any component property after the object instantiation, but before the control creation.
* Global objects 'Application', 'Screen' and 'Printer'
* Ability to create new events on any control


Language

Xailer is completely designed and developed by Spanish spoken programmers, that is, it is a Spanish product, but it has been written following english conventions and the documentation is done in Spanish and English. The IDE and the GUI library supports up to 8 languages:

* English
* Spanish
* French
* Italian
* German
* Portugues
* Catalan
* Gallego


Who

Xailer is a commercial project lead by José F. Giménez and Ignacio Ortiz de Zúñiga, with the considerable collaboration of José Lalín and Pedro Gil.

Credits also with the backing and collaboration of well known Xbase world programmers.


Sunday, March 8, 2009

Adding GUI to xHarbour/Harbour via HMG [Part II]

In my previous article on Adding GUI to xHarbour/Harbour via HMG [Part I], I have shown you that you can easily hand code, Windows Menu, ToolBar and StatusBar and the result is as below :-


Code Snippet
ToolBar
DEFINE TOOLBAR ToolBar_1 BUTTONSIZE 25,25 FLAT BORDER
BUTTON Button_Exit ;
PICTURE 'exit.bmp' ;
TOOLTIP 'Exit this Application' ;
AUTOSIZE;
ACTION MsgInfo('Exit !');
SEPARATOR

BUTTON Button_ReindexAll ;
PICTURE 'task.bmp' ;
TOOLTIP 'Reindex All Files' ;
AUTOSIZE;
ACTION Reindex_All()

BUTTON Button_Calculator ;
PICTURE 'calculator.bmp' ;
TOOLTIP 'Windows Calculator' ;
AUTOSIZE;
ACTION ExecFile("C:\Windows\System32\calc.exe") ;
SEPARATOR
END TOOLBAR

Status Bar
DEFINE STATUSBAR
STATUSITEM "FAS4HMG" WIDTH 100
KEYBOARD
DATE
CLOCK
END STATUSBAR



Code Snippet
Menus
POPUP '&File'
POPUP '&Define Help Windows' name FileDefine
ITEM 'Define Fiscal Periods' ACTION EditExt('HLPFP')
ITEM 'Define Forex Table' ACTION EditHlpForex()
END POPUP
ITEM 'Exit' ACTION FileExit() IMAGE 'Exit.Bmp'

END POPUP

POPUP 'General Ledger'
ITEM '&Chart of Accounts' ACTION (BrowseGlac())
ITEM 'Report Writer' ACTION EditExt('REPTGL')
POPUP 'Standard Reports' name GLRept
ITEM 'Chart of Accounts' ACTION PrintViewChartofAccounts()
END POPUP
SEPARATOR

ITEM 'Reindex' ACTION Reind_GL()
ITEM 'Edit Fields Description' ACTION EditExt('GLDICT')
SEPARATOR
ITEM 'Rebuild GL' ACTION RebuildGL()
END POPUP


How about calling an external EXE ?

Code Snippet

EXECUTE FILE "C:\Windows\System32\calc.exe"

Using HMG's MsgYesNo() to replace Clipper Alert()

Code Snippet
if MsgYesNo('Reindex All Files ?','Confirm',{'Yes','No'})
ReindexAll()
endif

What about Reindexing with Progress Bar ?


What have I done to 'GUIFY ' FAS4XHB to FAS4HMG thus far ?

a) Completed Main Form Interface via MENU, TOOLBAR & STATUSBAR
Nb. With this, I got rid of the Clipper Menu Interface

b) Use EDIT/EDIT EXTENDED to replace my DBEDIT()-based data screens
Nb. With this, I got rid of the DBEDIT() Interface

c) Use PROGRESSBAR to allow reindexing with Progress Bar
Nb. Replaced my text-based Progress Bar

d) Use EXECUTE FILE 'KE.EXE' PARAMETERS
Nb. This means that I do not need to recode all my reports !

What resources have I used thus far ?

a) xHarbour compatible codes, see Migrating from 5.2e to xHarbour Part III

b) HMG distribution comprising Harbour+HMG, see What is HMG ?

d) HMGIDE, a 2-way IDE (only if you created forms from the IDE)

e) Speedy response by HMG Forum particularly Escigi, Rathinagiri, Grigory Filatov and not forgetting my newly-found friend Sudip
Bhattacharyya from Calcutta, West bengal , India :-)

Where do I go from Here ?

a) Master-Details Forms

b) Prettying up the Interface

Sunday, March 1, 2009

Why you should recompile your CA-Clipper DOS applications to Win32

CA-Clipper for DOS was, once hugely popular amongst Xbase programmers from Summer'87 right up to Version 5.2e. Apparently, 5.3 onwards were not vey popular. Even now, it is amazing to discover that there are still many CA-Clipper programmers out there. However, CA-Clipper for DOS programs don't do well under Windows, and may not run at all in Win'98, ME, XP , Vista or on fast processors, or they may have problems printing. In addition , the interface is text-based , hogs processor time which slows everything else down, and can't communicate with Windows programs.

So what's the solution & I am not talking of GUI ?

Simple, recompile your existing CA-Clipper source codes using a 32-bit CA-Clipper compatible compilers such as the Harbour Project, xHarbour or Xbase++. If you prefer open-source the Harbour Project & xHarbour will definitely be your choice. However, if you require more support, I guess that xHarbour.com & Xbase++ will be the way to go.

Clarification from Ron Pinkas

xHarbour is first and foremost a free open source project, exactly as
Harbour.

In *addition* to being completely free, it's *also* distributed by
xHarbour.com, as a commercial distribution that includes numerous Add-on
Tools & Libraries, as well as tech support services.

Needless to say, the existence of the xHarbour.com commercial distribution
does not take away from the freedom of xHarbour, the opposite it provides
even more resources to the free project.


So what are the benefits of having your familiar CA-Clipper application as a true Windows 32-bit Executable ?

A quick list of the benefits of being a true Windows application is that it can:
  • Utilize all the available memory, no more DOS boundaries
  • Use bigger sized variables, no more limits such as 4096 array elements, 64K data segment, etc.
  • Use any kind of printer installed on Windows, including network printer, Fax printer, PDF printer, etc.
  • Use Windows resources easily, eg. clipboard, common dialogs, etc
  • Collaborate with other Windows application, eg. Excel, Internet Explorer, etc.
You may want to read about my own experience in porting a sizeable real-life Accounting application (still in use in some customers) from CA-Clipper 5.2e to xHarbour

CA-Clipper is Alive & Well ! [5th November 2009]

I am simply amazed that the Clipper Language (in the form of CA-Clipper, Xbase++, Harbour, xHarbour & CA-Visual Objects) is still being used by Clipperheads from 103 countries since this blog started on 26th January 2009, latest in May 2009 from Burkina Faso(4/5/09), Cote D'ivoire(5/5/09), Guyana (8/5/09), Macau (22/5/09), Libyan Arab Jamahiriya(23/5/09), Ghana, Nepal (8/6/09), Cameroon (28/6/09), Mauritius (7/7/09), Montenegro(2/8/09), French Polynesia, Senegal (20/10/09), Trinidad and Tobago (5thNov 2009)

As at 5th November 2009, we now have more than 16,800 unique visitors from Europe, Africa & Middle-east, North, Central & South America & the Asia-Pacific as follows :-

Europe
  1. Austria (4/9, 9), Steiermark(Graz, Leoben, Radmer), Wien (Vienna) , Tirol(Innsbruck, Sillian,Jenbach, Kitzbühel ), Saltzburg(Angerberg)
  2. Belarus(5,7), Vitsyebskaya Voblasts(Novolukoml, Rossony, Vitebsk), Minsk, Homyel'skaya Voblasts'(Gomel), Brestskaya Voblasts'(Brest), Hrodzyenskaya , Hrodzyenskaya Voblasts'(Grodno), Voblasts(Hrodna)
  3. Belgium (10/10,31),Namur, Antwerpen(Hoboken, Merksem, Deurne, Antwerp,Edegem, Mol, Grobbendonk, Kontich, Schoten, Mechelen, Wijnegem, Brecht), Brabant(Diegem, Nivelles, Meise, Sint-genesius-rode), Liege(Amay, Sprimont, Verviers), West-vlaanderen(Avelgem, Damme, Brugge, Blankenberge,), Oost-vlaanderen (Lede, Zottegem, Gent), Hainaut(Charleroi), Limburg(Hamont, Kerkrade,), Liege(Esneux. Tilff), Oost-vlaanderen(Temse), Liege(Liège, Verlaine, Saint-Georges, Fize-fontaine)
  4. Bosnia-Herzigovina(4,5), Mostar, Sarajevo, Novi Travnik, Republika Srpska(Banja Luka,Foca)
  5. Bulgaria(8,8), Pleven(Levski), Varna, Grad Sofiya(Sofia), Gabrovo, Burgas, Montana, Plovdiv, Vratsa(Kozloduj)
  6. Croatia(11,21), Grad Zagreb (Zagreb,Samobor, Zapresic), Varazdinska(Varazdin, Belec), Krapinsko-zagorska(Donja Bistra), Sisacko-moslavacka(Sisak), Primorsko-goranska(Grobnik, Krk, Ogulin, Lopar,Rijeka, Novi Vinodolski), Splitsko-dalmatinska(Bol, Split), Pozesko-slavonska(Pozega, Djakovo), , Licko-senjska(Senj), Dubrovacko-neretvanska(Dubrovnik), Istarska(Zminj), Karlovacka(Karlovac), Varazdinska(Donji Kraljevec)
  7. Cyprus(1,1), Nicosia, Osjecko-baranjska(Osijek), Limassol(Lemesos)
  8. Czech Republic(3/13,5), Moravskoslezsky Kraj(Hluchin, Ostrava), Stredocesky Kraj(Mlada Boleslav),Hlavni Mestro Praha(Praque, Praha)
  9. Denmark(2,2), Staden Kobenhavn(Copenhagen), Viborg
  10. Estonia, Harjumaa(Tallinn)
  11. Finland(2,4), Southern Finland(Helsinki, Järvenpää, Kaarenkylä),Western Finland(Turku)
  12. France (13/26,36) from Lorraine(Metz), Bretagne(Saint-brieuc, Penguily,Telgruc-sur-mer), Languedoc-roussillon(Montpellier), Rhone-alpes(échirolles, Baix, Lyon, Ambérieu-en-bugey, Annecy-le-vieux), Sorel-moussel , Aquitaine(Bordeaux, Saint-front-de-pradoux), Centre(Saint Aignan, Tours), Midi-pyrenees(Albi), Ile-de-france(Noisy-le-grand, Neuilly-sur-seine,Issy-les-moulineaux,Paris, Vincennes, Maisons-alfort, Le Chesnay, Coulommiers, Montgeron,Pantin ), Nord-pas-de-calais(Haubourdin, Valenciennes), Poitou-charentes(Cognac), Haute-normandie(Rouen, Le Havre), Champagne-ardenne(Reims, Troyes), Haute-normandie(Le Havre), Bretagne(Quimperlé, Vannes), Provence-alpes-cote D'azur(Aix-en-provence)
  13. Germany (16/16,138), Berlin, Bremen, Baden-Wurttemberg(Abtsgmünd, Aulendorf, Schwäbisch Gmünd, Riedlingen, Gomaringen, Ludwigsburg, Leinfelden-echterdingen, Sigmaringenn, Rottenburg, Fellbach, Bad Waldsee, Freiburg, Schwann, Asperg, Oftersheim, Mannheim, Stuttgart, Hornberg, Pforzheim, Weil Der Stadt, Karlsruhe, Meckesheim, Bruchsal, Kressbronn, Heidelberg), Bayern(Klaus, Harlaching, Mainburg, Grasbrunn, Gammelsdorf, Neustadt Am Kulm, Edling, Mespelbrunn, Oberappersdorf, Neutraubling, Fürstenfeldbruck, Rütschenhausen, Gaißach, Hilpoltstein, Germering, Hof, Wolnzach, Hahnbach, Elsendorf, Neufahrn, Röthlein, Hirschaid, Bad Tölz, Sonthofen, Munich, Fürth, Eglharting, Germering, Nuremberg,Hersbruck, Roth, Baierbrunn), Brandenburg(Templin), Frankfurt Am Main, Hamburg, Hessen(Gießen, Wald-michelbach, Vellmar, Kassel, Weilburg, Offenbach, Eschborn, Bad Nauheim, Bad Vivel, Darmstadt, Eschwege, Friedberg, Friedrichsdorf, Griesheim, Großalmerode, Hattersheim, Herbelhausen, Kronberg, Rosbach, Wiesbaden, Kelsterbach, Viernheim, Wellburg), Niedersachsen(Giesen, Hanover, Aurich, Achim, Edemissen, Moisburg, Barleben, Hameln, Oldenburg, Wunstorf, Osnabrück, Wolmirstedt) , Nordrhein-westfalen (Bergkamen, Duisburg, Paderborn, Wipperfürth, Köln,Pulheim, Bielefeld, Essen, Gütersloh, Verl, Wuppertal, Wese, Hamm, Iserlohn, Senden, Mechernich, Drensteinfurt, Münster, Titz, Oberhausen, Erwitte ), Mecklenburg-vorpommern(Bergen), Rheinland-pfalz (Gillenfeld, Zweibrücken, Altrip, Hirschberg, Rödersheim-gronau, Kaiserslautern, Mainz, Grünstadt, Koblenz, Ludwigshafen), Schleswig-holstein(Lübeck, Roseburg, Kiel), Sachsen-anhalt(Halle, Barleben, Egeln, Blankenburg, Wernigerode, Cattensted, Beesenlaublingen,BerBel, Hornhausen, Schönebeck, Halberstadt, Wolfen, Magdeburg,Quedlinburg, Altenweddingen), Sachsen(Dresden), Thuringen(Jena, Unterpörlitz)
  14. Greece(11,15), Attiki(Athens, Spétsai) , Thessalonki, Xanthi(Xánthi), Magnisia (Vólos), Rodhopi(Komotiní), Korinthia(Corinth, Kórinthos), Argolis(árgos, Kranídion), Lakonia(Stoúpa), Kavala(Kavála) ,Thessaloniki(Thessaloníki), Kranídion, Argolis, Florina(Flórina),Argolis( árgos), Rodhopi(Komotiní)
  15. Hungary(17,25), Bacs-kiskun(Csólyospálos), Baranya(Kozármisleny), Budapest, Fejer(Székesfehérvár, Dunaújváros), Bekes(Békéscsaba, Mezobereny), Debrecen, Gyor, Pest(Gyomro), Gyor-moson-sopron(Dunakiliti, Sopron), Hajdu-bihar(Zsáka), Szabolcs-szatmar-bereg(Mátészalka), Somogy(Kaposvár), Pecs(Pécs, ), Szeged, Veszprem(Balatonalmádi), Hajdu-bihar(Téglás), Nograd(Szécsény), Borsod-abauj-zemplen(Méra), Komarom-esztergom(Tatabánya, Komárom), Pest(Diósd, Törökbálint), Pest(Budakeszi)
  16. Iceland(1,1), Gullbringusysla(Reykjavík)
  17. Ireland(2,3) Dublin(Rathfarnham,Dublin), Roscommon
  18. Italy (17/21,103) , Giulia Abruzzi(Pescara), Basilicata(Matera), Calabria(Cosenza), Campania(Torre Del Greco, Casalnuovo Di Napoli, Frattamaggiore, Teggiano, Naples, San Giorgio A Cremano, Battipaglia), Emila-romagna (Concordia Sulla Secchia, Bagnolo In Piano, Rubiera, Bologna, Imola, Modena, Forl, Viadanaì, Albinea), Lazio (Rome, Monte Porzio Catone, Monterotondo) , Liguria (Savona, Genoa,Verezzo, Osiglia), Lombardia(Vittuone, Isorella,Monza, Vertova, Varese, Brescia, Milan, Marcallo Con Casone,Castelli Calepio, Vimodrone), Piemonte(Alessandria, Chieri, Settimo Torinese, Casale Monferrato, Alba, Cuneo, Desana, Turin, Novara, Moncalieri, Verceli, Cuorgnè, Bussoleno), Puglia(Galatina, Bari, Barletta, San Cesario, Foggia, Cerignola, Alberobello, Modugno, Casamassima), Friuli-venezia Giulia(San Giovanni Al Natisone,Trieste, Pordenone, Monfalcone, Gorizia, Friuli-Venezia Giulia), Sicilia(Gela, Canicattì, Aci Catena,Ragusa, San Gregorio Di Catania, San Giovanni La Punta, Bagheria, Palermo, Caltagirone, Misterbianco, Messina, Syracuse, Catania, Torregrotta), Sardegna(Muravera, Sennori, Nuoro, Ozieri, Quartucciu, Cagliari, Elmas, Palau), Toscana(Lucca, Leghorn, Pisa Prato, Pistoia, Florence,), Trentino-alto Adige (Caldaro, Adige, Trento, Bolzano, Mezzolombardo), Veneto(Mestre, Verona, Padova, Vicenza, Montecchio Maggiore, Torri Di Quartesolo), Umbria(Foligno)
  19. Latvia(2,2), Riga, Ventspils
  20. Lithuania(2,2), Kauno ApskrKaunas), Vilniaus Apskritis(Vilnius)
  21. Luxembourg(2,6), Diekirch(Erpeldange,Schoos), Luxembourg(Soleuvre, Luxembourg, Rollingen, Strassen)
  22. Macedonia(1) Macedonia(Gostivar), Karpos(Skopje), Veles, Kicevo
  23. Moldava(1) Chisinau
  24. Montenegro(1), Podgorica
  25. Netherlands (13,44), Noord-holland(Haarlemmermeer, Hilversum, Bussum, Den Helden, Amsterdam, Assendelft, Schiphol), Noord-brabant(Udenhout, Eindhoven,Prinsenbeek, Cranendonck, Breda), Flevoland(Almere, Marknesse), Utrecht(Nieuwegein, Vianen, Wijk Bij Duurstede, Bilthoven, Amerongen, Veenendaal, Bilthoven, Houten), Groningen(Usquert,Wagenborgen), Limburg(Tegelen, Roermond), Gelderland(Bennekom, Vaassen, Epe,Nijmegen ), Zuid-holland(Maassluis, Alphen, Krimpen, Leidschendam,, Rotterdam, Rijswijk, Den Haag, Wateringen, Hoek Van Holland, Delft, Capelle, Leiden,Noordwijk, Zoetermeer), Overijssel(Rijssen, Deventer, Holten), Gelderland(Arnhem), Drenthe(Meppel), Zeeland(Terneuzen)
  26. Norway(4,4) Hordaland(Loddefjord), Friesland(Franeker), Oslo, Sor-trondelag(Trondheim), More Og Romsda(Molde)
  27. Poland (34,84), Skierniewice(Radziejowice), Piotrkow(Zelów, Tomaszów Mazowiecki), Czestochowa(Lubliniec,Starokrzepice), Opolskie(Opole), Tarnobrzeg(Koprzywnica), Biala Podlaska(Miedzyrzec Podlaski), Ciechanow, Gdansk(Gdynia, Pomorskie, Trabki Wielkie), Podlaska, Bielsko (Bielsko-biala, Dankowice, Wadowice, Oswiecim, Kety, Skoczów,Babice), Dolnoslaskie(Wroclaw, Siedlecin), Jelenia Gora(Boleslawiec, Zgorzelec) , Kielce(Konskie,Swietokrzyskie), Kalisz(Mazury), Katowice(Dabrowa Gornicza, Zebrzydowice, Czerwionka, Zabrze, Gliwice,Tychy, Bytom, Ledziny, Chrzanów, Chorzów, Pyskowice, Bedzin, Starachowice, Pszczyna, Piekary Slaskie), Legnica(Lubin), Lodz(Lodzkie, Ozorków), Poznan (Grodzisk, Gniezno, Wielkopolski) , Bialystok(Lapy, Podlaskie) Pila, Malopolskie(Cracow), Radom(Jedlnia-letnisko), Rzeszow(Frysztak), Slaskie(Katowice), Walbrzych (Duszniki Zdrój,Nowa Ruda, Swidnica, Pieszyce), Wielkopolskie(Poznan), Warszawa (Kobylka, Opacz, Komorów, Brwinów, Warsaw, Pruszków, Blonie, Warszawa), Torun(Grudziadz), Zachodniopomorskie(Szczecin, Goleniów, Koszalin), Wloclawek(Polska, Przysiek, Ciechocinek), Radom, Bilgoraj(Zamosc) , Olsztyn(Ketrzyn,Warminsko-mazurskie ), Kalisz(Mazury), Kartow(Wieliczka), Suwalki(Gizycko), Nowy Sacz(Limanowa, Bialka), Przemysl(Jaroslaw), Bydgoszcz( Kujawsko-pomorskie, Sepolno Krajenskie, Inowroclaw), Tarnow(Lisia Góra), Krakow(Skawina), Tarnobrzeg(Janów Lubelski)
  28. Portugal(7,15), Porto(Maia, Vila Do Conde), Lisboa(Cascais, Lisbon, Sintra,Almargem Do Bispo, Amadora, Carnaxide), Braga (Santa Maria), Faro (Santa Bárbara De Nexe), Azores(Angra), Santarem(Santarém,
  29. Almeirim), Aveiro(Espinho, Esmoriz), Viana Do Castelo(Melgaço)
  30. Romania(16,16),Tulcea(Sarichioi), Ilfov(Buftea), Harghita(Miercurea-ciuc), Brasov, Iasi, Vaslui, Bistrita-nasaud(Vatra Dornei), Prahova(Ploiesti), Bucuresti(Bucharest), Botosani, Bihor(Oradea), Suceava(Radauti), Neamt(Piatra Neamt), Sibiu, Hunedoara(Hateg), Timis(Timisoara)
  31. Russian Federation(26,26), Tatarstan(Kazan) , Orel, Sakhalin(Yuzhno-sakhalinsk), Belgorod, Kemerovo, Kaluga(Obninsk)Moscow(Moscow City,Khimki), Pskov, Primor'ye(Vladivostok),Kaluga, Saratov, Yaroslavl'(Yaroslavl), Lipetsk, Saint Petersburg City(Saint Petersburg), Krasnodar(Lenina), Rostov(Rostov-na-donu),Krasnodar( Sochi), Khabarovsk, Yamal-nenets(Tarko-sale), Moskva(Dmitrov), Voronezh, Orenburg(Orsk), Sverdlovsk(Yekaterinburg), Orenburg(Buzuluk), ,Kemerovo(Novokuznetsk), Udmur(Izhevsk), Udmurt(zhevsk), Irkutsk
  32. Serbia(3, 17), Serbia Proper(Leskovac, Obrenovac, Pancevo, Belgrade,Beograd, Bela Palanka, Kragujevac, Dardania, Backa Topola, Kosovo, Nis, Beograd, Sabac), Vojvodina(Novi Sad, Zrenjanin)
  33. Slovakia(4,7) Bratislava, Banska Bystrica(Banská Bystrica, Rimavská Sobota, Rohovce, Rimavská, Zvolen), Zilina, Rohovce, Váhom, Nitra(Trnovec Nad)
  34. Slovenia(2,14), Bohinj(Lesce, Cerknica,, Lukovica, Ravne, Kranj, empeter, Ljubljana, Sempeter, Trzin, Novo Mesto, Kocevje, Logatec, Jesenice), Brezovica(Maribor, Ormoz)
  35. Spain (20,67), Pais Vasco(Vitoria), Islas Baleares(Palma), Aragon(Peraltilla,, Zaragoza, Teruel,), Andalucia(Cullera, El Puerto De Santa Maria, Cadiz, Granada, Jaén, Melilla, Servilia, Marbella, Mijas, Málaga, Dos Hermanas, Almería, Jerez), Comunidad Valenciana(Orihuela, Torrevieja, Comunidad Valenciana, Valencia, sueca, Elche, Novelda), Casti-la Moncha(Albacete), Castilla Y Leon(Burgos), Catalonia (Girona, Cassá De La Selva, Manresa, Badalona, Barcelona, Granollers, Gerona, Mataró, Salt, Solsona, Silis, Cardedeu), Canarias(Adeje, Las Palmas, Santa Cruz De Tenerife), Extremadura(Badajoz), Galicia(Pontevedra, Vigo, Lalín, Santiago De Compostela, A Coruña,), Islas Baleares, Murcia (Alcantarilla) , Madrid(Fuenlabrada, Alcorcón, Villaviciosa De Odón, Torrejón De Ardoz), Navarra (Tafalla, Pamplona), Pais Vasco(Irún, Gáceta), Cantabria(Santander), Sicilia(Vittoria), Santa Catarina(Itajaí, Joinville, Blumenau, Camboriú, Florianópolis), Castilla-la Mancha(Tomellos), Comunidad Valenciana(Elche), Asturias(Gijón)
  36. Sweden(7,9), Norrbottens Lan(Luleå), Stockholms Lan (Södertälje,Sollentuna,), Orebro Lan(Hällefors), Kalmar Lan(Kalmar), Uppsala Lan(Uppsala), Varmlands Lan(Sunne), Ostergotlands Lan(Linköping), Habo, Gotaland(Vastra), Blekinge Lan(ödeby)
  37. Switzerland(8,10, Bern(Wabern), Schaffhausen, Obwalden(Mörigen, Nods), Zurich(Zürich, Pfäffikon), Valais(Sion), Vaud(Lausanne), Ausser-rhoden(Herisau), Sankt Gallen(Walzenhausen)
  38. Turkey(7,8), Hatay(Antakya,Iskenderun), Istanbul, Ankara, Konya, Icel(Mersin), Trabzon, Bursa
  39. United Kingdom(38,41), from Hampshire(Southsea), Northamptonshire (Northampton), Nottinghamshire(Mansfield), Surrey(Surbiton), Greater London(Isleworth), Blackpool, Buckinghamshire(Buckingham) Cambridgeshire (Cambridge,Ely), Cheshire(Winsford), Coventry, Devon(Barnstaple), Derbyshire(Derby), Glasglow(Glasgow City), West Sussex(Burgess Hill ), Gloucestershire(Gloucester), Kirklees(Huddersfield), Leicestershire(Hinckley), London, Milton Keynes, New Hampshire(Manchester), Rochdal, West Sussex(Pagham), West Lothian (Livingston), Birmingham, Hertford(Norton, Watford), Reading, Leeds, West Berkshire(Newbury), Portsmouth, Wolverhampton, Croydon, Rotherham, Bristol, Swansea, West Midlands(Sutton Coldfield), Staffordshire(Smethwick), Windsor And Maidenhead(Maidenhead), Monmouthshire(Usk). Witney(OxfordShire), Kingston Upon Hul(Kingston Upon Hull)
  40. Ukraine(12,12), Dnipropetrovs'ka Oblast'(Dnepropetrovsk), Donets'ka Oblast'(Malaya), Kyyivs'ka Oblast (Kiev), Kharkivs'ka Oblast' (Kharkov), Mykolayivs'ka Oblast' (Nikolaev), Odes'ka Oblast(Odessa), Volyns'ka Oblast'(Lutsk), Zaporiz'ka Oblast(Zaporozhye), L'vivs'ka Oblast'(Lviv), Zhitomir(Zhytomyrs'ka Oblast'), Zhytomyrs'ka Oblast'(Zhitomir), Poltavs'ka Oblast'(Poltava)
African & Middle-East
  1. Algeria(5,5), Alger (Algiers ), Boumerdes(Boudouaou), Bouira(Sidi Aïssa), Setif(Sétif), Constantine(Skikda)
  2. Burkina Faso
  3. Cameroon
  4. Cote D'ivoire, Abidjan, Lagunes,
  5. Democratic Republic of Congo(1,1), Kinshasa
  6. Egypt(4,5), Cairo, Al Qahirah(cairo, Helwan), Al Iskandariyah(Alexandria), Al Gharbiyah(Tanta), Al Buhayrah(Ramsis)
  7. Iran, Islamic Republic Of, Khorasan(Mashhad), Esfahan(Tehran), Ardabil
  8. Ghana
  9. Guyana, Demerara-mahaica(Georgetown)
  10. Israel(4,5), Yerushalayim(Jerusalem), Hamerkaz(Rishon Le Zion, Hod Hasharon), Hefa(Haifa), Tel Aviv
  11. Kenya(4,4), Nairobi Area (Nairobi), Nyanza(Kisumu), Western(Kakamega), Coast(Mombasa)
  12. Kuwait
  13. Libya, Libyan Arab Jamahiriya
  14. Madagascar(1,1) Antananarivo,
  15. Morocco(2,2), Gurgaon, Safi(Youssoufia)
  16. Nigeria(1,1), Federal Capital Territory(Abuja)
  17. Oman(1,1), Masqat(Muscat, )
  18. Saudi Arabia(2,2) Ash Sharqiyah (Dhahran), Ar Riyad(Riyadh)
  19. Senegal(1,1) Dakar
  20. South Africa(5,11), Gauteng(Boksburg, Pretoria, Johannesburg, Roodepoort),Western Cape(Cape Town, Durbanville, Stellenbosch, Bellville), North-west(Fochville), Kwazulu-natal(Durban), Kwazulu-natal(Pietermaritzburg)
  21. Tunisia, Safaqis
  22. UAE(2,2), Sharjah, Dubai

North America

Canada (8/13,39)
  1. Alberta (Edmonton, Medicine Hat)
  2. Manitoba(Winnipeg)
  3. New Brunswick (Moncton, Saint John)
  4. Ontario (Thornhill, Little Current, Waterloo,Scarborough, Cobourg,Toronto,Etobicoke, Barrie, Brampton, Taschereau, London, Milton)
  5. Quebec (Beaconsfield, Lévis, Downingtown, Montreal,Verdun,Rimouski, Chicoutimi, Sherbrooke, Laval)
  6. Saskatchewan(Saskatoon, Prince Albert)
  7. British Columbia(Nanaimo, Vancouver, Abbotsford,New Westminster, Sidney, Port Coquitlam,Nelson, Victoria)
  8. Nova Scotia(Sydney, Leme, Halifax)

USA (46/293)
  1. Alabama (Montgomerey, Birmingham, Harvest, Goodyear, Andalusia, Enterprise, Huntsville)
  2. Alaska(Fairbanks, Juneau, Anchorage)
  3. Arizona (Chinle, Scottsdale,Mesa,Tucson)
  4. Arkansas(Little Rock,Texarkana),
  5. California (Citrus Heights, Hayward, La Mirada, San Fransisco, Newark, Alhambra, Monterey Park, Sanger, Anaheim,Aptos, Lake Isabella, Fontana, San Bernardino, Rosemead, Rocklin, Auburn,Brea,Buena Park, Bakersville, El Cajon, Cathedral City, Los Angeles, Sacremento,San Diego, Oakland, Vacaville, Merced, Rowland Heights, Long Beach, Foresthill, Irvine, Walnut Creek, Fresno, Rancho Cucamonga, Calabasas, Castro Valley, San Clemente, Mountain View, San Jose,South Pasadena, Winnetka, Orange, Riverside, Mexicali Baja, Fullerton)
  6. Colorado (Colorado Springs, Denver, Englewood)
  7. Connecticut(Greenwich, Groton, Hamden, New Canaan, Meridien, Stamford)
  8. Delaware(Dover)
  9. District Of Columbia(Washington)
  10. Hawaii(Kailua Kona, Kapolei,)
  11. Idaho (Meridian,Lewiston, Boise)
  12. Indiana (Fort Wayne, Muncie, Angola)
  13. Illinois (Schaumburg, Hoffman Estates, Buffalo Grove, Roselle, Chicago, Alsip, Barrington, Peoria, Orland Park, Palos Hills, Des Plaines, Lincolnshire, Wheaton, Worth)
  14. Iowa, (Hamburg, Iowa City, Troy, Fairfield, Sidney)
  15. Florida (Hialeah,Hollywood, Winter Park, Deland, Saint Augustine, Jupiter, Kissimmee, Fort Meyers, Saint Cloud,West Palm Beach, Miami, Miami Beach, Tallahassee, Orange Park, Jacksonville, Pompano Beach, Rockledge, Orlando, Fort Lauderdale, Tampa, Clearwater, Sarasota, Boca Raton)
  16. Georgia (Conyers, Alpharetta, Macon, Savannah, Tampa, Marietta, Atlanta, Roswell, Kennesaw, Norcross)
  17. Kansas (Concordia, Wichita)
  18. Kentucky (Harrodsburg)
  19. Louisiana (Monroe,Shreveport)
  20. Maine (Westbrook)
  21. Maryland(Frederick, La Plata, Baltimore, Columbia, Lanham, Sykesville, Silver Spring)
  22. Massachusetts(Cambridge, Framingham, Tewksbury, Bedford, Mattapan, Acton, Billerica, Uxbridge, Marlborough)
  23. Michigan (Bridgman, Cold Water, East Lansing, Owosso, Traverse City, Grand Rapids)
  24. Minnesota (Minneapolis, Rochester)
  25. Missouri (Saint Louis, Sikeston, Florissant, Kansas City, Nixa)
  26. Nevada(Las Vegas)
  27. New Hampshire(Derry)
  28. New Jersey(Andover, Paramus, Tranquility, Mahwah, Midland Parks, Teaneck, Somerset, Paterson, Vineland, Riverton, Flemington,Westwood,Willingboro)
  29. New York (Buffalo, Brooklyn, Staten Island, Astoria, Babylon, Brookyln, Clifton Park, Fayetteville, Waterloo, West Islip, Rego Park, Flushing, Lindenhurst, Rensselaer, Oceanside, Rochester)
  30. North Carolina(Burlington, Cornelieus, Durham, Mooresville, Asheville,Fletcher,North Hollywood,Monroe, Cuernavaca, )
  31. North Dakota(Fargo)
  32. Ohio (Akron, Bucyrus, Bloomingdale, Cambridge, Bowling Green, Milford, Powell, Hudson, Cincinnati, Logan, Loveland, Twinsburg, Marysville, Yellow Springs)
  33. Oklahoma (Oklahoma City, Stillwater)
  34. Oregon (Portland, Beaverton)
  35. Pennsylvania (Philadelphia, Harrisburg, Chester Springs, Orefield, Malvern, Downingtown, Landsdale, West Chester, Doylestown, Pottstown, Scranton)
  36. Puerto Rico(Anasco)
  37. South Carolina (Florence, Columbia, Hilton Head Island,)
  38. South Dakota(Aberdeen, Sioux Falls)
  39. Tennessee (Brownsville, Nashville, Memphis, Bell Buckle, Chattanooga,)
  40. Texas (Irving, Killeen, Texarkana, Kemah, League City,Dallas, San Antonio, Houston, Corpus Christi, El Paso, Fort Worth, Abilene, Harker Heights, Lake Jackson)
  41. Virginia, (Arlington, Ashburn,Floyd, Richmond, Rocky Mount, Lebanon, Chesapeake, Fairfax Station)
  42. Vermont(Enosburg Falls, Chester)
  43. West Virginia
  44. Washington (Bellingham,Seattle, Tacoma, Olympia, Redmond,Everett)
  45. Wisconsin (Neenah, Tomah, Pound, Green Bay, Appleton, Madison, Bellingham, Hatley, Hartford,Wausau, Plover, Bellevue, Janesville)
  46. Utah (Ogden, Salt Lake City, Hooper,Washington, Sandy)
Mexico(26, 48)
  1. Baja California(ijuana)
  2. Chiapas(Tapachula, Zinacantán, Tuxtla Gutiérrez, La Trinitaria)
  3. Chihuahua
  4. Colima
  5. Coahuila De Zaragoza(Saltillo, Torreón)
  6. Distrito Federal(Mexico)
  7. Guerrero(Chilpancingo)
  8. Guanajuato(León)
  9. Hidalgo(Tulancingo)
  10. Jalisco (Zapopan, Tlajomulco, Guadalajara)
  11. Juarez
  12. Mexico(Tultitlán, Cuautitlán Izcalli, Nezahualcóyotl, Naucalpan, Guanajuato, Metepec)
  13. Morelos(Cuernavaca, Cuernavaca)
  14. Naucalpan
  15. Oaxaca(Tuxtepec)
  16. Quintana Roo(Chetumal)
  17. Queretaro De Arteaga(Querétaro)
  18. Nuevo Leon(Monterrey, San Nicolás De Los Garza, Garza García)
  19. Puebla(Tehuacán)
  20. Sonora (Obregon)
  21. Sinaloa (Los Mochis, Mazatlán, Sinaloa)
  22. Tabasco(Villahermosa)
  23. Tamaulipas(Tampico, Nuevo Laredo, Reynosa, Altamira€)
  24. Veracruz-llave(álamo, Tierra Blanca,Veracruz, Poza Rica, Xalapa)
  25. Yucatan(Mérida)
  26. Zacatecas(Madero)

Central America


  1. Costa Rica, San Jose(San José), Limon(Limón), Alajuela(San Ramón)
  2. Guatemala, Guatemala(Guatemala City)
  3. Honduras, Francisco Morazan (Tegucigalpa)
  4. Nicaragua(Managua), Masaya(Masatepe)
  5. Panama , Chiriqui(Pueblo Nuevo, David ), Panama(La Chorrera)
  6. Trinidad & Tobago, St George
Caribean

  1. Dominician Republic, (Santiago, Santo Domingo),Espaillat(Moca, ), San Cristobal(Fundación)

South America
  1. Argentina(13,54), San Luis(Mercedes), Tucuman(Tucumán), Corrientes, Entre Rios(Viale, Federal), Bueno Aires(Florencio Varela, La Pata, Martinez, Olivis, San Antonio De padua, San Martín, Olivos, Luján, Hurlingham, Temperley, Junín, Banfield,Avellaneda, Ituzaingó, San Isidro, Bahia Blanca, Bernal, Brandsen, Boulogne, Berazategui, , Matheu, Lanús, La Plata, Monte Grande, Quilmes, Ranelagh,Villa Ballester, Gonnet, Mar Del Plata,Verónica, Santos Lugares, San Nicolás), Cordoba(Córdoba, Laboulaye, Serrano, Villa Carlos Paz,),Distrito Federal(Villa Devoto,Buenos Aires) Mendoza(Junín), Santa Fe(Rosario,Villa Constitución), Chaco(Resistencia), Neuquen(Neuquén, San Martín De Los Andes), Mendoza (Rivadavia), Entre Rios(Concordia), Mendoza, Chubut(Trelew), Misiones(Posadas, Puerto Rico, Eldorado)
  2. Bolivia(3,3), El Beni(Santa Cruz), Cochabamba, La Paz
  3. Brazil (22,108), Tocantins(Palmas), Rio Grande Do Norte(Natal), Amazonas(Manaus), Espirito Santo(Vila Velha) , Golas(Inhumas), Sergipe(Aracaju), Bahia (Salvador) , Rondonia(Cacoal, Ji-paraná,Pôrto Velho),Parana(Campo Mourão, Curitiba, Loanda, Londrina, Paranavaí, Foz Do Iguaçu, Maringá), Pernambuco(Recife, Olinda, São João), Minas Gerais(Ipatinga, São João Del Rei, Contagem, Almenara, Carmo Do Rio Claro, Belo Horizonte, Uberlândia, Ubaporanga,Betim, Mijas), Goias(Goiânia,Senador Canedo, Anápolis), Paraiba(Patos, Bayeux, João Pessoa), Distrito Federal(Brasília), Rio De Janeiro(Petrópolis,Rio De Janeiro,), Ceara(Fortaleza), Para(Belém, Santarém,), Mato Grosso Do Sul(Dourados, Campo Grande), Rio Grande Do Sul(Caxias Do Sul, Santa Cruz Do Sul, Novo Hamburgo, Cachoeirinha, Gravataí, Sapiranga, Estrêla, Porto Alegre, Igrejinha, Cruzeiro Do Sul, Venâncio Aires), Piaui(Teresina), Maranhao(São Luís, Coroatá,), Sao Paolo(Ribeirão Prêto, Indaiatuba, Taubaté, Santos, Pontal, Louveira, Santo André, São José Do Rio Prêto, Getulina, São paolo, Manuel,Moji Das Cruzes, Tatuí, Osasco, Sao Carlos, Araçatuba, Nova Odessa, Lins,Laranjal Paulista, Presidente Prudente, Sorocaba, Juquitiba, Araraquara, Araras, Mogi-guaçu, Campinas, Leme, Arujá, São Sebastião,Birigui, São José Dos Campos, Piraju,Caraguatatuba, Piracicaba, Avaré,Bebedouro, Garça, Itapira, São Paulo, Rio Claro, Pao, Limeira, Guarulhos, Hortolândia,Bauru, Embu, Jundiaí , Jaboticabal,Mirassol, Barueri,), Santa Catarina(Blumenau, Schroeder, Gravatal, Criciúma, Tubarão), Maranhao(São Luís)
  4. Chile(13,17), Region Metropolitana (Santiago), Magallanes Y De La Antartica Chilena(Punta Arenas), Coquimbo, Bio-bio(Chillán, Concepción, Los ángeles), Araucania(Temuco), Valparaiso(Viña Del Mar, Valparaíso), Rio Grande Do Sul(Porto Alegre), Los Lagos,(aldivia), Los Lagos(Valdivia, Osorno), Antofagasta(Calama) , Libertador General Bernardo O'higgins(Rancagua), Maule(Parral)
  5. Colombia(9,9), Atlantico (Barranquilla), Santander(Bucaramanga), Department(Tunja, Boyacá), Cundinamarca(Bogotá, Zipaquirá), Norte De Santander(Cúcuta), Bolívar , Santande(Bucaramanga), Bolivar Department(Cartagena), Huilia(Beiva),Tolima(lbague)
  6. Ecuador(1,1) , Pichinca (Quito)
  7. Paraguay(2,2) , Central( Asunción), Itapua(Encarnación)
  8. Peru(5,5), Piura(Sullana), Lima, La Libertad(Trujillo), Arequipa, Tacna
  9. Uruguay(4,4), Montevideo, Maldonado, San Jose(San José), Tacuarembo(Tacuarembó)
  10. Venezuela(13,18), Sucre(Cumaná), Guarico(Valle De La Pascua), Nueva Esparta(Manzanillo, Porlamar), Distrito Federal (Caracas), Monagas(Bolivar, Maturín), Aragua(Maracay), Anzoategui(Barcelona), Barinas, Lara(Barquisimeto, Cabudare), Zulia(Maracaibo, Cabimas, ), Miranda(Petare, Charallave), Tachira(San Cristóbal), Cabimas, Zulia, Merida(Mérida)

Asia-Pacific
  1. Australia(6/8, 26), Queensland(Brookfield, Mooloolah, Brisbane,Gold Coast), New South Wales (Toronto, Uki, Manly, Mascot, Sydney, Murwillumbah. Narellan, Parkes,Liverpool,Pyrmont), Victoria (Box Hill, Glen, Geelong, Berwick, Waverley, Melbourne, Horsham, Hampton Park), Western Australia(Kalgoorlie, Perth), South Australia(Adelaide, Port Augusta), Australian Capital Territory(Canberra)
  2. Brunei Darussalam(1,1)(Bandar Seri Begawan)
  3. China(9,10) , Guangdong(Guangzhou, Dongguan), Guangxi (Nanning), Guangdong(Shenzhen), Shanghai, Shanxi (Henan), Jilin(Changchun), Shaanxi(Xian), Beijing, Shandong(Qingdao), Fujian(Shangxi)
  4. French Polynesia(1,1)
  5. Guam(3,3) Barrigada, Hagatna, Yigo
  6. Hong Kong(5,5), Quarry Bay,Central District,Causeway Bay,Chai Wan, North Point
  7. India (17/35,46), Punjab(Amritsar, Phagwara), Goa(Cortalim), Jharkhand(Ranchi), Maharasta(Nasik, Bombay,Pune, Aurangabad) , Kerala (Kollam, Kochi, Thiruvananthapuram, Pathanamthitta), Gujarat(Palanpur, Bhavnagar, Anand, Rajkot, Surat, Ahmadabad, Nadiad, Vadodara), Karnataka(Bangalore, Mangaluru), Tamil Nadu(Madurai, Sennori, Tiruppur, Madras, Erode, Singanallur, Coimbatore, Tiruchchirappalli, Erode), West Bengal(Calcutta), Delhi (New Delhi), Andhra Pradesh(Hyderabad), Uttar Pradesh(Muzaffarnagar, Meerut, Lakhnau, Ghaziabad, Gorakhpu), Madhya Pradesh(Ujjain, Indore, Bhopal), Bihar(Patna), Haryana(Faridabad, Sonipat, Gurgaon), Kerala(Kochi), Rajasthan(Jaipur), Chandigarh
  8. Indonesia(8,14), Yogyakarta,Jakarta Raya (Jakarta), Jawa Barat(Bandung,Tangerang, Bekasi, Cimahi, Sukabumi, Bogor), Jawa Tengah(Semarang), Jawa Timur(Tulungagung, Surabaya), Jawa Tengah(Mega), Sumatera Utara(Medan), Sumatera Selatan(Palembang)
  9. Japan(3,3), Tokyo, Kanagawa(Yokohama), Aichi(Ichinomiya), Gumma(Tomioka)
  10. Korea(4,4), Seoul-t'ukpyolsi(Seoul), Kwangju-jikhalsi(Gwangju), Kyonggi-do(Ansan), Inch'on-jikhalsi(Incheon)
  11. Macau, Ilhas(Macau)
  12. Malaysia (8/13,14) , Penang(Butterworth, Penang), Kelantan(Pasir Mas), Selangor(Shah Alam, Petaling Jaya, Kuala Selangor), Johor(Johor Baru, Kluang), Sabah(Kota Kinabalu), Sarawak (Kuching), Melaka, Perak(Ipoh, Parit Buntar), Kuala Lumpur, Pahang(Kuantan)
  13. Mauritius
  14. Mongolia(1,1) (Ulaanbaata)
  15. Nepal, Kathmandu
  16. New Zealand(3,3), Wellington(Porirua), Auckland(Dargaville), Nelson
  17. Pakistan(4,5), Punjab(Sahiwal, Lahore), Kashmir, Islamabad, Sindh(Karachi)
  18. Philippines(15,21), Nueva Ecija(Quezon),Cebu(Cebu City), Bulacan(Malolos), Manila, Rizal(Pasig, Mandaluyong, Makati, Sampaloc, MalandayParañaque), Mandaue, Davao(Tagum, Davo City), Quezon City(Caloocan), Tagbilaran, Lipa, Surigao Del Sur(Bislig), Cavite City(Cavite), Pamoanga(San Fernando), Bukidnon(Malaybalay), Nueva Ecija(Quezon), Laguna(College), Philippine(Banguet)
  19. Singapore(1) Singapore
  20. South Korea(1), Seoul-t'ukpyolsi (Seoul)
  21. Sri Lanka(1,1) Western(Colombo), Uva(Badulla)
  22. Taiwan(2,5), T'ai-pei(Taipei), T'ai-wan(Kangshan,Kaohsiung, Taoyüan, Hsinchu)
  23. Thailand(3,3), Khan Kaen, Krung Thep (Bangkok), Chai Nat(Sankhaburi)
  24. Vanuatu (Vila, Efate)
  25. Fpo, Armed Forces Pacific
  26. Vietnam , Song Be(Plây Cu), Quang Tri,

Thursday, February 26, 2009

Migrating from CA-Clipper 5.2e to xHarbour (Part III)

Having managed to recompile an actual DOS-based CA-Clipper EXE to a XHarbour W32 EXE, the next question is does it work

1) Launch FAS.EXE... so far so good

2) Input User Name & press enter, it bombs with the message

Error BASE/1003 variable does not exist GETLIST
Error at ...: MAIN_PASS(1051) in Module: FAS_MAIN.PRG
Called from : PASS_SCR(234) in Module: FAS_MAIN.PRG
Called from : MAIN(125) in Module: FAS_MAIN.PRG


Solution by Michael Hagl via comp.lang.xharbour

Add LOCAL getlist:={} to MAIN_PASS.PRG

Status : FAS.EXE can now run but now getting a weird ALERT() positioning as reported to
http://groups.google.com/group/comp.lang.xharbour/browse_thread/thread/44d58ac09e95f332#

Solution :
// Ron Pinkas 27/2/09
SetMode( 25, 80 )

Updated 2nd March 2009

Conclusion :

We started with FAS4DOS (CA-Clipper 5.2e)


What I got was a true Win32 executable but it looks exactly the same as FAS4DOS (minus the effect of Funckys' background function CLS() ) :-(


So how did I get the following screen-shot ? ;-)

Notice that the Window is centred and displays the EXE name instead of the C:\PATH\EXENAME and looks bigger...

So, how did I do it ?

Wednesday, February 25, 2009

Migrating from CA-Clipper 5.2e to xHarbour (Part II)

From Migrating from CA-Clipper 5.2e to xHarbour (Part I), we have clicked Build and OMG, there are lots of Unresolved External Symbols that needed to resolve.

As usual, I posted to comp.lang.xHarbour and the registered user's xHarbour newsgroup.
Within a short while, I had a most useful response from Michael Hagl as follows :-


-HB_FUN_MOUSE
Michael Hagl :

Function Mouse(x)

Return SetMouse(x)

-HB_FUN_RANDOM
CCH :

Replace with Phil Barnett's Random()


-HB_FUN_APRINT
Michael Hagl:

very dirty.

Static saSetAttrib

Function Aprint(nRow,nCol,str,attr,nLength,nStart)
Local nHighStart := At("^",str)
Local nHighEnd
Local cAttrib, nAttrib

If nHighStart > 0
cAttrib := Substr(str,nHighStart+1,1)
nAttrib := GetAttrib(cAttrib)
If Valtype(nAttrib) == "C" .and. nAttrib == "^"
nHighStart := 0
str := Left(str,nHighStart-1)+Substr(str,nHighStart+1)
Else
str := Left(str,nHighStart-1)+Substr(str,nHighStart+2)
Endif
Endif
nHighEnd := At("^N",Upper(str))
If nHighEnd > 0
str := Left(str,nHighEnd-1)+Substr(str,nHighEnd+2)
Endif

If !(nStart == Nil)
str := Substr(str,nStart)
Endif
If !(nLength == Nil)
str := Untrim(str,nLength)
Endif
DispOutAt(nRow,nCol,str,NtoColor(attr,.t.),.f.)
If nHighStart > 0
If Valtype(nAttrib) == "N"
ColorWin(nRow,nCol+nHighStart-1,nRow,nCol+nHighStart-1,nAttrib)
Elseif Valtype(nAttrib) == "C"
// ???
Endif
Endif
Return Nil

Static Function saSetAttribInit()
If saSetAttrib == Nil
saSetAttrib := {{"B","B"},;
{"R","R"},;
{"F","F"},;
{"S",S_TEXT},;
{"E",S_TEXT+12},;
{"N",S_TEXT},;
{"^","^"}}
Endif
Return Nil

Function SetAttrib(chr,nAttr)
Local nPos
saSetAttribInit()
chr := Upper(chr)
nPos := Ascan(saSetAttrib,{|x|x[1]==chr})
If nPos > 0
saSetAttrib[nPos,2] := nAttr
Else
Aadd(saSetAttrib,{chr,nAttr})
Endif
Return .t.

Function GetAttrib(chr)
Local nPos
saSetAttribInit()
chr := Upper(chr)
nPos := Ascan(saSetAttrib,{|x|x[1]==chr})
If nPos > 0
Return saSetAttrib[nPos,2]
Endif
Return -1

-HB_FUN_FORM_BOD
CCH:
Added SuperLib s_foml.prg

-HB_FUN_SWPRUNCMD
Ron Pinkas
/-------------------------------------------------------------------------
---------------------------//
FUNCTION SwpRunCmd( cCommand, nuMem, cRunPath, cTempPath )

LOCAL nAt, cArgs, cPresetDisk, cPresetDir, nRet

#ifndef DIR_SEPARATOR
#ifdef __PLATFORM__Windows
#define DIR_SEPARATOR '\'
#else
#define DIR_SEPARATOR '/'
#endif
#endif

IF Empty( cRunPath )
nAt := At( ' ', cCommand )

IF nAt > 0
cArgs := SubStr( cCommand, nAt )
cCommand := Left( cCommand, nAt - 1 )
ENDIF

nAt := RAt( DIR_SEPARATOR, cCommand )

IF nAt > 0
cRunPath := Left( cCommand, nAt )
cCommand := SubStr( cCommand, nAt + 1 ) + cArgs
ENDIF
ENDIF

IF cRunPath[2] == ':'
cPresetDisk := DiskName()

IF ! DiskChange( cRunPath[1] )
RETURN Throw( ErrorNew( "Blinker", 0, 1001, ProcName(), "Could not
switch to drive: " + cRunPath[1], HB_aParams() ) )
ENDIF

cRunPath := SubStr( cRunPath, 3 )
ENDIF

IF ! Empty( cRunPath )
cPresetDir := DIR_SEPARATOR + CurDir()

IF DirChange( cRunPath ) != 0
RETURN Throw( ErrorNew( "Blinker", 0, 1002, ProcName(), "Could not
switch to folder: " + cRunPath, HB_aParams() ) )
ENDIF
ENDIF

__Run( cCommand, @nRet )
SwpErrLev( nRet )

IF ! Empty( cPresetDisk )
IF ! DiskChange( cPresetDisk )
RETURN Throw( ErrorNew( "Blinker", 0, 1003, ProcName(), "Could not
switch back to drive: " + cPresetDisk, HB_aParams() ) )
ENDIF
ENDIF

IF ! Empty( cPresetDir )
IF DirChange( cPresetDisk ) != 0
RETURN Throw( ErrorNew( "Blinker", 0, 1004, ProcName(), "Could not
switch back to folder: " + cPresetDir, HB_aParams() ) )
ENDIF
ENDIF

RETURN nRet == 0

FUNCTION SwpErrLev( nLev )

STATIC s_nLastLev := 0

IF ValType( nLev ) == 'N'
s_nLastLev := nLev
ENDIF

RETURN s_nLastLev
//----------------------------------------------------------------------------------------------------//


Michael Hagl :

/******************************************************************************
V32ShellExecute(<>,[ cVerb ],[ cParam ],[ cDir ],[ cState ],[
lModal ] )

Arguments
<> is a character string containing the path and file name to be
executed with its associated program. If this parameter is
missing,
no action is taken.
[ cVerb ] is the flag what type of action the associated program has to
take.
Default is 'open'. Windows defines default verbs as 'open',
'print',
'explore'.

[ cParam ] a character string representing parameters to be passed to
associated program. Default is empty string.

[ cDir ] optional directory path where the associated program searches for
the required components.

[ cState ] can be on of the these: Hide, Normal, Minimized, Maximized, Show.
Default is 'Normal'. This determines the state of associated
program window.

[ lModal ] logical to determine whether the invoked program becomes the
child process of the current application or the program flow
return to application immediately after invoking the associated
program. Default is FALSE means program flow returns immediately.
***************************************************************************

****/
Function V32ShellExecute(cFile,cAction,cParam,cDir,cState,lModal)
Local nShowCmd
Default cAction To "open"
Default cParam To ""
Default cDir To ""
Default cState To "NORMAL"
If Upper(cState) == "MINIMIZED"
nShowCmd := 2
Elseif Upper(cState) == "MAXIMIZED"
nShowCmd := 3
Elseif Upper(cState) == "NOACTIVATE"
nShowCmd := 4
Elseif Upper(cState) == "SHOW"
nShowCmd := 5
Elseif Upper(cState) == "SHOWMINNOACTIVE"
nShowCmd := 7
Elseif Upper(cState) == "SHOWNA"
nShowCmd := 8
Elseif Upper(cState) == "SHOWDEFAULT"
nShowCmd := 10
Else
nShowCmd := 1
Endif
ShellExecute(0,cAction,cFile,cParam,cDir,nShowCmd)
Return .f.

-HB_FUN_ATTRTOA
Michael Hagl :

Function Attrtoa(nAttr)
Local r := NtoColor(nAttr,.t.)
Return r


-HB_FUN_FRE
CCH:
Solved by removing obsolete DOS functions


-HB_FUN_CPUTYPE
CCH:
Solved by removing obsolete DOS functions


-HB_FUN_NDPTYPE
CCH:
Solved by removing obsolete DOS functions


-HB_FUN_SOUND
CCH:
Solved by removing obsolete DOS functions


-HB_FUN_ROMDATE
CCH:
Solved by removing obsolete DOS functions


-HB_FUN_ENCRYPT
Solved by Michael Hagl :

try:
Function xEncrypt(cStr,cKey)
Return cStr ^^ cKey
//Function is from Klas Engwall ?
// but there is a Problem, when cKey is only @
Function Encrypt(cString,cKey)
local i,cNewString := ""
i := int((len(cString)/len(cKey))+1)
cKey := replicate(cKey,i)
for i := 1 to len(cString)
cNewString += chr(numxor(asc(substr(cString,i,1)),;
asc(substr(cKey,i,1))+128))
next
Return cNewString

-HB_FUN_SEED
CCH :
Made this redundant using Phil Barnet Random()

-HB_FUN_ALLKEY
CCH:
Replaced with INKEY(0)


Phew, having got rid of the unresolved external references, FAS.EXE is now a text-based Win32 Apps ! Now to test... Results in the next article.

-HB_FUN_DECRYPT

-HB_FUN_CATERR
CCH: Remove redundant PRG containing CATERR function call

-HB_FUN_MYHELP
CCH: Changed MyQuery() to Superlib Smalls()

-HB_FUN_MYQUERY
CCH: Changed MyQuery() to Superlib Smalls()

-HB_FUN_STRTOKEN

-HB_FUN_ISPRN
CCH/David Smith:
FUNCTION ISPRN(nPort)
LOCAL cPort:="LPT"+str(nPort,1)+":"
RETURN ISPRINTER(PrinterPortToName(cPort))


More to come...

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.