Trustware License IBO Home
 
Beta Notes
Testing reports | Other notes

Code
FILE AUTHOR DATE DESCRIPTION
Preparing Beta 006 (2) Helen Borrie 12-FEB-2005 After several months in serious crocodile territory, I've had a fairly fatal system crash on my main Linux box ("coolduck") and lost all my test stuff for Beta 006. That's not as bad as it seems: it made me pay attention to the disaster area that has been my broken Kylix 3 since October. I had a mish-mash there and couldn't get Andy's stuff to install in Mdk 9.1 (not Andy's fault; I tried to fix up QT.pas with a patch and had horrible results).

Now, with a new CPU, new m/board and new HDD, I've started afresh, now with Mdk 10 Community (nice!!) and a fresh install of K3Pro. I'm sorting through all the bits in the code tree on the Win32 dev machine and will get a successful install or die trying.

I'm still awaiting an answer from Jason about snatching 4.4 as the release number for the Beta 006 cycle. In the meantime, I'm thinking of putting up an Alpha 006 kit that we can play with until Jason has more time available. It's a pity to let the steam go, after all Andy's work...More news as it comes to hand.

Preparing Beta 006 (1) Helen Borrie 31-DEC-2004 Andrew's observations (see right --->) about the WideString/AnsiString conflict help to explain a few things! I think I've broken QT.pas unnecessarily on my setup. Oh dear.

I don't think there's any option now but to split the CLX stuff right away from Jason's main VCL base. We can keep the non-visual stuff intact -- albeit with a gazillion IFDEFs - but it's just futile to suppose that the QT controls could keep in synch with Jason's complex Win32 controls. It was already pretty obvious that it would be close to impossible to synch the CLX and VCL visual stuff; and that it wouldn't ever be possible to write cross-platform apps transparently.

I can't think of an immediate problem with Andy's suggestions re splitting the code. The console-only packages could be made cross-platform with cond. defs if Jason chose at some point to distribute a console-only package for Windows as well.

I've proposed the idea of our slotting the new IBO-K development stuff into the version 4.4 space. The idea behind this is that, given the new VCL release is 4.5, we can continue to develop the IBO-K conversion in a space that's "v.4.3 aiming at 4.5". Let's wait to see what Jason's feelings are on these issues. Once we're decided, I'll set up a readme regarding the naming schemes.

Visual Controls! Andrew Haines 25-SEP-2004 Andy gets some visual controls working and makes some property editors available. Stellar!
Initial IBO 4.3Aa conversion Andrew Haines 15-SEP-2004 Shift your eyes right ---> Andy's work with the IBO 4.3Aa conversion will be documented in this column for some weeks. Watch the ibo-k list for downloads.
(And Happy Birthday Jason!)

SEPT-2004 It's been a long gap here where everyone is wondering what's happening about Kylix. Well, we are no more the wiser! However, Andy Haines has started converting the existing Beta 005 sources to bring them up to date with IBO 4.3Aa, which is going to give IBO-K the various pieces of support for Firebird 1.5, including Carlos Cantu's patch for SELECT FIRST and the changes Jason did to make TIB_Connection aware that it is connecting to Firebird 1.5. When the sources are tidied up some, we will put up a Beta 006 kit.

NOTE that, with Beta 006, you should disable the OldParameterOrdering parameter in firebird.conf.

Fresh ConsoleStubs.pas patch Jeremy Blythe 05-MAY-2003 Newly-patched version of ConsoleStubs.pas, fixing overlooked reference to TColor in the EditingColor (etc.) properties of TIB_Session, discovered today by Tony Caduto. Locate on the source server in ../beta005/patches/console_only/jeremy/20030505/
Patch for FIRST SKIP Carlos H. Cantu 01-FEB-2003 Added 2 files patched to make IBO work correct with SQLs containing 'SELECT FIRST X' having X as parameter.
It is the result of a manual merge of the available Kylix versions with the lastest IBO source. Feel free to add it to the current package (beta 005).
Console-only stuff Oliver Sturm 12-DEC-2002 I was fumbling around with the console only stuff and I reckoned it may be a fine thing to have a patch for it instead of the changed source files... I have uploaded the file [to the 005 patches folder] it's only 4.6k.
To use it, just enter the directory where you have the ibo sources (as freshly unpacked from beta 005) and go
patch -p1 < ../patch-ibo-console-only
(insert the correct path to the patch file, of course).
I find this simpler when I have to reinstall stuff and it's also more fault tolerant... the patch command will automatically detect when changes are already in the sources and it will work when the original sources have been changed a little already.
Qt-free TIBODataset Jeremy Blythe 5-NOV-2002 I have had a few requests for TDataset support in the Non-X patched version of the Kylix code.
I have made a minor change to IBODataset.pas to provide this support.
ConsoleStubs unit Jeremy Blythe 12-JUL-2002 Here is the ConsoleStubs unit and all the units which I have changed to include this.
This should be quite easy to merge in since I have only changed the uses clauses in these files and the initialization section in IB_Components

IMPORTANT

  1. I only have stubs in the ConsoleStubs unit. So if any of the code in that unit was called (i.e. an attempt to display a form) then there would be errors. This needs more work.
  2. I've not done a lot of testing at this stage.
<<ConsoleStubs.pas>>  <<IB_Components.pas>>  <<IB_Profiler.pas>>  <<IB_Schema.pas>>  <<IB_Session.pas>>  <<IB_SessionProps.pas>>  <<IB_Monitor.pas>> <<IB_Utils.pas>> 

Later note (11-OCT-2002) :: I'm running this on our own version of Linux which is very small and has very little installed on it - no X libraries. It works very well, however my console code needs some improvement so if you use this I would treat it as ALPHA code at the moment.
1. Add the directive globally by going to Project|Options|Directoies/Conditionals and add IBO_CONSOLE to the Conditional defines list.
2. Do a complete build, making sure that the IBO sources are built as well.
At the moment, the TDataset stuff can't be built without X dependencies..

beta-005 Helen 6-JUL-2002 If you already have the previous kits, nothing much here will be different. This kit is a consolidation and tidy-up for Jason to test. You are all welcome to start out with this kit fresh and feed back on any deficiencies you encounter. I hope to have a small test-bed ready for the non-visual stuff in a week or two. I'm in the process of relocating so, apologies if things have been a bit quiet. I'm persevering in the background here with a data-aware edit control having the major features of IB_Edit in Delphi. I'm encountering some casting problems which I hope to have solved soon after my systems are hooked up in the new place. If you don't have Jon Shemitz' book Kylix: the Professional Developer's Guide and Reference, I do highly recommend it.
beta-004a and beta-004b Helen 16-JUN-2002 Apologies, I left a couple of files out of the beta004 patch (IB_Utils.pas and IBD_Login.pas). ibo4beta-004a contains the entire patch, *including* these files; ibo4beta-004b contains just those files, for those who already downloaded ibo4beta-004.
Second patch Helen Borrie 9-JUN-2002 This little tarball contains a couple of dpk's which may have been misnamed or incomplete in the original tarball.
First patch Lester Caine 06-JUN-2002 This patch contains Lester's source changes for the Tools packages ibo40trt.dpk and ibo40tdt, modified slightly to use the IB_Session.Clock.Tickcount instead of the GetTickCount call to Indy. Just patch these files straight in on top of the beta001 sources, and open and compile the two packages; then install the components.
IBO-Kylix initial beta Helen Borrie 05-JUN-2002 The main tarball contains the entire source for IBO4. Included are package sources for the following packages:
  • ibo40crt.dpk - Core run-time
  • ibo40cdt.dpk - Core design-time
  • ibo40adt.dpk - native IBO data access components
  • ibo40xrt - TDataset-compatible run-time
  • ibo40xdt - TDataset-compatible data access components
  • ibo40wrt - native IBO web run-time
  • ibo40wdt - native IBO web components
There are no fancy property editors - only the default ones from the designers. They are amazingly similar to the Delphi ones.

On the whole, I have simply IFDEF'd out all code referencing the Windows API via windows.pas. However, in order to get TIB_Session working, I have added an internal Clock component to IB_Session, a descendant of the widget TTimer, which just ticks away there until it blows out. The clock has a ResetClock method which can be called, although I haven't called it anywhere. For now, I don't know what will happen when Longword blows out.

Anywhere the Delphi 6 code calls GetTickCount, get a reference to the IB_Session and get the tickcount like this:

aTickcount := SomeComponent.IB_Session.Clock.TickCount;
The definition is in the unit IB_XUtils.pas. Have a look there - I have a couple of other workaround definitions in there as well.

Here is my setup - I have all defaults for both Firebird and Kylix2 Enterprise. Lester may have already bumped into some kind of fork or anomaly regarding a default K2 installation in a non-Red Hat distribution...but let's hope you don't have to do too much shifting around.

Kylix:

/usr/local/kylix2

NB: if you don't have the Property Editors patch from the Kylix registered users' download area, get it from our ibok-beta download area.

DCP output directory: /usr/local/kylix2/lib/
BPL output directory: /usr/local/kylix2/bin/

IBO source: /usr/local/kylix2/3p/ibo4beta/

Firebird:
I have Firebird 1.0 superserver installed in
/opt/interbase all as per the rpm installation.

libgds.so.0 and the symlink libgds.so are in /usr/lib.

Get testing and let's see where we go from here.

Test reports
VERSIONS TESTER DATE REPORT
Kylix ?
Firebird 1.5 Classic
Tony Caduto 05-MAY-2003 I ported my IM server to IBO Kylix in about 5 minutes but but I got the following error:
bash-2.05b# ./daemon bash-2.05b# Exception EReadError in module daemon at 08070B0A. Error reading IB_Session1.EditingColor: Invalid property value.

This is with the console only patch and IBO_CONSOLE in the conditional defines.
I removed the session component from my datamodule and all worked just fine.
NB patch for this problem, above, from Jeremy Blythe.
See my message in the list archive (Subject: [ibo-kylix] IBO Kylix and FB 1.5) if you want to test with my IM client.
Kylix 3 Carlos Cantu 04-APR-2003 CGI developed in Kylix 3 running the entire site of www.firebase.com.br. No problems so far.
NB :: Calculated fields not working properly in IBO-K.
Kylix 3 Pro Oliver Sturm 2-APR-2003 I'm working on a server-side project with Kylix 3 Pro and IBO and I just haven't found any problems so far. I'm not interested in visual control support at the moment (I don't do client apps for Linux (yet)), so I haven't tested that.
Kylix 3 Pro Martijn Tonies 02-APR-2003 Jeremy's stubs really seem to work - as I'm using IBO-Kylix in a shared object, which cannot have any QT, apparently :) ... No problems so far.
Kylix 1 DD
Debian
Oliver Sturm 10-SEP-2002 Just wanted to report success... Still waiting for my Kylix 3, I tried to install things in Kylix 1 and it works! I had to manually link some .so files into the Kylix bin dir, but everything else was just fine. This is on a Debian (mostly sid) system using Kylix 1.0 Desktop Developer.

That wasn't the native stuff only, but also TIBOTable and TIBOQuery. I tried around with a normal TDBGrid and a TDBNavigator and everything seemed normal. Editing is fine (both with a table and a live query), posting too. Great work so far!

Kylix 2 Guido Salvestroni 08-SEP-2002 We're testing IBO Kylix beta 5 on Kylix 2 - great performances shown on our first test applications.
Kylix 2 Pro Rob Segerink 08-JUN-2002 installation in Kylix 2 pro works perfect. There is only a small problem with the demos, they are build with runtime packages and therefore they complain about some lost packages which are only shipped with Kylix 2 enterprise. So build them without packages and everything works fine!

Other notes
HEADLINE AUTHOR DATE DESCRIPTION
Broken pipe error Jeremy 2-APR-2003 I am getting the occasional strange error (which ibphoenix are investigating for me) - but I will put it to the group as well. I am occasionally getting these errors:
ISC ERROR CODE:335544721
ISC ERROR MESSAGE: Unable to complete network request to host "daisy". Error writing data to the connection. Broken pipe
It's the "Broken pipe" which is baffling at the moment.
I'm also getting. 335544648 with the message "Unassigned code" but according to the documentation this error code means "Connection lost to pipe server"
I can't say for sure if this is anything to do with IBO-Kylix at the moment but it is only showing up on my Linux machines.

Other than this IBO-Kylix has been great. Unfortunately I will not be testing anything visual as we have no need for it - and don't use it under windows either!

Kylix 3 changes... Jeremy 4-FEB-2003 Baseclx has gone in Kylix 3. Take it out of the 'Requires' list and re-compile.
Eliminating Qt.pas Jeremy Blythe 28-OCT-2002 The console support in Kylix could be better but if you want to use Kylix to make the equivalent of a Windows Service it's very good. We are doing just that, using cross-platform components so we can run the services on Windows or Linux. The IBO components are very good when used in this type of program so that would explain the demand for a 'Non X' version.
URL for Kylix 3 OE download Norman Dunbar 25-SEP-2002 Kylix3 open edition (90 MB download) plus a service pack (256 KB) now available here.
Beware of the bit that says 'its a 300MB download' because it isn't - mind you, 90MB is still quite a biggy.
Eliminating Qt.pas Jeremy Blythe 14-JUN-2002 I've just made a console app with an IB_connection and an IB_Cursor, nothing else. If you use ldd you can see it uses: libX11.so.6. It doesn't use the qt library though which is a good thing.
Eliminating Qt.pas Stephan Marais 08-JUN-2002 You can develop a TDataset descendant without Qt. All you need is:
:: DB
:: Classes
:: FMTBcd (if you need to support FMTBcd)
:: Variants (D6 & kylix)

I have converted TDataSet descendants for Sybase to Kylix, and it was trial and error to get the correct units. When I did the conversion, DB.pas and Classes.pas worked as it did with D5/D6. The only new unit I had to add was Variants, but that was also for D6. At one place I had to use Libc instead of SysUtils.

The best is to compile your code, if it complains about methods not defined, search the Kylix source for the correct unit.


Visual Controls Diary
(Andrew Haines)
2004-12-30 :: After using the CLX port I have found, among other things:
  • I can not switch between graphical and console development without removing packages (Kylix complains). CLX controls are WideString (courtesy of QT) where IBO is mostly AnsiString.
  • The IBO 4.3Aa clx units have a couple of dependencies that IBO Win32 doesn't have (both libraries from (from CVS on Sourceforge):
    • JVCL 3
    • SynEdit (optional)

    Here are my thoughts on how to proceed:
    1. create 2 branches of the code base for a) console and b) CLX.

      Requirements:

      1. would include the IBO_CONSOLE patch.
      2. new tabs on the pallet with "(Console)" as part of the name for each package.
      3. rename each package to include an identifier (i.e. "C" for console).
      4. would use property editors from the CLX controls (if able).
    2. recode where required to use WideString rather than AnsiString.

      Requirements:

      1. rename each package to include an identifier (i.e. "Q" for QT, similar to Borland's naming scheme).
      2. leave the non-graphical components with the original file name.

  • This would have the effect of widening the gap between the Windows and Linux sources when it comes to porting projects and maintaining the IBO code base.
  • For the non-graphical component files, we could use INC files at the top end so we would only have to maintain 1 file rather than 2.
2004-12-03 :: I took the files in the IBO-Kylix Files area down since the package was incomplete (missing some files) and just have not got a new one done up.
2004-10-07 :: I have uploaded my current development tree. See the README.txt file for details. This HTML file summarizes the current status.

  • Not touched :: IB_CGrid = TIB_ControlGrid, all of the WebSnap packages and units, TIB_LookupList, TIB_LookupCombo, TIB_RichEdit, TIB_DateTimePicker, FTS, RPL
  • Controls that don't work right :: TIB_AutoLabel, TIB_Label, TIB_CustomLabel, TDatePick, TIB_Date, TIB_BrowseDialog, TIB_Ledger

Have fun testing. Usage feedback appreciated.
2004-10-07 :: Helen Borrie wrote: 'My current impression is that we'd need to maintain >separate CLX and VCL code for controls to avoid "IFDEF-hell".'

I've never made so many IFDEFs in a project!!

A wrapper for TRegIniFile would make most of the Form&Dialog issues go away.

I forget where I read it but someone had mentioned a couple key points that would be good to ease the porting process: VK_* constant mapping to Key_* constants, the Registry support by way of TRegIniFile, and a few other constant conversion routines.

In porting IBO, I agree that these functions are needed. Maybe I'll start on a couple of them and include them in the source files. I did a quick Google search but did not find anything other than articles describing the need.

2004-10-02 :: Now, I have an issue when changing the DataSource property of the grid. When ever I change it I get an "Access Violation at address 47F818E8 access of address 00000000". It also has the effect of freezing Kylix -- consistently across restarts of Kylix.

I'm trying to follow the flow but keep getting lost.

2004-10-01 :: Things are looking alright so far...
  • TIB_Text has basic support (no extra graphics. i.e. Ellipse).
  • TIB_Edit has basic support (no extra graphics).
  • TIB_ComboBox has basic support. This one seems to put the dataset into an update mode when used. It looks like it is checking the contents of the Items list and if it does not find a match then switch to edit mode. Of course this is only theory at this point as it has not been fully tested yet.
    • I am using Firebird 1.5.1 and employee.fdb to test with.
    • My testing has been done with an unordered item list where all values in the database were in the Items list.
    • Using an ordered Items list has no effect.
    • In the test program, only entries with "USA" do not go into edit mode.
  • TIB_ListBox seems to work OK.
  • TIB_Date is pending subclassing of JvCLX controls.
  • I have abandoned the AutoLabel stuff for now. There is an AV whenever I use it. This also applies to TIB_CustomLabel and TIB_Label.
  • TDatePick has been abandoned.
  • TIB_ControlGrid is most likely not going to happen (even Borland did not provide one with K3).
  • TIB_DateTimePicker has now matching component in K3.
  • K3 has no TRichEdit on which to base TIB_RichEdit.
    How about a TIB_TextViewer to replace TIB_RichEdit? Some of the JvCLX components could be subclassed to make them IBO-aware.
  • TXSpinEdit is not needed, see TSpinEdit in K3.

I have used SynEdit in some of the IBF_ forms. The original files using TMemo are in the "original" directory. I enabled the "Interbase 6" setting for the SQL highlighter. I have not got around to testing this change yet.

I managed to get the IBD_Credits form to work as desired. It is now an ellipse with custom borders. It responds to a mouse click, ESC or ENTER to close the form. This took some work as the examples I had for K2 had no effect in K3.

I am presently going over TIB_CustomGrid. Once that is done and working, the remaining IBF_ forms can be completed.

In working on the conversion of TIB_CustomGrid I noticed the FIB_DataLink was created but not freed when the grid was destroyed. Is there a reason for this?
{Later --} I have finally got the TIB_Grid to show up on screen without an A/V.

  • Turned out the create sequence had to have the DataLink created before calling the grid's inherited.Create. The problem locked Kylix up tight - some kind of endless loop consuming 100% CPU.
  • Also, the TCustomGrid.Paint method calls DrawCell which in turn used a TIB_Column without first validating the TIB_Column, causing a non-fatal A/V (didn't lock or crash Kylix).

Work is progressing slowly. The drawing has to be reworked. I am comparing how Borland did their stuff with the IBO way. TIB_CursorGrid looks fine and so does TIB_StatementGrid. So now to flesh out TIB_Grid. Stay tuned...

2004-09-26 :: My worst problem right now is the the GetIBControlColumn function in IBC_Label.pas. It uses windows messaging (CM_GETDATALINK) to fetch a reference to the control's DataLink property. It is used by the AutoLabel and by the grids (or at least the same code is).

I am looking through the CLX and VCL data control source to see what Borland did since they also used this message in the VCL. I'll post a status report when I get some more stuff working and upload the changes. Any changes are appreciated.

I will say that it is nice to have some of the property editors working.

2004-09-25 :: IBO-K-4.3Aa.tar.gz, includes Visual Controls, Forms, Dialogs, and Editors.

I've done the "grunt work" so far, just basic functionality on the controls. No grids yet (except TIB_StatementGrid, TIB_CursorGrid) and any forms, dialogs, property editors that relied on TIB_Grid have not yet been done. I am hoping that someone with some CLX component writing experience is lurking in this group somewhere and can assist with the finer parts.

This is my the first attempt at making CLX components, so I am having to wrap my head around both the Windows controls and CLX controls and make sense of each event/function/procedure/property and it is taking some time. I've been going over the classes for TIB_CustomGrid, TCustomGrid, and TCustomDBGrid to see how they each work (129 pages so far). That's 129 pages so far (Int/Imp): TCustomGrid = 8/55, TCustomDBGrid=4/38, TIB_CustomGrid=24/?.

Here are the files that I have not yet converted:

  • from ibo40vrt.dpk :: DatePick, IB_ArrayGrid, IB_CGrid, IB_Grid, IB_Ledger
  • from ibo40frt :: IBF_Browse, IBF_DataDump, IBF_Lookup, IBF_Query, IBF_USearch
  • from ibo40edt :: IB_LedgerEditor
The README.txt file contains a summary of each class and has a few comments as to my use/testing of these classes. Much of the custom painting still needs to be done, e.g. TIB_Edit has a button that may be used - this is not yet done.
2004-09-16 :: The stuff posted yesterday was just a "rough draft" with absolutely no testing. I encountered
  • errors with missing/misnamed files (now adjusted)
  • and yes, I did miss copying the MaxWord line.
  • I also found that someone decided to use different constants for TModalResult!! They went so far as to comment out the good known values on each line, e.g. they changed
    . idcancel: //mrcancel:
    and this was the cause of most of the errors in the source code.
  • I had to add a couple more IFDEFs for Windows only functions.
  • I removed some old source files in the tar.gz file (*.INT,*.IMP,*.~*) that are no longer being used.
  • this version is set with IBO_CONSOLE defined in all the packages
OK, this time it looks like it works (thanks for the help Carlos)
For those using the Unofficial Visual CLX patches Kylix may want to use both pvisualclx and visualclx in ibo40xdt.dpk. Carlos found that commenting out the following line in IB_DatasetReg.pas gets around the issue:
// DesignIntf, DesignMenus, DesignEditors, 
My modified units for Apache2 are also included (IBO_CGIApp, IBO_WebBroker, IBO_ApacheTwoApp) with minor modifications to the original files to include the ConsoleStubs unit thus avoiding the use of QT and X.
2004-09-15 :: I posted my initial work on converting the beta005 kit to IBO4.3A, to get the parameter ordering support for Firebird 1.5. (IBO-k-43Aa.zip)

The time-consuming part was getting the older partitioned source units (.int, .imp, etc.) into the larger units that Jason evolved in v.4.3. I did it all by hand, no diffs, and I have not yet tested the conversion. I did it all by hand (no diffs on this one). I figure copying the files over a beta 5 directory should work OK.

  • No package files are included.
  • Jeremy's ConsoleStubs is included.
  • a lot of IFDEFs to handle the console type projects.
  • I also uploaded my modified Apache 2 units that make use of the console and do not require QT. See the file: IBO-k-Apache2.zip