Accounting
Software
Delphi components
    TurboSync
        Product downloads
        Demo conduits
        Known bugs
        Wishlist
        History
        FAQs
    Diagramming
Contact us



Home page

TurboSync - Frequently Asked Questions

Look here first if you have any questions about using TurboSync. If the answer isn't here then feel free to contact support, even if you only have the trial version.

1.    How do I debug a conduit?

You have two choices.
  • Use the Delphi debugger. You need to close down HotSync and set up your conduit with CondCfg. In the Delphi IDE go to Run|Parameters and select HotSync.exe as the Host Application. Now hitting F9 will run HotSync.exe, and when the synchronisation is started you will be able to set breakpoints, etc as usual. Remember to exit HotSync to get out of the Delphi debugging mode.
  • Use CodeSite from Raize Software. This tool is the business, and we highly recommend it.


2.    I get a "Lines too long" error or an "error reading the xxx.dcu file" when trying to install the trial version of TurboSync.

You are probably using an old version of TurboSync. This problem was fixed some time ago. You should download the latest version and follow the installation instructions


3.    What versions of Delphi can I use?

We support Delphi 5 and onwards. There is a Delphi 4 trial version available, but we don't test it extensively. The source code compiles in Delphi 4 to 7, but not earlier 32-bit versions, as we use classes introduced in Delphi 4.


4.    What versions of Palm OS are supported?

Palm OS 3.0 and above. HotSync manager 2.0 and above (I think). The upgrade is free from Palm.


5.    What's a conduit, then? Do I need to write one?

A conduit is a dll that is called during the HotSync process. It manages data transfer between a Palm and a PC. You only need to write one if you want to synchronise a PC application with a Palm application. You do not need one just to backup Palm databases onto a PC (this happens by default).


6.    What documentation is available on conduit building?

You should get the Conduit Development Kit from Palm. However, DO NOT install and use CDK4 for VC++ with service pack 3 unless you actually have VC++ with service pack 3 installed. It causes incompatibilities with other Microsoft dlls that result in conduit problems.

There were 2 good articles in Delphi Informant magazine about using EHAND Connect. A lot of the information is applicable to all conduit development, so they're worth reading.


7.    Who's your competition, and are they any good?

So far as I'm aware, the only other ways to write conduits with Delphi are :

EHAND Connect - an ActiveX control that is very solid.
ConduitDB - a BDE based solution that is very simple to use.
Delphi Conduit Library - a set of freeware VCL components similar to TurboSync, developed by Paul Gilbert.

All of these are good solutions, and may well be better suited to your needs. Check them out and see what you think.

There were 2 good articles in Delphi Informant magazine about using EHAND Connect. A lot of the information is applicable to all conduit development, so they're worth reading.


8.    Can I use TurboSync with databases from Satellite Forms, HanDBase, JFile, MobileDB etc?

Yes. But bear in mind that you need to know how the data is stored in the Palm database. Satellite Forms document their Enterprise version database structure, but not the Standard version. Most third-party database tools use different field formats for certain sorts of data. You may need to use several TurboSync fields to fake the custom format, or access the data as a blob and do your own conversion.

Contact us if you're having trouble, and we'll try and point you in the right direction. You can also have a look at the raw record data using the TTabdConduitDB.DebugRawRecAsStr method.

Version 2 will support at least some third-party databases. HanDBase will be one of them because they've been extremely helpful supplying the information and assistance we need.


9.    Can I sync over the Web using TurboSync?

Yes. Asta Technologies have a demo of a thin client syncing over the web using TurboSync. They're currently (August 2000) working on a wireless solution for those lucky enough to have a Palm VII. Of course, you can use MIDAS or some other equivalent as well.


10.    How many databases can I open in a conduit?

On the Palm, as many as you like, but only one at a time. This is a limitation imposed by Palm.

On the desktop you can do what you like. Open local files, access servers over a LAN or the internet, whatever you want.


11.    Can several conduits synchronise the same Palm databases?

Yes. You can open whatever databases on the Palm you like. So you could synchronise the Palm address book with Outlook, Lotus Notes and Star Office. Of course, the order you do in that might be important.


12.    How do I set up a conduit?

You can add new conduits using the CondCfg utility in the CDK. The CDK also documents an InstallShield script for adding a conduit to the HotSync manager.


13.    What's the CDK, and do I need it?

The Conduit Development Kit is indispensable. Besides useful utilities like CondCfg, it goes into great detail on how to write conduits and documents all the API calls. You DEFINITELY need this.


14.    What's POSE and do I need it?

The PalmOS Emulator is a Palm emulator that runs on a PC. It uses ROM images from actual Palm devices, so it is an excellent testing tool. It can be used to test conduits, although it can behave a bit weirdly if there is an error in your code. This is much better than killing a database on your real Palm, like I did.

For testing against OS 5 and up devices, you can also use the PalmOS Simulator.


15.    What's a creator ID, and do I need one?

A creator ID is a unique identifier issued by Palm that identifies each Palm application. For reasons best known to themselves, Palm decided that each conduit must be associated with a creator ID. An application with that creator ID must exist on the Palm device during a HotSync or the conduit will not be called. You need to join the Palm OS Developer Program in order to register your creator IDs.

Just because a conduit is associated with a particular creator ID doesn't mean that you can only access data for that application. You can open any Palm database in any conduit.

So, do you need one? Maybe. If you need to guarantee that there is a creator ID that is not being used by another conduit, then you will need to create a small Palm application, register a creator ID, and install the application on the Palm devices you want to sync.

There are changes afoot for PalmOS 6, where you will be able to bypass this requirement somewhat.

16.    What files need to be present on the PC for the TurboSync to work?

The Palm Desktop should have been installed, even if it isn't used. That way you get the HotSync manager and all the required dlls.

The actual dlls TurboSync tries to load are :

CondMgr.dll
PalmCmn.dll
HsLog20.dll
Cmds21.dll
Sync20.dll

TurboSync looks for them in the directory specified in the registry key

HKEY_CURRENT_USER\Software\U.S. Robotics\Pilot Desktop\Core\HotSyncPath

or if that entry doesn't exist, on the system path.

If you have a trial version, Delphi needs to be running during a HotSync.

The CDK is not required.


17.    Can I program the Palm in Delphi/Pascal?

Yes! Check out Pocket Studio. This is our preferred Palm programming tool. It isn't Delphi, by any means, but it's the best API level tool out there.


18.    When I post a record to the Palm database, it becomes the last record. Why?

Unfortunately that isn't something we have any control over. Palm suggest that you don't rely on this always happening either, as they might change the behaviour in future versions. You can call your application after the HotSync and get it to resort records, though.


19.    How many records can I transfer in a HotSync using TurboSync?

As many as you like. Bear in mind that HotSyncing usually happens using a serial port, so it may take some time for large numbers of records to be transferred. To speed this up, make sure you have the latest OS on your Palm, and the latest Palm Desktop and HotSync Manager software on your PC.

Writing to the Palm is slower than reading from it, and I have heard of one guy who had to write thousands of small records, and changed his database so that there were relatively few very large records, which each held many smaller ones. This sped up the synchronisation considerably, apparently.


20.    What is the structure of the Palm Address Book database?

Very complicated. One of the demo programs shows how to read data from the address book database.

Database name : AddressDB (note that this is case-sensitive)

Fields :
Options   pftLongint
Flags     pftLongint
Filler    pftByte
Name      pftString
FirstName pftString
Company   pftString
Phone1    pftString
Phone2    pftString
Phone3    pftString
Phone4    pftString
Phone5    pftString
Address   pftString
City      pftString
State     pftString
Postcode  pftString
Country   pftString
Title     pftString
Custom1   pftString
Custom2   pftString
Custom3   pftString
Custom4   pftString
Notes     pftString

The Flags field is used to determine if there is any content in the other fields. If the corresponding bit in Flags is 1, then the field is used. The first 20 bits are used, one for each of the fields after Flags. This is an example of how to pack the most information into a small database. Note too, that this means records will be different sizes, depending on the data in them.

The Options field stores the phone number types. The first 4 bits store the type of Phone1, and so on. The types are :

0 Work
1 Home
2 Fax
3 Other
4 Email
5 Main
6 Pager
7 Mobile

Bits 20-23 store which of the Phone fields is displayed in the contact list in the Address Book. Values are in the range 0 to 4.


21.    What is the structure of the Palm Date Book database?

Database name : DatebookDB (note that this is case-sensitive)

Fields :
StartTime        pftTime
EndTime          pftTime
Date             pftDate
Flags            pftByte
Reserved         pftByte
AlarmAdvanceTime pftByte      Flagged with bit 6
AlarmAdvanceUnit pftByte      Flagged with bit 6
RepeatType       pftByte      Flagged with bit 5
Reserved2        pftByte      Flagged with bit 5
RepeatEndDate    pftDate      Flagged with bit 5
RepeatFreq       pftByte      Flagged with bit 5
RepeatOn         pftByte      Flagged with bit 5
RepeatStartWeek  pftByte      Flagged with bit 5
Reserved3        pftByte      Flagged with bit 5
NumOfExceptions  pftSmallInt  Flagged with bit 3
Exception        array of pftDate  Exists if NumExceptions > 0
Description      pftString    Flagged with bit 2
Notes            pftString    Flagged with bit 4

The Flags field is used to determine if there is any content in the other fields. If the corresponding bit in Flags is 1, then the field is used.This is an example of how to pack the most information into a small database. Note too, that this means records will be different sizes, depending on the data in them.

The Exceptions field holds dates for which a repeating event does not apply. The number of them is given in the NumOfExceptions field. You must ensure that the number of dates and the value of NumOfExceptions match up if you are writing records back to the Palm database.

The RepeatOn field is only used if the RepeatType is weekly or monthly (ie 2 or 3). When RepeatType is weekly the byte represents the days of the week, where the bits are the individual days, Sunday = bit 0, Monday = bit 1 etc, so the values for individual days are Sunday = 1, Monday = 2, ..., Saturday = 64. These can be or'ed together to get multiple day repeats.

When RepeatType is monthly the byte represents the day of the month. The Pascal declaration of this type is

TDayOfMonth =
(dom1stSun, dom1stMon, dom1stTue, dom1stWen, dom1stThu, dom1stFri, dom1stSat,
 dom2ndSun, dom2ndMon, dom2ndTue, dom2ndWen, dom2ndThu, dom2ndFri, dom2ndSat,
 dom3rdSun, dom3rdMon, dom3rdTue, dom3rdWen, dom3rdThu, dom3rdFri, dom3rdSat,
 dom4thSun, dom4thMon, dom4thTue, dom4thWen, dom4thThu, dom4thFri, dom4thSat,
 domLastSun, domLastMon, domLastTue, domLastWen, domLastThu, domLastFri, domLastSat);

So a weekly repeat on Monday and Tuesday is 2 + 4 = 6, and a monthly repeat on the third Monday of the month is dom3rdMon = 15.


22.    What is the structure of the Palm Memo database?

Database name : MemoDB (note that this is case-sensitive)

Fields :
Notes pftString

That's it! One field per record.

23.    What is the structure of the Palm ToDo List database?

Database name : ToDoDB (note that this is case-sensitive)

Fields :
DueDate     pftDate
Completed   pftByte
Description pftString
Notes       pftString

The Completed field uses bits 0-6 to set the priority, and bit 7 to determine whether the item appears checked in the Palm application.


Last modified 28th February, 2007