Data+Converter+Programming+Guide+ (C+++and+ NET) +v3 03
Data+Converter+Programming+Guide+ (C+++and+ NET) +v3 03
Version 3.03
Copyright © 2012~2016 CIPHERLAB CO., LTD.
All rights reserved
Due to continued product development this information may change without notice. The
information and intellectual property contained herein is confidential between CIPHERLAB
and the client and remains the exclusive property of CIPHERLAB CO., LTD. If you find
any problems in the documentation, please report them to us in writing. CIPHERLAB
does not warrant that this document is error-free.
For product consultancy and technical support, please contact your local sales
representative. Also, you may visit our web site for more information.
All brand, product and service, and trademark names are the property of their registered
owners.
The editorial use of these names is for identification as well as to the benefit of the
owners, with no intention of infringement.
2.4.4 ForgeAgProgDbfFileName................................................................................................ 72
2.4.5 Programming Tool ............................................................................................................ 72
2.4.6 WrongFormatAction ......................................................................................................... 73
2.5 Classes ...................................................................................................................................... 74
2.5.1 AGX .................................................................................................................................... 74
2.5.2 BasicProgDataFormat ...................................................................................................... 74
2.5.3 ConversionResult ............................................................................................................. 76
2.5.4 CProgDataFormat............................................................................................................. 77
2.5.5 Dbf2TxtConverter ............................................................................................................. 78
2.5.6 DelimiterChar ................................................................................................................... 80
2.5.7 ErrorRecord ...................................................................................................................... 80
2.5.8 ForgeAgProgDataFormat ................................................................................................. 81
2.5.9 GeneralInfo ....................................................................................................................... 83
2.5.10 RecordField .................................................................................................................... 83
2.5.11 Txt2DbfConverter ........................................................................................................... 84
2.5.12 Txt2PackedDbfConverter .............................................................................................. 86
2.6 Class Methods .......................................................................................................................... 90
2.6.1 AGX.Read .......................................................................................................................... 90
2.6.2 AGX.DetermineType ......................................................................................................... 91
2.6.3 DataFormat.AddRecordField (RecordField) .................................................................... 92
2.6.4 DataFormat.AddRecordField(List<RecordField>) .......................................................... 92
2.6.5 DataFormat.GetRecordFieldAt ........................................................................................ 93
2.6.6 DataFormat.ParseRecordFields ...................................................................................... 93
2.6.7 Dbf2TxtConverter.CancelAsync ....................................................................................... 94
2.6.8 Dbf2TxtConverter.Convert ............................................................................................... 94
2.6.9 Dbf2TxtConverter.Convert with Callback ........................................................................ 94
2.6.10 Dbf2TxtConverter.ConvertAsync ................................................................................... 95
2.6.11 Dbf2TxtConverter.ProgressChangedDelegate ............................................................. 95
2.6.12 Dbf2TxtConverter.RunWorkerCompletedDelegate ...................................................... 96
2.6.13 Txt2DbfConverter.CancelAsync ..................................................................................... 98
2.6.14 Txt2DbfConverter.Convert ............................................................................................. 98
2.6.15 Txt2DbfConverter.Convert with Callback...................................................................... 98
2.6.16 Txt2DbfConverter.ConvertAsync ................................................................................... 99
2.6.17 Txt2DbfConverter.ProgressChangedDelegate ............................................................. 99
2.6.18 Txt2DbfConverter.RunWorkerCompletedDelegate ....................................................100
2.6.19 Txt2PackedDbfConverter.CancelAsync ......................................................................101
2.6.20 Txt2PackedDbfConverter.Convert ..............................................................................102
2.6.21 Txt2PackedDbfConverter.Convert with Callback .......................................................102
2.6.22 Txt2PackedDbfConverter.ConvertAsync .....................................................................102
2.6.23 Txt2PackedDbfConverter.ProgressChangedDelegate ...............................................103
2.6.24 Txt2PackedDbfConverter.RunWorkerCompletedDelegate .......................................104
2.7 Class Events ............................................................................................................................106
2.7.1 Dbf2TxtConverter.ProgressChanged.............................................................................106
2.7.2 Dbf2TxtConverter.RunWorkerCompleted .....................................................................106
2.7.3 Txt2DbfConverter.ProgressChanged.............................................................................107
2.7.4 Txt2DbfConverter.RunWorkerCompleted .....................................................................107
2.7.5 Txt2PackedDbfConverter.ProgressChanged ................................................................108
2.7.6 Txt2PackedDbfConverter.RunWorkerCopmleted .........................................................108
INTRODUCTION
This programming guide is meant for users who want to convert data files into various
formats for the 8 series terminals.
Data Converter C++ API and C# API are functions performing file format conversion.
Both the API sets support three types of format conversion as follows:
Text CipherLab 8-Series Mobile Computer RAM
Text CipherLab 8-Series Mobile Computer SD card
CipherLab 8-Series Mobile Computer SD card text
Whether you are using C++ or .NET Framework for programming, it is easy to write
applications to convert data between PC and terminals. Supported data formats are
Forge AG, DBF, and ASCII.
We recommend that you read the documents thoroughly before use and keep it at hand
for quick reference.
1
Data Converter Programming Guide
DEVELOPMENT TOOL
It is assumed that the programmer has prior knowledge of Windows programming. For
information on Windows application programming interface (API), essential online
resource is available on Microsoft website –
http://msdn2.microsoft.com/en-us/library/default.aspx
The development environment and tools can be one of the following choices:
Note: For the target application to run correctly on a system without Visual Studio 2008,
a prior installation of VC++ 2008 redistributable package is required.
2
Chapter 1
C++ PROGRAMMING
1) After launching the Visual Studio integrated development environment (IDE), please
point to New on the File menu, and then click Project.
2) When the New Project dialog shows up, click Win32 Console Application in the
Templates pane.
3) Give a name for the project and then click OK to create the project.
3
Data Converter Programming Guide
DATACONVERTER_CPP_API
This is to tell the compiler where header files are located. Click Properties on the
Project menu to bring up the project’s properties dialog. In the left pane, click the plus
sign to expand the Configuration Properties C/C++ branch; then click General.
In the Additional Include Directories field of the right pane, add the “\include” folder.
4
Chapter 1 C++ Programming
This is to tell the linker where to find the library file(s). In the left pane, click the plus
sign to expand the Linker branch; then click General. Then in the Additional Library
Directories field of the right pane, add the “\lib” folder.
Next, you have to tell the linker what library file(s) to use. In the left pane, click Input.
Then in the Additional Dependencies field of the right pane, add
“CipherLab.DataConverter.lib”.
5
Data Converter Programming Guide
LINK TO DLLS
In the main program, you could include “DataConverter.h” which contains all available
herders.
6
Chapter 1 C++ Programming
For now only Linux with the GNU C++ compiler version ranging from 4.8.4 to 5 is
supported.
1) Use Code::Block IDE to create a C++ console project. On the File menu, point to
New, and then click Project. Select Console application.
2) Copy both “\include” and “\lib” folders into your project directory.
7
Data Converter Programming Guide
3) Click Project Build options Compiler settings Other options to add compiler
options:
-lpthread
-lm
8
Chapter 1 C++ Programming
4) Click Project Build options Compiler settings #defines to add compiler defined
variables:
_GLIBCXX_USE_CXX11_ABI=0
9
Data Converter Programming Guide
5) Click Project Build options Linker settings Link libraries to add link libraries:
Add the “Linux amd64/libDataConverter.a” which is located in the lib folder.
Add “libpthread.so” which is located in the “/usr/lib/x86_64-linux-gnu” folder.
10
Chapter 1 C++ Programming
7) In the main program, you can simply include “DataConverter.h” which contains all
available headers.
1) Use Code::Block IDE to create a C++ console project. On the File menu, point to
New, and then click Project. Select Console application.
11
Data Converter Programming Guide
2) Copy both “\include” and “\lib” folders into your project directory.
12
Chapter 1 C++ Programming
13
Data Converter Programming Guide
14
Chapter 1 C++ Programming
5) Click Project Build options Linker settings Link libraries to add link
libraries:
Add the “Linux i386/libDataConverter.a” which is located in the lib folder.
Add “libpthread.so” which is located in the “/usr/lib/i386-linux-gnu” folder.
15
Data Converter Programming Guide
7) In the main program, you can simply include “DataConverter.h” which contains all
available headers.
16
Chapter 1 C++ Programming
#include "DataConverter.h"
#include <iostream>
#include <stdio.h>
#include <cstdlib>
#else
#include <unistd.h>
#endif
int main()
cbPtr->SetCallBack(progressCallBack_dbf2txt);
#else
17
Data Converter Programming Guide
#endif
try{
d2tObj->ConvertAsync(cbPtr);
d2tObj->CancelAsync();
switch(result->status)
case Failed:
break;
case Cancelled:
break;
case CipherLab::DataConverter::Unknown:
#else
case Unknown:
#endif
break;
case SucceededWithRecordsSkipped:
18
Chapter 1 C++ Programming
break;
case Succeeded:
break;
default:
ErrorRecord e = result->getErrorRecord(i);
}catch (formatException& e)
getchar();
exit(0);
19
Data Converter Programming Guide
#else
sleep(10);
#endif
return 0;
20
Chapter 1 C++ Programming
1.4 ENUMERATIONS
1.4.1 AGXTYPE
The AGXType enumeration defines the type of AGX format for 8-series.
Syntax
typedef enum
{
Series86;
Series86_Encrypted;
Others;
Others_Encrypted;
} AGXType;
Members
Series86
The AGX format type for the 8600 model.
Series86_Encrypted
The AGX format type generated by Forge AG v2.0 or later for the 8600 model.
Others
The AGX format type for 8-series except for the 8600 model.
Others
The AGX format type generated by Forge AG v2.0 or later for 8-series except for the
8600 model.
1.4.2 BASICPROGDBFFILENAME
The BasicProgDbfFileName enumeration defines the DBF file names for Basic
programming record format.
Syntax
typedef enum
{
F1;
F2;
F3;
F4;
F5;
} BasicProgDbfFileName;
Members
F1
The file name part of the DBF file is F1.
F2
The file name part of the DBF file is F2.
F3
The file name part of the DBF file is F3.
F4
The file name part of the DBF file is F4.
21
Data Converter Programming Guide
F5
The file name part of the DBF file is F5.
1.4.3 CONVERSIONSTATUS
Members
Failed
Conversion status is failed.
Others
Conversion status is cancelled.
Unknown
Conversion status is unknown.
SucceededWithRecordsSkipped
Conversion status is succeeded with records skipped.
Succeeded
Conversion status is succeeded.
1.4.4 FILETYPE
The FileType enumeration defines the type of file for doing DBF to PC conversion.
Syntax
typedef enum
{
Unknown;
Lookup;
Transaction;
} FileType;
Members
Unknown
Unknown file.
Lookup
A lookup file.
Transaction
A transaction file.
22
Chapter 1 C++ Programming
1.4.5 FORGEAGPROGDBFFILENAME
The ForgeAgProgDbfFileName enumeration defines the type of lookup file for Forge
AG programming record format.
Syntax
typedef enum
{
FirstLookup;
SecondLookup;
ThirdLookup;
} ForgeAgProgDbfFileName;
Members
FirstLookup
The first lookup file.
SecondLookup
The second lookup file.
ThirdLookup
The third lookup file.
1.4.6 PROGRAMMINGTOOL
Members
C
C programming tool.
Basic
Basic programming tool.
ForgeAg
Forge Ag programming tool.
1.4.7 WRONGFORMATACTION
23
Data Converter Programming Guide
{
Stop;
Reformat;
Skip;
} WrongFormatAction;
Members
Stop
Stop the conversion process when data format is not correct.
Reformat
Reformat the data record when the format is not correct.
Skip
Skip the current record and continue with the next record.
24
Chapter 1 C++ Programming
1.5 CLASS
1.5.1 AGX
DETERMINEFORMATTYPE
Syntax
Parameters
path
Return Value
Example
25
Data Converter Programming Guide
case CipherLab::DataConverter::Others:
cout << "Others" << endl;
break;
case CipherLab::DataConverter::Others_Encrypted:
cout << "Others_Encrypte" << endl;
break;
default:
cout << "Cannot open file" << endl;
}
READ
Syntax
Parameters
path
counter
Return Value
ForgeAgProgDataFormat.
Example
26
Chapter 1 C++ Programming
1.5.2 APIVERSION
DLLEXPORT ApiVersion ()
DLLEXPORT ~ApiVersion()
GETAPI_BUILD_VERSION
Syntax
int CipherLab::DataConverter::ApiVersion::GetApi_build_version ()
Return Value
GETAPI_MAJOR_VERSION
Syntax
27
Data Converter Programming Guide
int CipherLab::DataConverter::ApiVersion::GetApi_major_version ()
Return Value
GETAPI_MINOR_VERSION
Syntax
int CipherLab::DataConverter::ApiVersion::GetApi_minor_version ()
Return Value
GETAPIVERSION
Syntax
int CipherLab::DataConverter::ApiVersion::GetApiVersion ()
Return Value
1.5.3 BASICPROGDATAFORMAT
Inherits CipherLab::DataConverter::DataFormat
DLLEXPORT BasicProgDataFormat ()
DLLEXPORT ~BasicProgDataFormat ()
Public Attribute:
28
Chapter 1 C++ Programming
BasicProgDbfFileName
Syntax
Parameters
path
dbfFileName
Syntax
Parameters
path
dbfFileName
delimiter
Remarks
The maximum number of record fields for both non-8600 models and 8600 model is
8.
Txt2PackedDbf conversion:
For non-8600 model, the format can have 1~3 key fields specified; as for 8600 model,
the format can have 0~5 key fields specified.
Txt2Dbf conversion:
29
Data Converter Programming Guide
For non-8600 model, the format can have 0~3 key fields specified; as for 8600 model,
the format can have 0~5 key fields specified.
1.5.4 CONVERSIONRESULT
Gets the post conversion result including the possible ErrorRecord list and the output file
paths.
ConversionResult ()
~ConversionResult ()
int getNumberOfErrorRecords ()
int getNumberOfOutputFiles ()
Public Attribute:
ConversionStatus status
static std::vector<ErrorRecord>errorRecordList
static std::vector<string>outputFilePaths
1.5.5 CPROGDATAFORMAT
Inherits CipherLab::DataConverter::DataFormat.
DLLEXPORT CProgDataFormat ()
30
Chapter 1 C++ Programming
DLLEXPORT ~CProgDataFormat ()
Public Attribute:
Syntax
Parameters
path
dbfFileName
Syntax
Parameters
path
dbfFileName
31
Data Converter Programming Guide
delimiter
Remarks
The maximum number of record fields for both non-8600 models and 8600 model is
8.
Txt2PackedDbf conversion:
For non-8600 model, the format can have 1~8 key fields specified; as for 8600 model,
the format can have 0~8 key fields specified.
Txt2Dbf conversion:
For both non-8600 modesl and 8600 model, the format can have 0~8 key fields
specified.
1.5.6 DATAFORMAT
Inherited by CipherLab::DataConverter::BasicProgDataFormat,
CipherLab::DataConverter::CProgDataFormat, and
CipherLab::DataConverter::ForgeAgProgDataFormat.
~DataFormat ()
void ClearRecordFields ()
32
Chapter 1 C++ Programming
char getDelimiter ()
int getKeyCount ()
int getMaxRecordFields ()
int getNumberOfRecordFields ()
bool isRecordDelimited ()
Protected Attribute:
33
Data Converter Programming Guide
int minFieldLength
int minFieldPosition
string path
vector< RecordField > RecordFields
Syntax
Parameters
maxFields
delimiter
Syntax
Parameters
recordField
A RecordField object.
Syntax
Parameters
index
34
Chapter 1 C++ Programming
isKey
Changes the specific record field whether it’s a key field or not.
Syntax
Parameters
index
length
Syntax
Parameters
index
position
Syntax
int CipherLab::DataConverter::DataFormat::getKeyCount ()
Return Value
Syntax
int CipherLab::DataConverter::DataFormat::getMaxRecordFields ()
35
Data Converter Programming Guide
Return Value
Syntax
int CipherLab::DataConverter::DataFormat::getNumberOfRecordFields ()
Return Value
Syntax
Parameters
index
Syntax
Return Value
Syntax
Parameters
fileName
1.5.7 DBF2TXTCONVERTER
36
Chapter 1 C++ Programming
Initializes a new instance of the Dbf2TxtConverter class with programming data format.
Requests conversion.
Public Attribute:
ConversionResult *result
Syntax
Parameters
cb
Example
#include "DataConverter.h"
#include <iostream> //for cin, cout and endl
#include <string.h>
#include <stdio.h>
#include <cstdlib>
37
Data Converter Programming Guide
int main()
{
ProgressCallBack* cbPtr = new ProgressCallBack();
cbPtr->SetCallBack(progressCallBack);
1.5.8 ERRORRECORD
38
Chapter 1 C++ Programming
Constructor of ErrorRecord.
ErrorRecord ()
~ErrorRecord ()
Destructor of ErrorRecord.
long getRecordNum ()
bool isSkipped ()
Syntax
Constructor of ErrorRecord.
Parameters
fileName
recordNum
recordText
isSkip
39
Data Converter Programming Guide
Identifies whether the action to take when detecting wrong data format during
conversion is ‘skip’ or not.
Return Value
Object which contains the error info when detecting wrong data format during
conversion.
1.5.9 FORGEAGPROGDATAFORMAT
Inherits CipherLab::DataConverter::DataFormat.
DLLEXPORT ForgeAgProgDataFormat ()
DLLEXPORT ~ForgeAgProgDataFormat ()
Public Attribute:
WrongFormatAction actionTakenWhenFormatIsWrong
The action to take when detecting wrong data format during conversion.
ForgeAgProgDbfFileName DbfFileName
40
Chapter 1 C++ Programming
Syntax
CipherLab::DataConverter::ForgeAgProgDataFormat::ForgeAgProgDataFormat (const
char *path, ForgeAgProgDbfFileName dbfFileName)
Parameters
path
dbfFileName
CipherLab::DataConverter::ForgeAgProgDataFormat::ForgeAgProgDataFormat (const
char *path, ForgeAgProgDbfFileName dbfFileName, char delimiter)
Parameters
path
dbfFileName
delimiter
Remarks
The maximum number of record fields for non-8600 models is 8; as for 8600, the
maximum number of record fields is 12.
For both Txt2PackedDbf conversion and Txt2Dbf conversions, the format must have
one and only one key field specified.
1.5.10 FORMATEXCEPTION
Inherits exception.
formatException (void)
41
Data Converter Programming Guide
string getMessage ()
1.5.11 RECORDFIELD
RecordField ()
Public Attribute:
bool IsKey
int Length
int Position
Syntax
42
Chapter 1 C++ Programming
Parameters
position
length
isKey
Syntax
Parameters
position
length
Syntax
bool CipherLab::DataConverter::RecordField::IsKey
A public member boolean variable (no matter whether the record field is a key field or
not).
int CipherLab::DataConverter::RecordField::Length
int CipherLab::DataConverter::RecordField::Position
A public member integer variable (the start position of the record field).
1.5.12 PROGRESSCALLBACK
Have the converting function acting as a callback function to report the percentage,
record count, and status of conversion process.
Syntax
43
Data Converter Programming Guide
CipherLab::DataConverter::ProgressCallBack (void)
Parameters
fun
Pointer to the function to be called. The CBFun member type is defined as:
typedef void (*CBFun) (float percentage, int recordCount, const char* status);
percentage
recordCount
status
1.5.13 TXT2DBFCONVERTER
DLLEXPORT ~Txt2DbfConverter ()
44
Chapter 1 C++ Programming
Requests conversion.
Public Attribute:
ConversionResult result
ConversionStatus status
Syntax
CipherLab::DataConverter::Txt2DbfConverter::Txt2DbfConverter (BasicProgDataFormat
& dataFormat, const char *targetDir, WrongFormatAction actionTakenWhenWrong)
Parameters
dataFormat
targetDir
actionTakenWhenWrong
The action to take when detecting wrong data format during conversion.
Syntax
Parameters
45
Data Converter Programming Guide
dataFormat
targetDir
actionTakenWhenWrong
The action to take when detecting wrong data format during conversion.
Syntax
CipherLab::DataConverter::Txt2DbfConverter::Txt2DbfConverter
(ForgeAgProgDataFormat & dataFormat, const char *targetDir, WrongFormatAction
actionTakenWhenWrong)
Parameters
dataFormat
targetDir
actionTakenWhenWrong
The action to take when detecting wrong data format during conversion.
Syntax
ConversionResult CipherLab::DataConverter::Txt2DbfConverter::Convert
(ProgressCallBack *cb)
Requests conversion.
Parameters
cb
Return Value
46
Chapter 1 C++ Programming
Example
BasicProgDataFormat bpdf;
bpdf.setDelimiter(0x2C);
bpdf.DbfFileName = CipherLab::DataConverter::F2;
string path = "D:\\DcTestFolder\\testFiles\\D\\input_delimiter_15.txt";
bpdf.setPath(path.c_str());
bpdf.ParseRecordFields(bpdf.getPath());
bpdf.EditRecordFieldIsKey(1, true);
bpdf.EditRecordFieldLength(2, 3);
bpdf.EditRecordFieldIsKey(2, true);
Syntax
Parameters
cb
47
Data Converter Programming Guide
Return Value
Syntax
void CipherLab::DataConverter::Txt2DbfConverter::CancelAsync ()
Example
CProgDataFormat cpdf;
cpdf.setDelimiter(0x2C);
cpdf.AddRecordField(RecordField(1,4, false));
cpdf.AddRecordField(RecordField(6,2, true));
cpdf.AddRecordField(RecordField(9,3, false));
cpdf.setDelimiter(0x2C);
cpdf.DbfFileName = "input_c";
string path = "D:\\DcTestFolder\\testFiles\\D\\input_delimiter_15.txt";
cpdf.setPath(path.c_str());
48
Chapter 1 C++ Programming
{
case CipherLab::DataConverter::Failed:
cout << "Failed" << endl;
break;
case CipherLab::DataConverter::Cancelled:
cout << "Cancelled" << endl;
break;
case CipherLab::DataConverter::Unknown:
cout << "Unknown" << endl;
break;
case CipherLab::DataConverter::SucceededWithRecordsSkipped:
cout << "SucceededWithRecordsSkipped" << endl;
break;
case CipherLab::DataConverter::Succeeded:
cout << "Succeeded" << endl;
break;
default:
cout << "Totally Unknown" << endl;
}
cout << "Output File Paths: " << endl;
for(int i = 0; i < result.getNumberOfOutputFiles(); i++)
{
cout << i << ") " << result.getOutputFilePaths(i) << endl;
}
49
Data Converter Programming Guide
catch(formatException& e)
{
cerr << e.getMessage() << endl;
getchar();
exit(0);
}
1.5.14 TXT2PACKEDDBFCONVERTER
DLLEXPORT ~Txt2PackedDbfConverter ()
50
Chapter 1 C++ Programming
Requests conversion.
Public Attribute:
ConversionResult result
ConversionStatus status
Syntax
CipherLab::DataConverter::Txt2PackedDbfConverter::Txt2PackedDbfConverter
(BasicProgDataFormat &dataFormat, const char *target, WrongFormatAction
actionTakenWhenWrong)
Parameters
dataFormat
target
actionTakenWhenWrong
The action to take when detecting wrong data format during conversion.
Syntax
Parameters
51
Data Converter Programming Guide
dataFormat
targetDir
actionTakenWhenWrong
The action to take when detecting wrong data format during conversion.
Syntax
CipherLab::DataConverter::Txt2PackedDbfConverter::Txt2PackedDbfConverter
(CProgDataFormat & dataFormat, const char *target, WrongFormatAction
actionTakenWhenWrong)
Parameters
dataFormat
target
actionTakenWhenWrong
The action to take when detecting wrong data format during conversion.
Syntax
CipherLab::DataConverter::Txt2PackedDbfConverter::Txt2PackedDbfConverter
(ForgeAgProgDataFormat & dataFormat, const char *target, WrongFormatAction
actionTakenWhenWrong)
Parameters
dataFormat
target
52
Chapter 1 C++ Programming
actionTakenWhenWrong
The action to take when detecting wrong data format during conversion.
Syntax
CipherLab::DataConverter::Txt2PackedDbfConverter::Txt2PackedDbfConverter
(BasicProgDataFormat *dataFormat_list, int n, const char *target, WrongFormatAction
actionTakenWhenWrong)
Parameters
dataFormat_list
target
actionTakenWhenWrong
The action to take when detecting wrong data format during conversion.
Syntax
CipherLab::DataConverter::Txt2PackedDbfConverter::Txt2PackedDbfConverter
(CProgDataFormat *dataFormatList, int n, const char *target, WrongFormatAction
actionTakenWhenWrong)
Parameters
dataFormat_list
target
53
Data Converter Programming Guide
actionTakenWhenWrong
The action to take when detecting wrong data format during conversion.
Syntax
CipherLab::DataConverter::Txt2PackedDbfConverter::Txt2PackedDbfConverter
(ForgeAgProgDataFormat *dataFormatList, int n, const char *target, WrongFormatAction
actionTakenWhenWrong)
Parameters
dataFormat_list
target
actionTakenWhenWrong
The action to take when detecting wrong data format during conversion.
Syntax
ConversionResult CipherLab::DataConverter::Txt2PackedDbfConverter::Convert
( ProgressCallBack *cbPtr )
Requests conversion.
Parameters
cbPtr
Return Value
Example
54
Chapter 1 C++ Programming
bpdf.EditRecordFieldIsKey(0, true);
bpdf.EditRecordFieldIsKey(1, true);
bpdf.EditRecordFieldIsKey(2, true);
try{
ConversionResult result;
ProgressCallBack* cbPtr = new ProgressCallBack();
cbPtr->SetCallBack(progressCallBack_txt2packedDbf);
result = t2dObj->Convert(cbPtr);
switch(result.status)
{
case CipherLab::DataConverter::Failed:
cout << "Failed" << endl;
break;
case CipherLab::DataConverter::Cancelled:
cout << "Cancelled" << endl;
break;
case CipherLab::DataConverter::Unknown:
cout << "Unknown" << endl;
55
Data Converter Programming Guide
break;
case CipherLab::DataConverter::SucceededWithRecordsSkipped:
cout << "SucceededWithRecordsSkipped" << endl;
break;
case CipherLab::DataConverter::Succeeded:
cout << "Succeeded" << endl;
break;
default:
cout << "Totally Unknown" << endl;
}
Syntax
56
Chapter 1 C++ Programming
void CipherLab::DataConverter::Txt2PackedDbfConverter::ConvertAsync
(ProgressCallBack *cb)
Parameters
cb
Example
ForgeAgProgDataFormat a[2];
a[0] = fpdf;
a[1] = fpdf1;
Txt2PackedDbfConverter* t2dObj = new Txt2PackedDbfConverter(a, 2,
"D:\\DcTestFolder\\PC2SD\\Delimiter\\API\\ForgeAg\\output", Reformat);
try{
ConversionResult result;
ProgressCallBack* cbPtr = new ProgressCallBack();
cbPtr->SetCallBack(progressCallBack_txt2packedDbf);
t2dObj->ConvertAsync(cbPtr);
57
Data Converter Programming Guide
result = t2dObj->result;
switch(result.status)
{
case CipherLab::DataConverter::Failed:
cout << "Failed" << endl;
break;
case CipherLab::DataConverter::Cancelled:
cout << "Cancelled" << endl;
break;
case CipherLab::DataConverter::Unknown:
cout << "Unknown" << endl;
break;
case CipherLab::DataConverter::SucceededWithRecordsSkipped:
cout << "SucceededWithRecordsSkipped" << endl;
break;
case CipherLab::DataConverter::Succeeded:
cout << "Succeeded" << endl;
break;
default:
cout << "Totally Unknown" << endl;
}
58
Chapter 1 C++ Programming
59
Data Converter Programming Guide
60
Chapter 2
.NET PROGRAMMING
Please prepare the necessary library file (CipherLab.Data.ConverterLib.dll) on the
CD-ROM before you start to write and implement your application.
In order for your application to run on 64-bit Windows, you must have Microsoft Visual
C++ 2008 Redistributable Package installed on the 64-bit Winodws machine. Set the
platform target property to ‘x86’ for your C# or VB projects.
For C# Projects:
1) Right click the project in the solution explorer and open 'Properties'
2) Choose the Build tab
3) Set the Platform Target property to 'X86'
For VB Projects:
1) Right click the project in the solution explorer and open 'Properties'
2) Choose the Compile tab
3) Press the Advanced Compile Options... button
4) Set the Target CPU property to 'X86'
61
Data Converter User Guide
2) Select the Windows project type in the left pane and then the Windows Forms
Application template in the right pane.
62
Chapter 2 .NET Programming
5) Click the Browse tab and select the CipherLab.Data.ConverterLib.dll file. Click
OK.
63
Data Converter User Guide
6) You should include “using CipherLab.Data.ConverterLib” to use the System DLL file.
64
Chapter 2 .NET Programming
Follow these steps to create a Visual Basic application in Visual Studio 2008.
2) Select the Windows project type in the left pane and then the Windows forms
Application template in the right pane.
65
Data Converter User Guide
66
Chapter 2 .NET Programming
5) Click the Browse tab and then select the CipherLab.Data.ConverterLib.dll file.
Click OK.
6) You should include “Imports CipherLab” to use the System DLL file.
67
Data Converter User Guide
2.3.1PROGRESSCALLBACK DELEGATE
The ProgressCallback delegate is for the convert function acting as a callback function to
report the percentage, record count and status of conversion process.
Namespace: CipherLab.Data.ConverterLib
Syntax
Parameters
value
Type: float
recordCount
Type: long
status
Type: string
68
Chapter 2 .NET Programming
2.4.1 AGXTYPE
The AGXType enumeration defines the type of AGX format for 8-series.
Namespace: CipherLab.Data.ConverterLib
Syntax
Members
Series86
Series86_Encrypted
The AGX format type for the 8600 model to support Forge AG 2.0 or later.
Others
Others_Encrypted
The AGX format type for 8-series except for 8600 to support Forge AG 2.0 or
later.
69
Data Converter User Guide
2.4.2 BASICPROGDBFFILENAME
The BasicProgDbfFileName enumeration defines the DBF file names for the Basic
programming PC to RAM and PC to SD card conversions.
Namespace: CipherLab.Data.ConverterLib
Syntax
Members
F1
F2
F3
F4
F5
70
Chapter 2 .NET Programming
2.4.3 CONVERSIONSTATUS
Namespace: CipherLab.Data.ConverterLib
Syntax
Members
Failed=-2
Cancelled
Unknown
SucceededWithRecordsSkipped
Succeeded
71
Data Converter User Guide
2.4.4 FORGEAGPROGDBFFILENAME
The ForgeAgProgDbfFileName enumeration defines the type of lookup file for Forge
AG programming record format.
Namespace: CipherLab.Data.ConverterLib
Syntax
Members
FirstLookup
SecondLookup
ThirdLookup
Namespace: CipherLab.Data.ConverterLib
72
Chapter 2 .NET Programming
Syntax
Members
C programming tool.
Basic
2.4.6 WRONGFORMATACTION
Namespace: CipherLab.Data.ConverterLib
Syntax
Members
Stop
Reformat
73
Data Converter User Guide
Truncate and reformat the data record when the format is not correct.
Skip
Skip the current record and continue with the next record.
2.5 CLASSES
2.5.1 AGX
Namespace: CipherLab.Data.ConverterLib
Syntax
Methods
Name Description
public Read Reads data format from an AGX file.
public DetermineType Reads the header of an AGX file to determine the AGX
format type of 8-series mobile computers.
2.5.2 BASICPROGDATAFORMAT
Namespace: CipherLab.Data.ConverterLib
Syntax
Constructors
74
Chapter 2 .NET Programming
Name Description
public BasicProgDataFormat Initializes a new instance of the
BasicProgDataFormat class.
public BasicProgDataFormat(string, Initializes a new instance of the
BasicProgDbfFileName, BasicProgDataFormat class with input file path,
WrongFormatAction) output DBF file name, and the action to take
when detecting wrong data format during
conversion.
public BasicProgDataFormat(string, Initializes a new instance of the
BasicProgDbfFileName, BasicProgDataFormat class with input file path,
char, WrongFormatAction) output DBF file name, data delimiter, and the
action to take when detecting wrong data
format during conversion.
Properties
Name Description
public Delimiter Gets or sets the delimiter character that is
used in the record to separate data.
public KeyCount Gets the number of key fields
public IsRecordDelimited Gets a value indicating whether the record
uses a delimiter character to separate data.
public MaxRecordFields Gets the maximum number of fields
allowed.
public NumberOfRecordFields Gets the number of data fields in a record.
public Path Gets or sets the input file path
Methods
Name Description
public AddRecordField(RecordField) Adds a record field to the data format.
public AddRecordField(List<RecordField>) Adds a list of record fields to the data
format.
public GetRecordFieldAt Gets the record field at specified location.
public ParseRecordFields Auto parses the lookup file to list of record
fields.
Fields
75
Data Converter User Guide
Name Description
public DbfFileName Identifies the output DBF file name.
public KeyIndices Identifies the index of the key record.
public Keys Identifies the record fields of the key record.
Remarks
The maximum number of record fields for both non-8600 models and 8600 model is
8.
Txt2PackedDbf conversion:
For non-8600 model, the format can have 1~3 key fields specified; as for 8600 model,
the format can have 0~5 key fields specified.
Txt2Dbf conversion:
For non-8600 model, the format can have 0~3 key fields specified; as for 8600 model,
the format can have 0~5 key fields specified.
2.5.3 CONVERSIONRESULT
Gets the post conversion result including the possible ErrorRecord list and the output file
paths.
Namespace: CipherLab.Data.ConverterLib
Syntax
Constructors
Name Description
public Status Returns the defined type of ConversionStatus
enumeration.
public ErrorRecords Returns the array of ErrorRecord objects.
public OutputFilePaths Returns the array of output files’ path.
76
Chapter 2 .NET Programming
2.5.4 CPROGDATAFORMAT
Namespace: CipherLab.Data.ConverterLib
Syntax
Constructors
Name Description
public CProgDataFormat Initializes a new instance of the CProgDataFormat
class.
public CProgDataFormat(string, Initializes a new instance of the CProgDataFormat
WrongFormatAction) class with input file path and the action to take
when detecting wrong data format during
conversion.
public CProgDataFormat(string, Initializes a new instance of the CProgDataFormat
string, class with input file path, output DBF file name,
WrongFormatAction) and the action to take when detecting wrong data
format during conversion.
public CProgDataFormat(string, Initializes a new instance of the CProgDataFormat
string, string, class with input file path, output DBF file name,
WrongFormatAction) data delimiter, and the action to take when
detecting wrong data format during conversion.
Properties
Name Description
public Delimiter Gets or sets the delimiter character that is
used in the record to separate data.
public IsRecordDelimited Gets a value indicating whether the record
uses a delimiter character to separate data.
public KeyCount Gets the number of key fields
public MaxRecordField Gets the maximum number of fields
allowed.
public NumberOfRecordFields Gets the number of data fields in a record.
77
Data Converter User Guide
Methods
Name Description
public AddRecordField(RecordField) Adds a record field to the data format.
public AddRecordField(List<RecordField>) Adds a list of record fields to the data
format.
public GetRecordFieldAt Gets the record field at specified location.
public ParseRecordFields Auto parses the lookup file to list of record
fields.
Fields
Name Description
public DbfFileName Identifies the output DBF file name.
public KeyIndices Identifies the index of the key record.
public Keys Identifies the record fields of the key record.
Remarks
The maximum number of record fields for both non-8600 models and 8600 model is
8.
Txt2PackedDbf conversion:
For non-8600 model, the format can have 1~8 key fields specified; as for 8600 model,
the format can have 0~8 key fields specified.
Txt2DbfConversion:
For both non-8600 models and 8600 model, the format can have 0~8 key fields
specified.
2.5.5 DBF2TXTCONVERTER
Namespace: CipherLab.Data.ConverterLib
Syntax
78
Chapter 2 .NET Programming
Constructors
Name Description
public Dbf2TxtConverter Initializes a new instance of the Dbf2TxtConverter
(ProgrammingTool, class with specific programming language, input
string, string) file path, and the output file path.
Methods
Name Description
public CancelAsync Requests cancellation of conversion.
public ConvertAsync Requests action of conversion.
public Convert Requests conversion.
public Convert with Callback Requests conversion with callback function.
public ProgressChangedDelegate Raises the ProgressChanged event.
public RunWorkerCompletedDelegate Raises the RunWorkerCompleted event.
Events
Name Description
public ProgressChanged Occurs when user raises the ProgressChanged event.
public RunWorkerCompleted Occurs when the conversion has completed, has been
canceled, or has raised an exception.
Example
using CipherLab.Data.ConverterLib;
79
Data Converter User Guide
t2TInstance.ConvertAsync();
}
2.5.6 DELIMITERCHAR
Namespace: CipherLab.Data.ConverterLib
Syntax
Fields
Name Description
public None The character represents 0x00.
2.5.7 ERRORRECORD
Namespace: CipherLab.Data.ConverterLib
Syntax
80
Chapter 2 .NET Programming
Constructors
Name Description
public ErrorRecord Initializes a new instance of the ErrorRecord class with
(string, long, input file path, the sequence of the record, the record text
string, bool) and whether the action to take when detecting wrong data
format during conversion is ‘skip’ or not.
Fields
Name Description
public filename Identifies the input filename.
public numOfLines Identifies the sequence of the record.
public textOfRecord Identifies the text of record.
public isSkip Identifies whether the action to take when detecting wrong
data format during conversion is ‘skip’ or not.
2.5.8 FORGEAGPROGDATAFORMAT
Namespace: CipherLab.Data.ConverterLib
Syntax
Constructors
Name Description
public ForgeAgProgDataFormat Initializes a new instance of the
ForgeAgProgDataFormat class.
public ForgeAgProgDataFormat(string, Initializes a new instance of the
ForgeAgProgDbfFileName, ForgeAgProgDataFormat class with input file
WrongFormatAction) path, output DBF file name, and the action to
take when detecting wrong data format during
conversion.
public ForgeAgProgDataFormat(string, Initializes a new instance of the
81
Data Converter User Guide
Properties
Name Description
public Delimiter Gets or sets the delimiter character that is used in the
record to separate data.
public IsRecordDelimited Gets a value indicating whether the record uses a
delimiter character to separate data.
public KeyCount Gets the number of key fields
public MaxRecordField Gets the maximum number of fields allowed.
public NumberOfRecordFields Gets the number of data fields in a record.
public Path Gets or sets the input file path
Methods
Name Description
public AddRecordField(RecordField) Adds a record field to the data format.
public AddRecordField(List<RecordField>) Adds a list of record fields to the data
format.
public GetRecordFieldAt Gets the record field at specified location.
public ParseRecordFields Auto parses the lookup file to list of record
fields.
Fields
Name Description
public ActionTakenWhenFormatIsWrong Gets the wrong format action.
public DbfFileName Identifies the output DBF file name.
public KeyIndices Identifies the index of the key record.
public Keys Identifies the record fields of the key record.
Remarks
82
Chapter 2 .NET Programming
The maximum number of record fields for non-8600 models is 8; as for 8600, the
maximum number of record fields is 12.
For both Txt2PackedDbf conversion and Txt2Dbf conversions, the format must have
one and only one key field specified.
2.5.9 GENERALINFO
This class represents the general information associated with the DLL file.
Namespace: CipherLab.Data.ConverterLib
Syntax
Fields
Name Description
public Version Gets a string representing the version associated with the
DLL file.
2.5.10 RECORDFIELD
This class represents position, length, and key field information that define a record field
in the CipherLab data format.
Namespace: CipherLab.Data.ConverterLib
Syntax
83
Data Converter User Guide
Constructors
Name Description
public RecordField(int, Initializes a new instance of the RecordField class with data
int) position and length specified by integer values.
public RecordField(int, Initializes a new instance of the RecordField class with data
int, bool) position, data length, and a bool value that specifies
whether the field is a key field in the CipherLab format.
Fields
Name Description
public IsKey Gets or sets a value indicating whether this record field is a
key field.
public Length Gets or sets the Length of this data field.
public Position Gets or sets the start position of this data field.
2.5.11 TXT2DBFCONVERTER
Converts lookup (.txt) files to DBF files for the SD card device.
Namespace: CipherLab.Data.ConverterLib
Syntax
Constructors
Name Description
public Txt2DbfConverter(DataFormat, Initializes a new instance of the
string) Txt2DbfConverter class with specific data
format and the output file path.
Methods
84
Chapter 2 .NET Programming
Name Description
public CancelAsync Requests cancellation of conversion.
Events
Name Description
public ProgressChanged Occurs when user raises the ProgressChanged event.
public RunWorkerCompleted Occurs when the conversion has completed, has been
canceled, or has raised an exception.
Fields
Name Description
public errorList Returns a list of error records.
Example
using CipherLab.Data. ConverterLib;
85
Data Converter User Guide
2.5.12 TXT2PACKEDDBFCONVERTER
Converts lookup (.txt) files to DBF files for the RAM device.
Namespace: CipherLab.Data.ConverterLib
Syntax
Constructors
Name Description
public Txt2PackedDbfConverter Initializes a new instance of the
(DataFormat, string) Txt2PackedDbf class with specific data format
86
Chapter 2 .NET Programming
Methods
Name Description
public CancelAsync Requests cancellation of conversion.
public ConvertAsync Requests action of conversion.
public Convert Requests conversion
public Convert with Callback Requests conversion with callback function.
public ProgressChangedDelegate Raises the ProgressChanged event.
public RunWorkerCompletedDelegate Raises the RunWorkerCompleted event.
Events
Name Description
public ProgressChanged Occurs when user raises the ProgressChanged event.
public RunWorkerCopmleted Occurs when the conversion has completed, has been
canceled, or has raised an exception.
Fields
Name Description
public errorList Returns a list of error records.
Example
using CipherLab.Data. ConverterLib;
87
Data Converter User Guide
cList.Add(cpdf);
cpdf2.Path = "D:\\DCTester\\CPC2RAM_M\\input8_1.txt";
cList.Add(cpdf2);
test.ConvertAsync();
}
88
Chapter 2 .NET Programming
if (sender is Txt2PackedDbfConverter)
{
foreach (ErrorRecord record in ((Txt2PackedDbfConverter)sender).list)
{
Console.WriteLine("record.textOfRecord = {0}",
record.textOfRecord);
}
}
else
{
Console.WriteLine("so null");
}
if (e.Error != null)
{
Console.WriteLine(e.Error.Message);
}
else
{
// Finally, handle the case where the operation
// succeeded.
Console.WriteLine("Completed");
}
}
}
89
Data Converter User Guide
2.6.1 AGX.READ
Namespace: CipherLab.Data.ConverterLib
Syntax
Parameters
path
Type: string
Return Value
Type: CipherLab.Data.ConverterLib.ForgeAgProgDataFormat[]
Remarks
The AGX.Read method won’t fill the Path property of the ForgeAgProgDataFormat class.
Therefore, the Path property will always be null.
Example
90
Chapter 2 .NET Programming
2.6.2 AGX.DETERMINETYPE
Reads the header of an AGX file to determine the AGX format type of 8-series.
Namespace: CipherLab.Data.ConverterLib
Syntax
Parameters
path
Type: string
Return Value
Type: CipherLab.Data.ConverterLib.AGXType
Example
91
Data Converter User Guide
Namespace: CipherLab.Data.ConverterLib
Syntax
Parameters
recordField
Type: CipherLab.Data.ConverterLib.RecordField
2.6.4 DATAFORMAT.ADDRECORDFIELD(LIST<RECORDFIELD>)
Namespace: CipherLab.Data.ConverterLib
Syntax
Parameters
List<recordField>
Type: List<CipherLab.Data.ConverterLib.RecordField>
92
Chapter 2 .NET Programming
2.6.5 DATAFORMAT.GETRECORDFIELDAT
Namespace: CipherLab.Data.ConverterLib
Syntax
Parameters
index
Type: int
2.6.6 DATAFORMAT.PARSERECORDFIELDS
Namespace: CipherLab.Data.ConverterLib
Syntax
public List<RecordField>ParseRecordFields (
string inputFilePath
)
Parameters
93
Data Converter User Guide
inputFilePath
Type: string
2.6.7 DBF2TXTCONVERTER.CANCELASYNC
Namespace: CipherLab.Data.ConverterLib
Syntax
Example
2.6.8 DBF2TXTCONVERTER.CONVERT
Namespace: CipherLab.Data.ConverterLib
Example
94
Chapter 2 .NET Programming
Namespace: CipherLab.Data.ConverterLib
Example
2.6.10 DBF2TXTCONVERTER.CONVERTASYNC
Namespace: CipherLab.Data.ConverterLib
Example
2.6.11 DBF2TXTCONVERTER.PROGRESSCHANGEDDELEGATE
Namespace: CipherLab.Data.ConverterLib
Syntax
Parameters
95
Data Converter User Guide
sender
Type: CipherLab.Data.ConverterLib.Dbf2TxtConverter
Type: System.ComponentModel.ProgressChangedEventArgs
Example
2.6.12 DBF2TXTCONVERTER.RUNWORKERCOMPLETEDDELEGATE
Namespace: CipherLab.Data.ConverterLib
Syntax
Parameters
sender
Type: CipherLab.Data.ConverterLib.Dbf2TxtConverter
96
Chapter 2 .NET Programming
Type: System.ComponentModel.RunWorkerCompletedEventArgs
Example
Console.WriteLine("Canceled");
}
else
{
if (e.Error != null)
{
Console.WriteLine(e.Error.Message);
}
else
{
// Finally, handle the case where the operation
// succeeded.
Console.WriteLine("Completed");
}
}
}
97
Data Converter User Guide
2.6.13 TXT2DBFCONVERTER.CANCELASYNC
Namespace: CipherLab.Data.ConverterLib
Syntax
Example
2.6.14 TXT2DBFCONVERTER.CONVERT
Namespace: CipherLab.Data.ConverterLib
Example
Namespace: CipherLab.Data.ConverterLib
98
Chapter 2 .NET Programming
Example
2.6.16 TXT2DBFCONVERTER.CONVERTASYNC
Namespace: CipherLab.Data.ConverterLib
Example
2.6.17 TXT2DBFCONVERTER.PROGRESSCHANGEDDELEGATE
Namespace: CipherLab.Data.ConverterLib
Syntax
Parameters
sender
Type: CipherLab.Data.ConverterLib.Dbf2TxtConverter
99
Data Converter User Guide
Type: System.ComponentModel.ProgressChangedEventArgs
Example
2.6.18 TXT2DBFCONVERTER.RUNWORKERCOMPLETEDDELEGATE
Namespace: CipherLab.Data.ConverterLib
Syntax
Parameters
sender
Type: CipherLab.Data.ConverterLib.Txt2DbfConverter
Type: System.ComponentModel.RunWorkerCompletedEventArgs
100
Chapter 2 .NET Programming
Example
2.6.19 TXT2PACKEDDBFCONVERTER.CANCELASYNC
Namespace: CipherLab.Data.ConverterLib
Syntax
Example
101
Data Converter User Guide
2.6.20 TXT2PACKEDDBFCONVERTER.CONVERT
Namespace: CipherLab.Data.ConverterLib
Example
Namespace: CipherLab.Data.ConverterLib
Example
2.6.22 TXT2PACKEDDBFCONVERTER.CONVERTASYNC
Namespace: CipherLab.Data.ConverterLib
102
Chapter 2 .NET Programming
Example
2.6.23 TXT2PACKEDDBFCONVERTER.PROGRESSCHANGEDDELEGATE
Namespace: CipherLab.Data.ConverterLib
Syntax
Parameters
sender
Type: CipherLab.Data.ConverterLib.Txt2PackedDbfConverter
Type: System.ComponentModel.ProgressChangedEventArgs
Example
103
Data Converter User Guide
{
Console.WriteLine("Current Percentage is = {0}", e.ProgressPercentage);
}
2.6.24 TXT2PACKEDDBFCONVERTER.RUNWORKERCOMPLETEDDELEGATE
Namespace: CipherLab.Data.ConverterLib
Syntax
Parameters
sender
Type: CipherLab.Data.ConverterLib.Txt2PackedDbfConverter
Type: System.ComponentModel.RunWorkerCompletedEventArgs
Example
104
Chapter 2 .NET Programming
{
if (e.Cancelled)
Console.WriteLine("Canceled");
else
{
if (e.Error != null)
Console.WriteLine(e.Error.Message);
else
Console.WriteLine("Completed");
}
}
}
105
Data Converter User Guide
2.7.1 DBF2TXTCONVERTER.PROGRESSCHANGED
Namespace: CipherLab.Data.ConverterLib
Syntax
Example
2.7.2 DBF2TXTCONVERTER.RUNWORKERCOMPLETED
The event occurs when the conversion has completed, has been canceled, or has raised
an exception.
Namespace: CipherLab.Data.ConverterLib
Syntax
Example
106
Chapter 2 .NET Programming
2.7.3 TXT2DBFCONVERTER.PROGRESSCHANGED
Namespace: CipherLab.Data.ConverterLib
Syntax
Example
2.7.4 TXT2DBFCONVERTER.RUNWORKERCOMPLETED
The event occurs when the conversion has completed, has been canceled, or has raised
an exception.
Namespace: CipherLab.Data.ConverterLib
Syntax
Example
107
Data Converter User Guide
2.7.5 TXT2PACKEDDBFCONVERTER.PROGRESSCHANGED
Namespace: CipherLab.Data.ConverterLib
Syntax
Example
2.7.6 TXT2PACKEDDBFCONVERTER.RUNWORKERCOPMLETED
The event occurs when the conversion has completed, has been canceled, or has raised
an exception.
Namespace: CipherLab.Data.ConverterLib
Syntax
Example
108