procedure TForm1.Button1Click(Sender: TObject);
    begin

       //This is just an example program to demonstrate how to acknowledge and create a CONTRL acknowledgment
       //file in Delphi using Framework EDI component

       sPath := Trim(GetCurrentDir) + '\';'
   
       // CREATES OEDIDOC OBJECT
       oEdidoc := coedidocument.Create;
 
       // SETS TERMINATORS
       oEdiDoc.SegmentTerminator := '''{13:10}';
       oEdiDoc.ElementTerminator := '+';
       oEdiDoc.CompositeTerminator := ':';
       oEdiDoc.ReleaseIndicator := '?';

       //By default, FREDI uses the  universal coordinated time (UTC), however you can change it to local time
       oEdiDoc.Option[5] := 1;

       //Stops FREDI from using the internal standard reference
       oSchemas := oEdiDoc.GetSchemas as IediSchemas;
       oSchemas.EnableStandardReference := False;

       // YOU MUST LOAD BOTH THE CONTRL SEF FILE (FOR FREDI TO CREATE AN EDI CONTRL FILE), 
       // AS WELL AS THE SEF FILE THAT WILL BE USED TO VALIDATE THE EDI FILE.
       // PLEASE NOTE THAT YOU MUST LOAD THE CORRECT VERSION OF THE CONTRL SEF FILE.
       oEdiDoc.LoadSchema(sPath + 'CONTRL.SEF', 0);
       oEdiDoc.LoadSchema(sPath + 'INVOIC_S93A.SEF', 0);
 
       // THIS OPTIONS STOPS FREDI FROM LOADING ALL OF THE SEGMENTS IN THE EDI FILE INTO MEMORY. 
       oEdiDoc.CursorType := 1;
 
       // CREATES THE ACKNOWLEDGMENT OBJECT
       oAck := oEdiDoc.GetAcknowledgment as IediAcknowledgment;
 
       // ENABLES THE CREATION OF THE FUNCTIONAL ACKNOWLEDGMENT WHEN FREDI LOADS AN EDI FILE.
       oAck.EnableFunctionalAcknowledgment := True;
 
       // LOADS THE EDI FILE.  NOTE THAT WHEN THE CURSOR TYPE FORWARD IS ENABLED, ONLY THE FIRST 
       // DATA SEGMENT IS LOADED; OTHERWISE THE WHOLE EDI FILE GETS LOADED INTO MEMORY
       oEdiDoc.LoadEdi('INVOIC.TXT');
 
       // IF THE CURSOR TYPE FORWARD IS ENABLED, YOU MUST TRAVERSE THRU THE WHOLE EDI FILE 
       // SO THAT IT ALLOWS FREDI TO LOAD EACH SEGMENT AND ANALYZE THEM. (FREDI DOES NOT KEEP
       // THE SEGMENTS IN MEMORY, BUT DISCARDS THEM ONCE THEY HAVE BEEN READ)
       oSegment := oEdiDoc.FirstDataSegment as IediDataSegment;
       While oSegment <> Nil do begin
           oSegment := oSegment.Next as IediDataSegment;
       end;
 
       // ONCE THE WHOLE EDI FILE HAS BEEN READ, CAN YOU THEN MANAGE AND MANIPULATE DATA
       // OF THE ACK OBJECT THAT FREDI CREATED AUTOMATICALLY.
 
       // GETS THE FIRST DATA SEGMENT OF THE ACK OBJECT
       // oSegment := oAck.GetFirstContrlDataSegment as IediDataSegment;
 
       // oSegment := oSegment.GetDataSegmentByPos('\UNB\UNH\UNC')  as IediDataSegment;
       // if oSegment.DataElementValue[3] = "7" then begin 
       // end;
 
       // WRITES THE ACKNOWLEDGMENT INTO A FILE.
       oAck.Save(sPath + 'INVOIC_CONTRL.TXT');

       ShowMessage('Done. Output = ' + sPath + 'INVOIC_CONTRL.TXT');


    end;
    

    Click here to download a trial version of the Framework EDI