Componentes.Terceros.jcl/official/1.96/examples/windows/edisdk/comserver/JclEDICOM_ANSIX12.pas

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.