Difference between revisions of "Indy with Lazarus"

From Lazarus wiki
Jump to navigationJump to search
(Initial version)
 
Line 43: Line 43:
 
* Fix bugs and enter them back into FPC or Indy RCS.
 
* Fix bugs and enter them back into FPC or Indy RCS.
  
=== problems ===
+
=== Problems ===
  
 
* Indy9 and Indy10 are mutually exclusive.
 
* Indy9 and Indy10 are mutually exclusive.
Line 50: Line 50:
 
* How to deploy? Parts belong to Lazarus, parts to FPC.
 
* How to deploy? Parts belong to Lazarus, parts to FPC.
 
* Lot of pkgs and demoes have paths in them. How to centrally fix them so that unexperienced users can build them?
 
* Lot of pkgs and demoes have paths in them. How to centrally fix them so that unexperienced users can build them?
 +
* Lazarus problems
 +
** Transparancy problems of icons
 +
** component tabs don't scroll, if you put a lot of components in one tab, they are not selectable. '''workaround implemented''': JP Mugaas separated them into Indy clients A-M and N-Z etc.

Revision as of 19:58, 27 December 2005

Indy for Lazarus

A new attempt at converting Indy is being undertaken by Marco van de Voort.

Currently a lot of Indy is working, but the trouble is that it needs a lot of Lazarus and FPC experience to set up everything correctly, and to solve encountered problems. End-user packaging of Indy is in its infancy.

This page is a first attempt at initial documenting for these issues for experienced users.

Hint: I'm not very interested in support the Kylix side of Indy. (anything that uses unit libc). I ported it only as step up to native Unix RTL using Indy apps.

Requirements

Currently, FPC 2.0.2 is very close to being able to use indy in all its facets. However patches are required to get servers working for Indy10, and also one for Indy9.

For Indy10, the tthread.destroy of Unix targets should look like this:

destructor TThread.Destroy;
begin
 if (FThreadID = GetCurrentThreadID) and not(FFreeOnTerminate)
     and not ffinished then    // if exited via threadfunc, this is probably ok. In case some idiotic tthread
                               // descendant modifies freeonterminate in a destroy method.
   raise EThreadDestroyCalled.Create('A thread cannot destroy itself except by setting FreeOnTerminate and leaving!');

Note the "and not ffinished" part.

For indy9, remove the overriding of tmemorystream.setsize method (Marcov: ???) to get telnet components working.

What works, what not

Indy9:

  • Windows should largely work. Lots of demoes ported.
  • Linux not or barely. No hope at non Linux/x86 (non-Kylix) targets.

Indy10: (Indy10ForFPC branch)

  • Windows and Unix: clients work, servers sometimes have problems. Haven't found a pattern in that yet.
  • The main work for native Unix RTL done. Clients seem to work with FreeBSD.

All: secure versions not tested yet.

Short term plans

  • Convert demoes to demonstrate/test workings.
  • Fix bugs and enter them back into FPC or Indy RCS.

Problems

  • Indy9 and Indy10 are mutually exclusive.
    • Indy9 is more used and proven in the industry.
    • Indy10 is more portable, and better long term. However uptake seems to be low.
  • How to deploy? Parts belong to Lazarus, parts to FPC.
  • Lot of pkgs and demoes have paths in them. How to centrally fix them so that unexperienced users can build them?
  • Lazarus problems
    • Transparancy problems of icons
    • component tabs don't scroll, if you put a lot of components in one tab, they are not selectable. workaround implemented: JP Mugaas separated them into Indy clients A-M and N-Z etc.