Delphi -> Kylix

We're starting a project which will probably have to use Linux. This is because it is a safety-related system and XP is not allowed to be used for such systems. Linux is because it can be formally proved to be safe.

Now, that handily means that we can use Kylix to do the development. Having had something like 8 years of experience with Delphi, I have had none with Kylix beyond getting it out of the box, running it, and doing a "hello world" program.

Can anybody with *experience* please list the pitfalls and differences between Delphi and Kylix? Possible issues I can think of right now that we will need: multithreading, multiple serial ports (ie more than COM1 and COM2, an expansion serial card or two), a parallel IO card (eg ICP/DAS or MOXA), TCP/IP networking (TServerSocket and TClientSocket would be VERY useful...), and event logging (equivalent to NT event log).

Superfluous rubbish like COM, SOAP, etc are most definitely NOT required. Simple, fast, proven, raw socket comms are all that is needed, something which I have a large amount of experience in anyway.

Thanks

Geoff M.
LVL 8
gmayoAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

jcondeCommented:
This is just my personal opinion so please listen to other expert opinions.

First of all ... I have heard the rumor Borland won't be supporting the CLX framework anymore so if its true, you probably might want to stay away from kylix.

Second ... Kylix, unlike delphi is very slow to develope with !! ... I have found tons of bugs in V3 and I personally don't like it.  What I have done in the past is develope my app in Delphi using the CLX framework and then "make" it compile using kylix.

Third ... I think Qt is light-years ahead of kylix in terms of stability, it has excellent support and its a very easy GUI framework to learn.  If I had to make the desision between Kylix or Qt, I would definitely choose Qt assuming my app was to be developed for Linux only.

Also, Kylix is based on very old versions of Qt ... I beleive its 2.X and the current version is 3.2 !!

I have a theory that most open-source developers in the Win32 platform use Delphi .... Unfortunatley that does not apply in Linux where 98% of everything is either C or C++.

Did I mention Kylix apps can't be compiled statically and they require tons of shared libraries to be installed ??

I know my post doesn't remotely answer your question, but for what its worth, I suggest you start off with the right foot in place and consider Qt or GTK instead of Kylix.

Regarding Qt, it has excellent TCP/IP networking, thread support and many other nice features.  Regarding the parallel IO card or multiple serial ports ... that's quite simple under Linux because unlike Window, Linux treats everything as files.
0
EdHillmannCommented:
I haven't done it myself, but this was my understanding when it came to Delphi/Kylix applications.

If your applications do not contain low-level API calls, then you could take the source from Delphi and compile it in Kylix.  Although, you need to be sure that the Delphi application uses CLX components and not VCL components.  I'm guessing that your application is not visual (?), so this may not be a problem.  Essentially, Delphi contains VCL (which will most likely remain tailored to Win32 libraries) and CLX components.  Kylix only contains CLX components.  And Borland has always stressed that any application that is to be cross platform should be written to the CLX components.  At least at the onset, there was no intention by Borland in making native VCL applications cross-platform.

If you're application does contain native API calls, then the recommended approach is as follows:

Define your own classes which wrap these native calls.  Your application should uses these classes when accessing the data managed by the native APIS.  Then, you would need to have two implementation of these classes: one for Win32, one for Linux.  When the application compiles, you can use ifdef statements to ensure that the appropriate class is compiled/used (I believe).

As far as your specific examples, I think that as long as you're using TThread and not making any API calls, you should be OK (I'm not 100% confident on this).  And I'm not knowledgeable enough about the serial ports or TCP/IP classes to provide any guidance. Sorry!
0
DeerBearCommented:
Hi Geoff,

Beware of Indy <g>.

It's been having some problems to what I remember with Kylix, thus pay attention.

I strongly doubt you'll find TServerSocket on Kylix.

As to COM ports, they assume the form TTYS0/1/N and you access them as files, in the
/dev mount point.

If you need more input, just whistle here :-)

HTH,

Andrew
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Delphi

From novice to tech pro — start learning today.