1065 lines
33 KiB
ObjectPascal
1065 lines
33 KiB
ObjectPascal
{**************************************************************************************************}
|
|
{ }
|
|
{ Ray's Jedi Projects }
|
|
{ }
|
|
{ The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); }
|
|
{ you may not use this file except in compliance with the License. You may obtain a copy of the }
|
|
{ License at http://www.mozilla.org/MPL/ }
|
|
{ }
|
|
{ Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF }
|
|
{ ANY KIND, either express or implied. See the License for the specific language governing rights }
|
|
{ and limitations under the License. }
|
|
{ }
|
|
{ The Original Code is EDICOM_ANSIX12.pas. }
|
|
{ }
|
|
{ The Initial Developer of the Original Code is Raymond Alexander. }
|
|
{ Portions created by Raymond Alexander are Copyright Raymond Alexander. All rights reserved. }
|
|
{ }
|
|
{ Contributor(s): }
|
|
{ }
|
|
{**************************************************************************************************}
|
|
{ }
|
|
{ This is an experimental unit for COM interop with other languages. }
|
|
{ }
|
|
{ Unit owner: Raymond Alexander }
|
|
{ Date created: May 29, 2004 }
|
|
{ Last modified: May 30, 2004 }
|
|
{ Additional Info: }
|
|
{ E-Mail at RaysDelphiBox3@hotmail.com }
|
|
{ For latest EDI specific updates see http://sourceforge.net/projects/edisdk }
|
|
{ See home page for latest news & events and online help. }
|
|
{ }
|
|
{**************************************************************************************************}
|
|
unit JclEDICOM_ANSIX12;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, ActiveX, Classes, ComObj, StdVcl, EDISDK_TLB,
|
|
JclEDI, JclEDI_ANSIX12;
|
|
|
|
type
|
|
|
|
IEDICOMInternalInterface = interface
|
|
['{72227476-D4D4-448C-9C28-08552373C737}']
|
|
procedure SetInternalEDIObjectRef(EDIObject: TEDIObject);
|
|
end;
|
|
|
|
TEDICOMDelimiters = class(TAutoObject, IEDICOMInternalInterface, IEDICOMDelimiters)
|
|
private
|
|
FDelimiters: TEDIDelimiters;
|
|
protected
|
|
function Get_SD: WideString; safecall;
|
|
procedure Set_SD(const Value: WideString); safecall;
|
|
function Get_ED: WideString; safecall;
|
|
procedure Set_ED(const Value: WideString); safecall;
|
|
function Get_SS: WideString; safecall;
|
|
procedure Set_SS(const Value: WideString); safecall;
|
|
function Get_SDLen: Integer; safecall;
|
|
function Get_EDLen: Integer; safecall;
|
|
function Get_SSLen: Integer; safecall;
|
|
public
|
|
procedure Initialize; override;
|
|
destructor Destroy; override;
|
|
procedure SetInternalEDIObjectRef(EDIObject: TEDIObject);
|
|
end;
|
|
|
|
TEDICOMElement = class(TAutoObject, IEDICOMInternalInterface, IEDICOMElement)
|
|
private
|
|
FDelimitersIntf: TEDICOMDelimiters;
|
|
FElement: TEDIElement;
|
|
protected
|
|
function Assemble: WideString; safecall;
|
|
procedure Disassemble; safecall;
|
|
function Get_State: Integer; safecall;
|
|
function Get_Data: WideString; safecall;
|
|
procedure Set_Data(const Value: WideString); safecall;
|
|
function Get_DataLength: Integer; safecall;
|
|
function Get_Delimiters: IEDICOMDelimiters; safecall;
|
|
property Delimiters: IEDICOMDelimiters read Get_Delimiters;
|
|
property State: Integer read Get_State;
|
|
property Data: WideString read Get_Data write Set_Data;
|
|
property DataLength: Integer read Get_DataLength;
|
|
public
|
|
procedure Initialize; override;
|
|
destructor Destroy; override;
|
|
procedure SetInternalEDIObjectRef(EDIObject: TEDIObject);
|
|
end;
|
|
|
|
TEDICOMSegment = class(TAutoObject, IEDICOMInternalInterface, IEDICOMSegment)
|
|
private
|
|
FDelimitersIntf: TEDICOMDelimiters;
|
|
FElementIntf: TEDICOMElement;
|
|
FSegment: TEDISegment;
|
|
protected
|
|
function Assemble: WideString; safecall;
|
|
procedure Disassemble; safecall;
|
|
function Get_State: Integer; safecall;
|
|
function Get_Data: WideString; safecall;
|
|
procedure Set_Data(const Value: WideString); safecall;
|
|
function Get_DataLength: Integer; safecall;
|
|
property State: Integer read Get_State;
|
|
property Data: WideString read Get_Data write Set_Data;
|
|
property DataLength: Integer read Get_DataLength;
|
|
//
|
|
function AddElement: Integer; safecall;
|
|
function InsertElement(InsertIndex: Integer): Integer; safecall;
|
|
procedure DeleteElement(Index: Integer); safecall;
|
|
function AddElements(Count: Integer): Integer; safecall;
|
|
function InsertElements(InsertIndex: Integer; Count: Integer): Integer; safecall;
|
|
procedure DeleteElements; safecall;
|
|
|
|
function Get_Element(Index: Integer): IEDICOMElement; safecall;
|
|
property Element[Index: Integer]: IEDICOMElement read Get_Element;
|
|
function Get_SegmentId: WideString; safecall;
|
|
procedure Set_SegmentId(const Value: WideString); safecall;
|
|
|
|
function Get_ElementCount: Integer; safecall;
|
|
property ElementCount: Integer read Get_ElementCount;
|
|
|
|
function Get_Delimiters: IEDICOMDelimiters; safecall;
|
|
property Delimiters: IEDICOMDelimiters read Get_Delimiters;
|
|
property SegmentId: WideString read Get_SegmentId write Set_SegmentId;
|
|
public
|
|
procedure Initialize; override;
|
|
destructor Destroy; override;
|
|
procedure SetInternalEDIObjectRef(EDIObject: TEDIObject);
|
|
end;
|
|
|
|
TEDICOMTransactionSet = class(TAutoObject, IEDICOMInternalInterface, IEDICOMTransactionSet)
|
|
private
|
|
FDelimitersIntf: TEDICOMDelimiters;
|
|
FSegmentIntf: TEDICOMSegment;
|
|
FTransactionSet: TEDITransactionSet;
|
|
protected
|
|
function Assemble: WideString; safecall;
|
|
procedure Disassemble; safecall;
|
|
function Get_State: Integer; safecall;
|
|
function Get_Data: WideString; safecall;
|
|
procedure Set_Data(const Value: WideString); safecall;
|
|
function Get_DataLength: Integer; safecall;
|
|
property State: Integer read Get_State;
|
|
property Data: WideString read Get_Data write Set_Data;
|
|
property DataLength: Integer read Get_DataLength;
|
|
//
|
|
function AddSegment: Integer; safecall;
|
|
function InsertSegment(InsertIndex: Integer): Integer; safecall;
|
|
procedure DeleteSegment(Index: Integer); safecall;
|
|
function AddSegments(Count: Integer): Integer; safecall;
|
|
function InsertSegments(InsertIndex: Integer; Count: Integer): Integer; safecall;
|
|
procedure DeleteSegments; safecall;
|
|
|
|
function Get_SegmentST: IEDICOMSegment; safecall;
|
|
function Get_SegmentSE: IEDICOMSegment; safecall;
|
|
function Get_Segment(Index: Integer): IEDICOMSegment; safecall;
|
|
|
|
function Get_SegmentCount: Integer; safecall;
|
|
property SegmentCount: Integer read Get_SegmentCount;
|
|
|
|
function Get_Delimiters: IEDICOMDelimiters; safecall;
|
|
property Delimiters: IEDICOMDelimiters read Get_Delimiters;
|
|
property SegmentST: IEDICOMSegment read Get_SegmentST;
|
|
property SegmentSE: IEDICOMSegment read Get_SegmentSE;
|
|
property Segment[Index: Integer]: IEDICOMSegment read Get_Segment;
|
|
public
|
|
procedure Initialize; override;
|
|
destructor Destroy; override;
|
|
procedure SetInternalEDIObjectRef(EDIObject: TEDIObject);
|
|
end;
|
|
|
|
TEDICOMFunctionalGroup = class(TAutoObject, IEDICOMInternalInterface, IEDICOMFunctionalGroup)
|
|
private
|
|
FDelimitersIntf: TEDICOMDelimiters;
|
|
FSegmentIntf: TEDICOMSegment;
|
|
FTransactionSetIntf: TEDICOMTransactionSet;
|
|
FFunctionalGroup: TEDIFunctionalGroup;
|
|
protected
|
|
function Assemble: WideString; safecall;
|
|
procedure Disassemble; safecall;
|
|
function Get_State: Integer; safecall;
|
|
function Get_Data: WideString; safecall;
|
|
procedure Set_Data(const Value: WideString); safecall;
|
|
function Get_DataLength: Integer; safecall;
|
|
property State: Integer read Get_State;
|
|
property Data: WideString read Get_Data write Set_Data;
|
|
property DataLength: Integer read Get_DataLength;
|
|
//
|
|
function AddTransactionSet: Integer; safecall;
|
|
function InsertTransactionSet(InsertIndex: Integer): Integer; safecall;
|
|
procedure DeleteTransactionSet(Index: Integer); safecall;
|
|
function AddTransactionSets(Count: Integer): Integer; safecall;
|
|
function InsertTransactionSets(InsertIndex: Integer; Count: Integer): Integer; safecall;
|
|
procedure DeleteTransactionSets; safecall;
|
|
|
|
function Get_SegmentGS: IEDICOMSegment; safecall;
|
|
function Get_SegmentGE: IEDICOMSegment; safecall;
|
|
function Get_TransactionSet(Index: Integer): IEDICOMTransactionSet; safecall;
|
|
|
|
function Get_TransactionSetCount: Integer; safecall;
|
|
property TransactionSetCount: Integer read Get_TransactionSetCount;
|
|
|
|
function Get_Delimiters: IEDICOMDelimiters; safecall;
|
|
property Delimiters: IEDICOMDelimiters read Get_Delimiters;
|
|
property SegmentGS: IEDICOMSegment read Get_SegmentGS;
|
|
property SegmentGE: IEDICOMSegment read Get_SegmentGE;
|
|
property TransactionSet[Index: Integer]: IEDICOMTransactionSet read Get_TransactionSet;
|
|
public
|
|
procedure Initialize; override;
|
|
destructor Destroy; override;
|
|
procedure SetInternalEDIObjectRef(EDIObject: TEDIObject);
|
|
end;
|
|
|
|
TEDICOMInterchangeControl = class(TAutoObject, IEDICOMInternalInterface, IEDICOMInterchangeControl)
|
|
private
|
|
FDelimitersIntf: TEDICOMDelimiters;
|
|
FSegmentIntf: TEDICOMSegment;
|
|
FFunctionalGroupIntf: TEDICOMFunctionalGroup;
|
|
FInterchangeControl: TEDIInterchangeControl;
|
|
protected
|
|
function Assemble: WideString; safecall;
|
|
procedure Disassemble; safecall;
|
|
function Get_State: Integer; safecall;
|
|
function Get_Data: WideString; safecall;
|
|
procedure Set_Data(const Value: WideString); safecall;
|
|
function Get_DataLength: Integer; safecall;
|
|
property State: Integer read Get_State;
|
|
property Data: WideString read Get_Data write Set_Data;
|
|
property DataLength: Integer read Get_DataLength;
|
|
//
|
|
procedure SetDelimiters(const SD: WideString; const ED: WideString; const SS: WideString); safecall;
|
|
|
|
function AddFunctionalGroup: Integer; safecall;
|
|
function InsertFunctionalGroup(InsertIndex: Integer): Integer; safecall;
|
|
procedure DeleteFunctionalGroup(Index: Integer); safecall;
|
|
function AddFunctionalGroups(InsertIndex: Integer): Integer; safecall;
|
|
function InsertFunctionalGroups(InsertIndex: Integer; Count: Integer): Integer; safecall;
|
|
procedure DeleteFunctionalGroups; safecall;
|
|
|
|
function Get_SegmentISA: IEDICOMSegment; safecall;
|
|
function Get_SegmentIEA: IEDICOMSegment; safecall;
|
|
function Get_FunctionalGroup(Index: Integer): IEDICOMFunctionalGroup; safecall;
|
|
|
|
function Get_FunctionalGroupCount: Integer; safecall;
|
|
property FunctionalGroupCount: Integer read Get_FunctionalGroupCount;
|
|
|
|
function Get_Delimiters: IEDICOMDelimiters; safecall;
|
|
property Delimiters: IEDICOMDelimiters read Get_Delimiters;
|
|
property SegmentISA: IEDICOMSegment read Get_SegmentISA;
|
|
property SegmentIEA: IEDICOMSegment read Get_SegmentIEA;
|
|
property FunctionalGroup[Index: Integer]: IEDICOMFunctionalGroup read Get_FunctionalGroup;
|
|
public
|
|
procedure Initialize; override;
|
|
destructor Destroy; override;
|
|
procedure SetInternalEDIObjectRef(EDIObject: TEDIObject);
|
|
end;
|
|
|
|
TEDICOMFile = class(TAutoObject, IEDICOMFile)
|
|
private
|
|
FDelimitersIntf: TEDICOMDelimiters;
|
|
FInterchangeControlIntf: TEDICOMInterchangeControl;
|
|
FEDIFile: TEDIFile;
|
|
protected
|
|
function Assemble: WideString; safecall;
|
|
procedure Disassemble; safecall;
|
|
function Get_State: Integer; safecall;
|
|
function Get_Data: WideString; safecall;
|
|
procedure Set_Data(const Value: WideString); safecall;
|
|
function Get_DataLength: Integer; safecall;
|
|
property State: Integer read Get_State;
|
|
property Data: WideString read Get_Data write Set_Data;
|
|
property DataLength: Integer read Get_DataLength;
|
|
//
|
|
procedure LoadFromFile(const FileName: WideString); safecall;
|
|
procedure ReLoadFromFile; safecall;
|
|
procedure SaveToFile; safecall;
|
|
procedure SaveAsToFile(const FileName: WideString); safecall;
|
|
function Get_FileName: WideString; safecall;
|
|
procedure Set_FileName(const Value: WideString); safecall;
|
|
function Get_Interchange(Index: Integer): IEDICOMInterchangeControl; safecall;
|
|
function Get_Options: Byte; safecall;
|
|
procedure Set_Options(Value: Byte); safecall;
|
|
|
|
function AddInterchange: Integer; safecall;
|
|
function InsertInterchange(InsertIndex: Integer): Integer; safecall;
|
|
procedure DeleteInterchange(Index: Integer); safecall;
|
|
function AddInterchanges(Count: Integer): Integer; safecall;
|
|
function InsertInterchanges(InsertIndex: Integer; Count: Integer): Integer; safecall;
|
|
procedure DeleteInterchanges; safecall;
|
|
|
|
function Get_InterchangeCount: Integer; safecall;
|
|
property InterchangeCount: Integer read Get_InterchangeCount;
|
|
|
|
function Get_Delimiters: IEDICOMDelimiters; safecall;
|
|
property Delimiters: IEDICOMDelimiters read Get_Delimiters;
|
|
property FileName: WideString read Get_FileName write Set_FileName;
|
|
property Interchange[Index: Integer]: IEDICOMInterchangeControl read Get_Interchange;
|
|
property Options: Byte read Get_Options write Set_Options;
|
|
public
|
|
procedure Initialize; override;
|
|
destructor Destroy; override;
|
|
end;
|
|
|
|
implementation
|
|
|
|
uses ComServ, SysUtils;
|
|
|
|
{ TEDICOMElement }
|
|
|
|
function TEDICOMElement.Assemble: WideString;
|
|
begin
|
|
Result := FElement.Assemble;
|
|
end;
|
|
|
|
destructor TEDICOMElement.Destroy;
|
|
begin
|
|
FDelimitersIntf.ObjRelease;
|
|
FDelimitersIntf := nil;
|
|
FElement := nil;
|
|
inherited;
|
|
end;
|
|
|
|
procedure TEDICOMElement.Disassemble;
|
|
begin
|
|
FElement.Disassemble;
|
|
end;
|
|
|
|
function TEDICOMElement.Get_Data: WideString;
|
|
begin
|
|
Result := FElement.Data;
|
|
end;
|
|
|
|
function TEDICOMElement.Get_DataLength: Integer;
|
|
begin
|
|
Result := FElement.DataLength;
|
|
end;
|
|
|
|
function TEDICOMElement.Get_Delimiters: IEDICOMDelimiters;
|
|
begin
|
|
FDelimitersIntf.SetInternalEDIObjectRef(FElement.Delimiters);
|
|
Result := FDelimitersIntf;
|
|
end;
|
|
|
|
function TEDICOMElement.Get_State: Integer;
|
|
begin
|
|
Result := Integer(FElement.State);
|
|
end;
|
|
|
|
procedure TEDICOMElement.Initialize;
|
|
begin
|
|
inherited;
|
|
FDelimitersIntf := TEDICOMDelimiters.Create;
|
|
FDelimitersIntf.ObjAddRef;
|
|
end;
|
|
|
|
procedure TEDICOMElement.SetInternalEDIObjectRef(EDIObject: TEDIObject);
|
|
begin
|
|
FElement := TEDIElement(EDIObject);
|
|
end;
|
|
|
|
procedure TEDICOMElement.Set_Data(const Value: WideString);
|
|
begin
|
|
FElement.Data := Value;
|
|
end;
|
|
|
|
{ TEDICOMSegment }
|
|
|
|
function TEDICOMSegment.AddElement: Integer;
|
|
begin
|
|
Result := FSegment.AddElement;
|
|
end;
|
|
|
|
function TEDICOMSegment.AddElements(Count: Integer): Integer;
|
|
begin
|
|
Result := FSegment.AddElements(Count);
|
|
end;
|
|
|
|
function TEDICOMSegment.Assemble: WideString;
|
|
begin
|
|
Result := FSegment.Assemble;
|
|
end;
|
|
|
|
procedure TEDICOMSegment.DeleteElement(Index: Integer);
|
|
begin
|
|
FSegment.DeleteElement(Index);
|
|
end;
|
|
|
|
procedure TEDICOMSegment.DeleteElements;
|
|
begin
|
|
FSegment.DeleteElements;
|
|
end;
|
|
|
|
destructor TEDICOMSegment.Destroy;
|
|
begin
|
|
FElementIntf.ObjRelease;
|
|
FElementIntf := nil;
|
|
FDelimitersIntf.ObjRelease;
|
|
FDelimitersIntf := nil;
|
|
FSegment := nil;
|
|
inherited;
|
|
end;
|
|
|
|
procedure TEDICOMSegment.Disassemble;
|
|
begin
|
|
FSegment.Disassemble;
|
|
end;
|
|
|
|
function TEDICOMSegment.Get_Data: WideString;
|
|
begin
|
|
Result := FSegment.Data;
|
|
end;
|
|
|
|
function TEDICOMSegment.Get_DataLength: Integer;
|
|
begin
|
|
Result := FSegment.DataLength;
|
|
end;
|
|
|
|
function TEDICOMSegment.Get_Delimiters: IEDICOMDelimiters;
|
|
begin
|
|
FDelimitersIntf.SetInternalEDIObjectRef(FSegment.Delimiters);
|
|
Result := FDelimitersIntf;
|
|
end;
|
|
|
|
function TEDICOMSegment.Get_Element(Index: Integer): IEDICOMElement;
|
|
begin
|
|
FElementIntf.SetInternalEDIObjectRef(FSegment[Index]);
|
|
Result := FElementIntf;
|
|
end;
|
|
|
|
function TEDICOMSegment.Get_ElementCount: Integer;
|
|
begin
|
|
Result := FSegment.ElementCount;
|
|
end;
|
|
|
|
function TEDICOMSegment.Get_SegmentId: WideString;
|
|
begin
|
|
Result := FSegment.SegmentId;
|
|
end;
|
|
|
|
function TEDICOMSegment.Get_State: Integer;
|
|
begin
|
|
Result := Integer(FSegment.State);
|
|
end;
|
|
|
|
procedure TEDICOMSegment.Initialize;
|
|
begin
|
|
inherited;
|
|
FDelimitersIntf := TEDICOMDelimiters.Create;
|
|
FDelimitersIntf.ObjAddRef;
|
|
FElementIntf := TEDICOMElement.Create;
|
|
FElementIntf.ObjAddRef;
|
|
FSegment := nil;
|
|
end;
|
|
|
|
function TEDICOMSegment.InsertElement(InsertIndex: Integer): Integer;
|
|
begin
|
|
Result := FSegment.InsertElement(InsertIndex);
|
|
end;
|
|
|
|
function TEDICOMSegment.InsertElements(InsertIndex, Count: Integer): Integer;
|
|
begin
|
|
Result := FSegment.InsertElements(InsertIndex, Count);
|
|
end;
|
|
|
|
procedure TEDICOMSegment.SetInternalEDIObjectRef(EDIObject: TEDIObject);
|
|
begin
|
|
FSegment := TEDISegment(EDIObject);
|
|
end;
|
|
|
|
procedure TEDICOMSegment.Set_Data(const Value: WideString);
|
|
begin
|
|
FSegment.Data := Value;
|
|
end;
|
|
|
|
procedure TEDICOMSegment.Set_SegmentId(const Value: WideString);
|
|
begin
|
|
FSegment.SegmentId := Value;
|
|
end;
|
|
|
|
{ TEDICOMTransactionSet }
|
|
|
|
function TEDICOMTransactionSet.AddSegment: Integer;
|
|
begin
|
|
Result := FTransactionSet.AddSegment;
|
|
end;
|
|
|
|
function TEDICOMTransactionSet.AddSegments(Count: Integer): Integer;
|
|
begin
|
|
Result := FTransactionSet.AddSegments(Count);
|
|
end;
|
|
|
|
function TEDICOMTransactionSet.Assemble: WideString;
|
|
begin
|
|
Result := FTransactionSet.Assemble;
|
|
end;
|
|
|
|
procedure TEDICOMTransactionSet.DeleteSegment(Index: Integer);
|
|
begin
|
|
FTransactionSet.DeleteSegment(Index);
|
|
end;
|
|
|
|
procedure TEDICOMTransactionSet.DeleteSegments;
|
|
begin
|
|
FTransactionSet.DeleteSegments;
|
|
end;
|
|
|
|
destructor TEDICOMTransactionSet.Destroy;
|
|
begin
|
|
FSegmentIntf.ObjRelease;
|
|
FSegmentIntf := nil;
|
|
FDelimitersIntf.ObjRelease;
|
|
FDelimitersIntf := nil;
|
|
FTransactionSet := nil;
|
|
inherited;
|
|
end;
|
|
|
|
procedure TEDICOMTransactionSet.Disassemble;
|
|
begin
|
|
FTransactionSet.Disassemble;
|
|
end;
|
|
|
|
function TEDICOMTransactionSet.Get_Data: WideString;
|
|
begin
|
|
Result := FTransactionSet.Data;
|
|
end;
|
|
|
|
function TEDICOMTransactionSet.Get_DataLength: Integer;
|
|
begin
|
|
Result := FTransactionSet.DataLength;
|
|
end;
|
|
|
|
function TEDICOMTransactionSet.Get_Delimiters: IEDICOMDelimiters;
|
|
begin
|
|
FDelimitersIntf.SetInternalEDIObjectRef(FTransactionSet.Delimiters);
|
|
Result := FDelimitersIntf;
|
|
end;
|
|
|
|
function TEDICOMTransactionSet.Get_Segment(Index: Integer): IEDICOMSegment;
|
|
begin
|
|
FSegmentIntf.SetInternalEDIObjectRef(FTransactionSet[Index]);
|
|
Result := FSegmentIntf;
|
|
end;
|
|
|
|
function TEDICOMTransactionSet.Get_SegmentCount: Integer;
|
|
begin
|
|
Result := FTransactionSet.SegmentCount;
|
|
end;
|
|
|
|
function TEDICOMTransactionSet.Get_SegmentSE: IEDICOMSegment;
|
|
begin
|
|
FSegmentIntf.SetInternalEDIObjectRef(FTransactionSet.SegmentSE);
|
|
Result := FSegmentIntf;
|
|
end;
|
|
|
|
function TEDICOMTransactionSet.Get_SegmentST: IEDICOMSegment;
|
|
begin
|
|
FSegmentIntf.SetInternalEDIObjectRef(FTransactionSet.SegmentST);
|
|
Result := FSegmentIntf;
|
|
end;
|
|
|
|
function TEDICOMTransactionSet.Get_State: Integer;
|
|
begin
|
|
Result := Integer(FTransactionSet.State);
|
|
end;
|
|
|
|
procedure TEDICOMTransactionSet.Initialize;
|
|
begin
|
|
inherited;
|
|
FDelimitersIntf := TEDICOMDelimiters.Create;
|
|
FDelimitersIntf.ObjAddRef;
|
|
FSegmentIntf := TEDICOMSegment.Create;
|
|
FSegmentIntf.ObjAddRef;
|
|
FTransactionSet := nil;
|
|
end;
|
|
|
|
function TEDICOMTransactionSet.InsertSegment(InsertIndex: Integer): Integer;
|
|
begin
|
|
Result := FTransactionSet.InsertSegment(InsertIndex);
|
|
end;
|
|
|
|
function TEDICOMTransactionSet.InsertSegments(InsertIndex, Count: Integer): Integer;
|
|
begin
|
|
Result := FTransactionSet.InsertSegments(InsertIndex, Count);
|
|
end;
|
|
|
|
procedure TEDICOMTransactionSet.SetInternalEDIObjectRef(EDIObject: TEDIObject);
|
|
begin
|
|
FTransactionSet := TEDITransactionSet(EDIObject);
|
|
end;
|
|
|
|
procedure TEDICOMTransactionSet.Set_Data(const Value: WideString);
|
|
begin
|
|
FTransactionSet.Data := Value;
|
|
end;
|
|
|
|
{ TEDICOMFunctionalGroup }
|
|
|
|
function TEDICOMFunctionalGroup.AddTransactionSet: Integer;
|
|
begin
|
|
Result := FFunctionalGroup.AddTransactionSet;
|
|
end;
|
|
|
|
function TEDICOMFunctionalGroup.AddTransactionSets(Count: Integer): Integer;
|
|
begin
|
|
Result := FFunctionalGroup.AddTransactionSets(Count);
|
|
end;
|
|
|
|
function TEDICOMFunctionalGroup.Assemble: WideString;
|
|
begin
|
|
Result := FFunctionalGroup.Assemble;
|
|
end;
|
|
|
|
procedure TEDICOMFunctionalGroup.DeleteTransactionSet(Index: Integer);
|
|
begin
|
|
FFunctionalGroup.DeleteTransactionSet(Index);
|
|
end;
|
|
|
|
procedure TEDICOMFunctionalGroup.DeleteTransactionSets;
|
|
begin
|
|
FFunctionalGroup.DeleteTransactionSets;
|
|
end;
|
|
|
|
destructor TEDICOMFunctionalGroup.Destroy;
|
|
begin
|
|
FTransactionSetIntf.ObjRelease;
|
|
FTransactionSetIntf := nil;
|
|
FSegmentIntf.ObjRelease;
|
|
FSegmentIntf := nil;
|
|
FDelimitersIntf.ObjRelease;
|
|
FDelimitersIntf := nil;
|
|
FFunctionalGroup := nil;
|
|
inherited;
|
|
end;
|
|
|
|
procedure TEDICOMFunctionalGroup.Disassemble;
|
|
begin
|
|
FFunctionalGroup.Disassemble;
|
|
end;
|
|
|
|
function TEDICOMFunctionalGroup.Get_Data: WideString;
|
|
begin
|
|
Result := FFunctionalGroup.Data;
|
|
end;
|
|
|
|
function TEDICOMFunctionalGroup.Get_DataLength: Integer;
|
|
begin
|
|
Result := FFunctionalGroup.DataLength;
|
|
end;
|
|
|
|
function TEDICOMFunctionalGroup.Get_Delimiters: IEDICOMDelimiters;
|
|
begin
|
|
FDelimitersIntf.SetInternalEDIObjectRef(FFunctionalGroup.Delimiters);
|
|
Result := FDelimitersIntf;
|
|
end;
|
|
|
|
function TEDICOMFunctionalGroup.Get_SegmentGE: IEDICOMSegment;
|
|
begin
|
|
FSegmentIntf.SetInternalEDIObjectRef(FFunctionalGroup.SegmentGE);
|
|
Result := FSegmentIntf;
|
|
end;
|
|
|
|
function TEDICOMFunctionalGroup.Get_SegmentGS: IEDICOMSegment;
|
|
begin
|
|
FSegmentIntf.SetInternalEDIObjectRef(FFunctionalGroup.SegmentGS);
|
|
Result := FSegmentIntf;
|
|
end;
|
|
|
|
function TEDICOMFunctionalGroup.Get_State: Integer;
|
|
begin
|
|
Result := Integer(FFunctionalGroup.State);
|
|
end;
|
|
|
|
function TEDICOMFunctionalGroup.Get_TransactionSet(Index: Integer): IEDICOMTransactionSet;
|
|
begin
|
|
FTransactionSetIntf.SetInternalEDIObjectRef(FFunctionalGroup[Index]);
|
|
Result := FTransactionSetIntf;
|
|
end;
|
|
|
|
function TEDICOMFunctionalGroup.Get_TransactionSetCount: Integer;
|
|
begin
|
|
Result := FFunctionalGroup.TransactionSetCount;
|
|
end;
|
|
|
|
procedure TEDICOMFunctionalGroup.Initialize;
|
|
begin
|
|
inherited;
|
|
FDelimitersIntf := TEDICOMDelimiters.Create;
|
|
FDelimitersIntf.ObjAddRef;
|
|
FSegmentIntf := TEDICOMSegment.Create;
|
|
FSegmentIntf.ObjAddRef;
|
|
FTransactionSetIntf := TEDICOMTransactionSet.Create;
|
|
FTransactionSetIntf.ObjAddRef;
|
|
FFunctionalGroup := nil;
|
|
end;
|
|
|
|
function TEDICOMFunctionalGroup.InsertTransactionSet(InsertIndex: Integer): Integer;
|
|
begin
|
|
Result := FFunctionalGroup.InsertTransactionSet(InsertIndex);
|
|
end;
|
|
|
|
function TEDICOMFunctionalGroup.InsertTransactionSets(InsertIndex, Count: Integer): Integer;
|
|
begin
|
|
Result := FFunctionalGroup.InsertTransactionSets(InsertIndex, Count);
|
|
end;
|
|
|
|
procedure TEDICOMFunctionalGroup.SetInternalEDIObjectRef(EDIObject: TEDIObject);
|
|
begin
|
|
FFunctionalGroup := TEDIFunctionalGroup(EDIObject);
|
|
end;
|
|
|
|
procedure TEDICOMFunctionalGroup.Set_Data(const Value: WideString);
|
|
begin
|
|
FFunctionalGroup.Data := Value;
|
|
end;
|
|
|
|
{ TEDICOMInterchangeControl }
|
|
|
|
function TEDICOMInterchangeControl.Assemble: WideString;
|
|
begin
|
|
Result := FInterchangeControl.Assemble;
|
|
end;
|
|
|
|
destructor TEDICOMInterchangeControl.Destroy;
|
|
begin
|
|
FFunctionalGroupIntf.ObjRelease;
|
|
FFunctionalGroupIntf := nil;
|
|
FSegmentIntf.ObjRelease;
|
|
FSegmentIntf := nil;
|
|
FDelimitersIntf.ObjRelease;
|
|
FDelimitersIntf := nil;
|
|
FInterchangeControl := nil;
|
|
inherited;
|
|
end;
|
|
|
|
procedure TEDICOMInterchangeControl.Disassemble;
|
|
begin
|
|
FInterchangeControl.Disassemble;
|
|
end;
|
|
|
|
function TEDICOMInterchangeControl.Get_Data: WideString;
|
|
begin
|
|
Result := FInterchangeControl.Data;
|
|
end;
|
|
|
|
function TEDICOMInterchangeControl.Get_DataLength: Integer;
|
|
begin
|
|
Result := FInterchangeControl.DataLength;
|
|
end;
|
|
|
|
function TEDICOMInterchangeControl.Get_FunctionalGroup(Index: Integer): IEDICOMFunctionalGroup;
|
|
begin
|
|
FFunctionalGroupIntf.SetInternalEDIObjectRef(FInterchangeControl[Index]);
|
|
Result := FFunctionalGroupIntf;
|
|
end;
|
|
|
|
function TEDICOMInterchangeControl.Get_SegmentIEA: IEDICOMSegment;
|
|
begin
|
|
FSegmentIntf.SetInternalEDIObjectRef(FInterchangeControl.SegmentIEA);
|
|
Result := FSegmentIntf;
|
|
end;
|
|
|
|
function TEDICOMInterchangeControl.Get_SegmentISA: IEDICOMSegment;
|
|
begin
|
|
FSegmentIntf.SetInternalEDIObjectRef(FInterchangeControl.SegmentISA);
|
|
Result := FSegmentIntf;
|
|
end;
|
|
|
|
function TEDICOMInterchangeControl.Get_State: Integer;
|
|
begin
|
|
Result := Integer(FInterchangeControl.State);
|
|
end;
|
|
|
|
procedure TEDICOMInterchangeControl.Initialize;
|
|
begin
|
|
inherited;
|
|
FDelimitersIntf := TEDICOMDelimiters.Create;
|
|
FDelimitersIntf.ObjAddRef;
|
|
FSegmentIntf := TEDICOMSegment.Create;
|
|
FSegmentIntf.ObjAddRef;
|
|
FFunctionalGroupIntf := TEDICOMFunctionalGroup.Create;
|
|
FFunctionalGroupIntf.ObjAddRef;
|
|
FInterchangeControl := nil;
|
|
end;
|
|
|
|
procedure TEDICOMInterchangeControl.Set_Data(const Value: WideString);
|
|
begin
|
|
FInterchangeControl.Data := Value;
|
|
end;
|
|
|
|
procedure TEDICOMInterchangeControl.SetInternalEDIObjectRef(EDIObject: TEDIObject);
|
|
begin
|
|
FInterchangeControl := TEDIInterchangeControl(EDIObject);
|
|
end;
|
|
|
|
function TEDICOMInterchangeControl.AddFunctionalGroup: Integer;
|
|
begin
|
|
Result := FInterchangeControl.AddFunctionalGroup;
|
|
end;
|
|
|
|
function TEDICOMInterchangeControl.AddFunctionalGroups(InsertIndex: Integer): Integer;
|
|
begin
|
|
Result := FInterchangeControl.InsertFunctionalGroup(InsertIndex);
|
|
end;
|
|
|
|
procedure TEDICOMInterchangeControl.DeleteFunctionalGroup(Index: Integer);
|
|
begin
|
|
FInterchangeControl.DeleteFunctionalGroup(Index);
|
|
end;
|
|
|
|
procedure TEDICOMInterchangeControl.DeleteFunctionalGroups;
|
|
begin
|
|
FInterchangeControl.DeleteFunctionalGroups;
|
|
end;
|
|
|
|
function TEDICOMInterchangeControl.InsertFunctionalGroup(InsertIndex: Integer): Integer;
|
|
begin
|
|
Result := FInterchangeControl.InsertFunctionalGroup(InsertIndex);
|
|
end;
|
|
|
|
function TEDICOMInterchangeControl.InsertFunctionalGroups(InsertIndex, Count: Integer): Integer;
|
|
begin
|
|
Result := FInterchangeControl.InsertFunctionalGroups(InsertIndex, Count);
|
|
end;
|
|
|
|
function TEDICOMInterchangeControl.Get_Delimiters: IEDICOMDelimiters;
|
|
begin
|
|
FDelimitersIntf.SetInternalEDIObjectRef(FInterchangeControl.Delimiters);
|
|
Result := FDelimitersIntf;
|
|
end;
|
|
|
|
procedure TEDICOMInterchangeControl.SetDelimiters(const SD, ED, SS: WideString);
|
|
begin
|
|
FInterchangeControl.Delimiters := TEDIDelimiters.Create(SD, ED, SS);
|
|
end;
|
|
|
|
function TEDICOMInterchangeControl.Get_FunctionalGroupCount: Integer;
|
|
begin
|
|
Result := FInterchangeControl.FunctionalGroupCount;
|
|
end;
|
|
|
|
{ TEDICOMFile }
|
|
|
|
function TEDICOMFile.AddInterchange: Integer;
|
|
begin
|
|
Result := FEDIFile.AddInterchange;
|
|
end;
|
|
|
|
function TEDICOMFile.AddInterchanges(Count: Integer): Integer;
|
|
begin
|
|
Result := FEDIFile.AddInterchanges(Count);
|
|
end;
|
|
|
|
function TEDICOMFile.Assemble: WideString;
|
|
begin
|
|
Result := FEDIFile.Assemble;
|
|
end;
|
|
|
|
procedure TEDICOMFile.DeleteInterchange(Index: Integer);
|
|
begin
|
|
FEDIFile.DeleteInterchange(Index);
|
|
end;
|
|
|
|
procedure TEDICOMFile.DeleteInterchanges;
|
|
begin
|
|
FEDIFile.DeleteInterchanges;
|
|
end;
|
|
|
|
destructor TEDICOMFile.Destroy;
|
|
begin
|
|
FInterchangeControlIntf.ObjRelease;
|
|
FInterchangeControlIntf := nil;
|
|
FDelimitersIntf.ObjRelease;
|
|
FDelimitersIntf := nil;
|
|
FEDIFile.Free;
|
|
FEDIFile := nil;
|
|
inherited;
|
|
end;
|
|
|
|
procedure TEDICOMFile.Disassemble;
|
|
begin
|
|
FEDIFile.Disassemble;
|
|
end;
|
|
|
|
function TEDICOMFile.Get_Data: WideString;
|
|
begin
|
|
Result := FEDIFile.Data;
|
|
end;
|
|
|
|
function TEDICOMFile.Get_DataLength: Integer;
|
|
begin
|
|
Result := FEDIFile.DataLength;
|
|
end;
|
|
|
|
function TEDICOMFile.Get_Delimiters: IEDICOMDelimiters;
|
|
begin
|
|
FDelimitersIntf.SetInternalEDIObjectRef(FEDIFile.Delimiters);
|
|
Result := FDelimitersIntf;
|
|
end;
|
|
|
|
function TEDICOMFile.Get_FileName: WideString;
|
|
begin
|
|
Result := FEDIFile.FileName;
|
|
end;
|
|
|
|
function TEDICOMFile.Get_Interchange(Index: Integer): IEDICOMInterchangeControl;
|
|
begin
|
|
FInterchangeControlIntf.SetInternalEDIObjectRef(FEDIFile[Index]);
|
|
Result := FInterchangeControlIntf;
|
|
end;
|
|
|
|
function TEDICOMFile.Get_InterchangeCount: Integer;
|
|
begin
|
|
Result := FEDIFile.InterchangeControlCount;
|
|
end;
|
|
|
|
function TEDICOMFile.Get_Options: Byte;
|
|
begin
|
|
Result := Byte(FEDIFIle.Options);
|
|
end;
|
|
|
|
function TEDICOMFile.Get_State: Integer;
|
|
begin
|
|
Result := Integer(FEDIFile.State);
|
|
end;
|
|
|
|
procedure TEDICOMFile.Initialize;
|
|
begin
|
|
inherited;
|
|
FDelimitersIntf := TEDICOMDelimiters.Create;
|
|
FDelimitersIntf.ObjAddRef;
|
|
FInterchangeControlIntf := TEDICOMInterchangeControl.Create;
|
|
FInterchangeControlIntf.ObjAddRef;
|
|
FEDIFile := TEDIFile.Create(nil);
|
|
end;
|
|
|
|
function TEDICOMFile.InsertInterchange(InsertIndex: Integer): Integer;
|
|
begin
|
|
Result := FEDIFile.InsertInterchange(InsertIndex);
|
|
end;
|
|
|
|
function TEDICOMFile.InsertInterchanges(InsertIndex, Count: Integer): Integer;
|
|
begin
|
|
Result := FEDIFile.InsertInterchanges(InsertIndex, Count);
|
|
end;
|
|
|
|
procedure TEDICOMFile.LoadFromFile(const FileName: WideString);
|
|
begin
|
|
FEDIFile.LoadFromFile(FileName);
|
|
end;
|
|
|
|
procedure TEDICOMFile.ReLoadFromFile;
|
|
begin
|
|
FEDIFile.ReLoadFromFile;
|
|
end;
|
|
|
|
procedure TEDICOMFile.SaveAsToFile(const FileName: WideString);
|
|
begin
|
|
FEDIFile.SaveAsToFile(FileName);
|
|
end;
|
|
|
|
procedure TEDICOMFile.SaveToFile;
|
|
begin
|
|
FEDIFile.SaveToFile;
|
|
end;
|
|
|
|
procedure TEDICOMFile.Set_Data(const Value: WideString);
|
|
begin
|
|
FEDIFile.Data := Value;
|
|
end;
|
|
|
|
procedure TEDICOMFile.Set_FileName(const Value: WideString);
|
|
begin
|
|
FEDIFile.FileName := Value;
|
|
end;
|
|
|
|
procedure TEDICOMFile.Set_Options(Value: Byte);
|
|
begin
|
|
FEDIFile.Options := TEDIFileOptions(Value);
|
|
end;
|
|
|
|
{ TEDICOMDelimiters }
|
|
|
|
destructor TEDICOMDelimiters.Destroy;
|
|
begin
|
|
FDelimiters := nil;
|
|
inherited;
|
|
end;
|
|
|
|
function TEDICOMDelimiters.Get_ED: WideString;
|
|
begin
|
|
Result := FDelimiters.ED;
|
|
end;
|
|
|
|
function TEDICOMDelimiters.Get_EDLen: Integer;
|
|
begin
|
|
Result := FDelimiters.EDLen;
|
|
end;
|
|
|
|
function TEDICOMDelimiters.Get_SD: WideString;
|
|
begin
|
|
Result := FDelimiters.SD;
|
|
end;
|
|
|
|
function TEDICOMDelimiters.Get_SDLen: Integer;
|
|
begin
|
|
Result := FDelimiters.SDLen;
|
|
end;
|
|
|
|
function TEDICOMDelimiters.Get_SS: WideString;
|
|
begin
|
|
Result := FDelimiters.SS;
|
|
end;
|
|
|
|
function TEDICOMDelimiters.Get_SSLen: Integer;
|
|
begin
|
|
Result := FDelimiters.SSLen;
|
|
end;
|
|
|
|
procedure TEDICOMDelimiters.Initialize;
|
|
begin
|
|
inherited;
|
|
FDelimiters := nil;
|
|
end;
|
|
|
|
procedure TEDICOMDelimiters.Set_ED(const Value: WideString);
|
|
begin
|
|
FDelimiters.ED := Value;
|
|
end;
|
|
|
|
procedure TEDICOMDelimiters.Set_SD(const Value: WideString);
|
|
begin
|
|
FDelimiters.SD := Value;
|
|
end;
|
|
|
|
procedure TEDICOMDelimiters.Set_SS(const Value: WideString);
|
|
begin
|
|
FDelimiters.SS := Value;
|
|
end;
|
|
|
|
procedure TEDICOMDelimiters.SetInternalEDIObjectRef(EDIObject: TEDIObject);
|
|
begin
|
|
FDelimiters := TEDIDelimiters(EDIObject);
|
|
end;
|
|
|
|
initialization
|
|
TAutoObjectFactory.Create(ComServer, TEDICOMDelimiters, CLASS_EDICOMDelimiters,
|
|
ciMultiInstance, tmApartment);
|
|
TAutoObjectFactory.Create(ComServer, TEDICOMElement, Class_EDICOMElement,
|
|
ciMultiInstance, tmApartment);
|
|
TAutoObjectFactory.Create(ComServer, TEDICOMSegment, Class_EDICOMSegment,
|
|
ciMultiInstance, tmApartment);
|
|
TAutoObjectFactory.Create(ComServer, TEDICOMTransactionSet, Class_EDICOMTransactionSet,
|
|
ciMultiInstance, tmApartment);
|
|
TAutoObjectFactory.Create(ComServer, TEDICOMFunctionalGroup, Class_EDICOMFunctionalGroup,
|
|
ciMultiInstance, tmApartment);
|
|
TAutoObjectFactory.Create(ComServer, TEDICOMInterchangeControl, Class_EDICOMInterchangeControl,
|
|
ciMultiInstance, tmApartment);
|
|
TAutoObjectFactory.Create(ComServer, TEDICOMFile, Class_EDICOMFile,
|
|
ciMultiInstance, tmApartment);
|
|
|
|
// History
|
|
|
|
// rrossmair 2004-07-17:
|
|
// - removed unit Dialogs usage
|
|
|
|
end.
|