View Issue Details

IDProjectCategoryView StatusLast Update
0002026Ham Radio DeluxeBugpublic2018-04-09 14:37
ReporterK7ZCZAssigned ToK7ZCZ 
Status closedResolutionfixed 
PlatformIntel i7-5960XOSWindows 10 Professional x64OS Version1703
Product Version 
Target VersionFixed in Version6.4.0.806 
Summary0002026: IOTA island ID ADIF import/export problems
DescriptionReported by G4NVB here:

The Logbook doesn't properly import the IOTA Island ID, an d there are issues with exporting the ID that make it incompatible with other ADIF software.
Steps To ReproduceCreate a new HRD Test Logbook.

Add a Log Entry (ALE) with an appropriate IOTA Island Station. To do this Click on the IOTA Tab within ALE and select a Ref: No. and Island.

Save the Log Entry.

Export an ADIF File of the Logbook (Logbook/File/Export/ADIF(ADI).

Enter File name.

In the “Fields to Export” Select ADIF + Ham Radio deluxe.

Click on Export (The ADIF file should now be saved).

Open the Exported ADIF File using “Notepad” or ADIFMaster. You should see a ‘Field’ named <app_hamradiodeluxe_island:n> with the name of the IOTA Island to the right.

Now delete the HRD Logbook (or create a new HRD Logbook).

Import the ADIF file that was previously Exported.

Click on the appropriate IOTA Log Entry in your HRD Logbook.

Click on the IOTA Tab within ALE.

Check to see if the Ref: No. is still shown and that the Island is no longer displayed.
TagsNo tags attached.
Sub-ModuleImport Export
Testing Beta Successful



2017-06-05 18:38


HRD Logbook IOTA Island ID.pdf (262,320 bytes)


2017-09-10 20:21

developer   ~0004158

The Logbook app maintains about 120 fields for each record. These fields are identified by an index -- a number that identifies the field uniquely within the row. For example, "mode" is field index #46.

Since there are about 120 fields (122, exactly), the indexes range from 0 to 121. If we want to do something to each field (like format it for export to an ADIF file) we simply loop over the fields from 0 to 121 (inclusive) and process each one.

This works great; the IOTA_ISLAND field is index number 113, falls inside that range, and it's fine.

Indexplicably, a handful of fields are outside of the numeric range [0..121], and aren't handled by such a simple loop. They're not handled by the ADIF Export code and the XML export code, alike -- which means this bug exists for XML imports and exports, too.

These fields have indexes like 8002 and 9001. The IOTA Name that's missing in this bug is 9004.

We can't simply loop over the values, because we'd be looping over several thousand values (from 122 to 7999; then from 8004 to 8999) that are unused.

To fix this issue safetly, I have to come to understand why this arrangement exists and circumvent it appropriately. It would make sense to fix the problem throughout the application. Otherwise, the fix for this specific issue would just add special cases to special cases, and that's why code starts to smell badly.


2017-09-10 20:31

developer   ~0004159

See the loop in ADIFCreate.cpp in the CADifCreate::AddEntry() method.

The loop in XMLSaveToFile.cpp is really in CLogbookQSORecordset::GetFieldsXML(), called from CXMLSaveToFile::Save()


2018-03-18 00:42

developer   ~0004508

A fix for this issue is staged on this shelf:


2018-03-22 17:20

developer   ~0004528

This checkin has been made to resovle this issue:

Note that it's possible to write an integer to identify a particular island. This is different than the AA-NNN code; just a plain number. The ADIF spec calls this field "IOTA_ISLAND_ID". That work is _not_ done with this checkin. This checkin _does_ enable the round-trip of the island name as an application-specific string.

A new item is opened to track the IOTA_ISLAND_ID field.


2018-04-04 03:35

viewer   ~0004658

Followed the steps to reproduce, and the exported contact was successfully imported into a new database with the correct IOTA field value of OC-006 and the app_hamradiodeluxe_island field value of Tasmania preserved and displayed correctly. Refer attachments. Fixed.

Test Mantis #0002026.ADI (1,465 bytes)
Test Mantis #0002026.jpg (34,898 bytes)
Test Mantis #0002026.jpg (34,898 bytes)

Issue History

Date Modified Username Field Change
2017-06-05 18:38 K7ZCZ New Issue
2017-06-05 18:38 K7ZCZ File Added: HRD Logbook IOTA Island ID.pdf
2017-06-05 19:07 WA9PIE Project 1 - Backlog => 3 - Current Dev List
2017-06-05 19:36 WA9PIE Target Version =>
2017-08-11 17:26 K7ZCZ Module (select) => Logbook
2017-08-11 17:26 K7ZCZ Sub-Module => Import Export
2017-08-11 17:26 K7ZCZ Testing => Alpha Failed
2017-08-16 15:51 WA9PIE Target Version =>
2017-08-17 12:50 WA9PIE Testing Alpha Failed => Not Started
2017-09-07 22:35 K7ZCZ Assigned To => K7ZCZ
2017-09-07 22:35 K7ZCZ Status new => assigned
2017-09-10 20:21 K7ZCZ Note Added: 0004158
2017-09-10 20:31 K7ZCZ Note Added: 0004159
2017-09-18 00:14 WA9PIE Project 3 - Current Dev List => 2 - Next Dev List (Holding Area)
2018-03-18 00:42 K7ZCZ Note Added: 0004508
2018-03-22 17:20 K7ZCZ Note Added: 0004528
2018-03-22 17:21 K7ZCZ Status assigned => resolved
2018-03-22 17:21 K7ZCZ Resolution open => fixed
2018-03-22 17:21 K7ZCZ Testing Not Started => Not Started
2018-04-02 10:44 K7ZCZ Project 2 - Next Dev List (Holding Area) => 3 - Current Dev List
2018-04-02 10:45 K7ZCZ Fixed in Version =>
2018-04-04 03:35 vk2byi File Added: Test Mantis #0002026.ADI
2018-04-04 03:35 vk2byi File Added: Test Mantis #0002026.jpg
2018-04-04 03:35 vk2byi Note Added: 0004658
2018-04-04 14:50 WA9PIE Status resolved => closed
2018-04-04 14:50 WA9PIE Testing Not Started => Beta Successful
2018-04-07 19:23 WA9PIE Project 3 - Current Dev List => Ham Radio Deluxe
2018-04-07 19:25 WA9PIE Fixed in Version =>
2018-04-09 14:37 WA9PIE Fixed in Version =>