Online Help TEDISegment

Unit JclEDI_ANSIX12, JclEDI_UNEDIFACT

Types

TEDISegment

   The TEDISegment object contains and manages TEDIElement objects.

   In JclEDI_UNEDIFACT.pas: The TEDISegment object contains and manages TEDIElement and/or TEDICompositeElement objects.

   Since composite elements are not implemented the in JclEDI_ANSIX12.pas at this time, there are some differences in the implementation of TEDISegment between JclEDI_ANSIX12.pas and JclEDI_UNEDIFACT.pas units.

 Functions

function InternalCreateElement: TEDIElement; virtual;
function InternalCreateCompositeElement: TEDICompositeElement; virtual;

   InternalCreateElement will create a TEDIElement object. Both functions are used by InternalCreateEDIDataObject.

   In JclEDI_UNEDIFACT.pas: InternalCreateCompositeElement will create a TEDICompositeElement object.

 Function

function InternalAssignDelimiters: TEDIDelimiters; override;

   Acquires a TEDIDelimiter reference from the TEDISegment parent object.

 Function

function InternalCreateEDIDataObject: TEDIDataObject; override;

   In JclEDI_UNEDIFACT.pas: This function will create a TEDIElement or TEDICompositeElement object depending on the value of the CreateObjectType property

 Functions and Procedures

function AddElement: Integer;
function AppendElement(Element: TEDIElement): Integer;
function InsertElement(InsertIndex: Integer): Integer; overload;
function InsertElement(InsertIndex: Integer; Element: TEDIElement): Integer; overload;
procedure DeleteElement(Index: Integer); overload;
procedure DeleteElement(Element: TEDIElement); overload;
function AddElements(Count: Integer): Integer;
function AppendElements(ElementArray: TEDIElementArray): Integer;
function InsertElements(InsertIndex, Count: Integer): Integer; overload;
function InsertElements(InsertIndex: Integer;
  ElementArray: TEDIElementArray): Integer; overload;
procedure DeleteElements; overload;
procedure DeleteElements(Index, Count: Integer); overload;

   Element item management functions and procedures.

   In JclEDI_UNEDIFACT.pas:

 Functions and Procedures

function AddCompositeElement: Integer;
function AppendCompositeElement(CompositeElement: TEDICompositeElement): Integer;
function InsertCompositeElement(InsertIndex: Integer): Integer; overload;
function InsertCompositeElement(InsertIndex: Integer;
  CompositeElement: TEDICompositeElement): Integer; overload;
function AddCompositeElements(Count: Integer): Integer;
function AppendCompositeElements(CompositeElementArray: TEDICompositeElementArray): Integer;
function InsertCompositeElements(InsertIndex, Count: Integer): Integer; overload;
function InsertCompositeElements(InsertIndex: Integer;
  CompositeElementArray: TEDICompositeElementArray): Integer; overload;

   Composite element item management functions and procedures.

 Function

function Assemble: string; override;

   This function implements the assembling of EDI data into EDI file format.

 Procedure

procedure Disassemble; override;

   This procedure implements the disassembling of EDI data from EDI file format.

   In JclEDI_UNEDIFACT.pas: This procedure handles elements and composite elements.

 Property

property Element[Index: Integer]: TEDIElement read GetElement write SetElement;
  default;

   This property allows direct and easy access to the TEDIElement objects managed by the object list in TEDISegment.

   In JclEDI_UNEDIFACT.pas: This property does not exist because of the management of two different subtypes in the object list of TEDISegment. Use the inherited EDIDataObject property instead and typecast as necessary.

 Property

property Elements: TEDIDataObjectList read FEDIDataObjects;

   A property that exposes the object list in TEDISegment.

   In JclEDI_UNEDIFACT.pas: This property does not exist because of the management of two different subtypes in the object list of TEDISegment. Use the inherited EDIDataObjects property instead.

 Property

property SegmentId: string read FSegmentId write FSegmentId;

   The segment id.

 Property

property ElementCount: Integer read GetCount;

   Gets the count of TEDIElement objects.

   In JclEDI_UNEDIFACT.pas: This property does not exist because of the management of two different subtypes in the object list of TEDISegment. Use the inherited EDIDataObjectCount property instead.

Usage

Notes & Examples

   The following is a simple example.

 Example #1

uses JclEDI_ANSIX12;

procedure DoSomething;
var
  Segment: TEDISegment;
  E: Integer;
begin
  Segment := TEDISegment.Create(nil, 5);
  Segment.Delimiters := TEDIDelimiters.Create('~','*','>');
  Segment.SegmentId := 'TST';
  for E := 0 to Segment.ElementCount - 1 do
    Segment[E].Data := 'Some Data ' + IntToStr(E);
  ShowMessage(Segment.Assemble);
  Segment.Data := 'TS2*Data1*Data2~';
  Segment.Disassemble;
  ShowMessage(Segment.SegmentId);
  ShowMessage(Segment[0].Data);
  ShowMessage(Segment[1].Data);
  Segment.Free;
end;

   Using JclEDI_UNEDIFACT.pas: To access an element or composite element you must check for the type and typecast using the inherited EDIDataObject property.

 Example #2

procedure DoSomething(EDISegment: TEDISegment);
var
  //the following variable will be used as a reference
  CompElement: TEDICompositeElement
begin
  if (EDISegment = nil) or (EDISegment[0] = nil) and
    (EDISegment.EDIDataObjectCount < 1) then
    Exit;
  if EDISegment[0] is TEDIElement then
  begin
    //typecast is not necessary in this case
    EDISegment[0].Data := 'Some data';
  end
  else if EDISegment[0] is TEDICompositeElement then
  begin
    //typecast is necessary in this case
    TEDICompositeElement(EDISegment[0])[0].Data := 'Some composite data 1';
    TEDICompositeElement(EDISegment[0])[1].Data := 'Some composite data 2';
    //here is an easier to read technique
    CompElement := TEDICompositeElement(EDISegment[0]);
    CompElement[0].Data := 'Some composite data 1';
    CompElement[1].Data := 'Some composite data 2';
  end;
end;