home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 October / Chip_2002-10_cd1.bin / zkuste / delphi / kolekce / d56 / FLEXCEL.ZIP / XLSAdapter / XlsMessages.pas < prev    next >
Pascal/Delphi Source File  |  2002-07-03  |  28KB  |  769 lines

  1. unit XlsMessages;
  2.  
  3. interface
  4. uses sysutils, UFlxMessages;
  5.  
  6. resourcestring
  7. {$IFDEF SPANISH}
  8.   ErrFileIsNotXLS='El archivo "%s" no es vßlido';
  9.   ErrCantReadFile='No se puede leer el archivo "%s"';
  10.   ErrExcelInvalid= 'Error al leer los registros del archivo Excel';
  11.   ErrCantWriteOutput='No se puede crear el archivo "%s"';
  12.   ErrCantWrite='Error al escribir en el archivo de salida';
  13.  
  14.   ErrFileNotFound='No se puede encontrar el archivo "%s"';
  15.   ErrStreamNotFound='No se puede abrir el Stream "%s"';
  16.  
  17.   ErrExtRefsNotSupported='Las referencias a otro libro no estan soportadas por FlexCel';
  18.  
  19.   ErrWrongExcelRecord='El record con ID 0x%x es err≤neo';
  20.  
  21.   ErrBadToken='Error en la f≤rmula, Token Id: 0x%2x no estß soportado';
  22.   ErrBadFormula='La f≤rmula en la fila %d, columna %d no estß soportada. Token Id: 0x%2x';
  23.   ErrBadName='Error el Nombre de la hoja de calculo: "%s". Token Id: 0x%2x';
  24.   ErrBadCF='Error el Formato condicional. Token Id: 0x%2x';
  25.   ErrBadChartFormula='Error en la f≤rmula de un grßfico. Token Id: 0x%2x';
  26.  
  27.   Err3DRef='Se ha encontrado una referencia a otra pagina en una formula que no lo soporta';
  28.  
  29.   ErrReadingRecord='Error al leer registro';
  30.  
  31.   ErrInvalidVersion='El archivo Template estß grabado con una versi≤n invßlida de Excel';
  32.  
  33.   ErrTooManyEntries= 'Demasiadas entradas para un tipo de registro (%d para un mßximo de %d)';
  34.   ErrRecordNotSupported='El archivo tiene un tipo de registro no soportado: %4x';
  35.  
  36.   ErrSectionNotLoaded='Una secci≤n de la hoja de cßlculo no ha sido cargada';
  37.  
  38.   ErrInvalidContinue='Se esta intentando introducir mas de un record de tipo CONTINUE en el mismo registro';
  39.   ErrStringTooLarge='La planilla tiene una cadena demasiado grande';
  40.   ErrInvalidDrawing='El archivo tiene un registro de dibujo no soportado';
  41.   ErrInvalidCF='Formato condicional invßlido';
  42.  
  43.   ErrDuplicatedSheetName='Nombre de hoja duplicado: %s';
  44.  
  45.   ErrDupRow='Registro Row duplicado' ;
  46.   ErrRowMissing='Falta el registro ROW para la fila %d';
  47.  
  48.   ErrBadCopyRows='Llamada a InsertAndCopyRows con argumentos invalidos';
  49.   ErrInvalidSheetNo='N·mero de pagina "%d" invßlido. Debe estar entre %d y %d';
  50.  
  51.   ErrBadRowCount='El n·mero de registros ROW no coincide con el total de celdas';
  52.  
  53.   ErrEscherNotLoaded='El record Escher no ha sido completamente cargado';
  54.   ErrLoadingEscher='Error al cargar un registro Escher';
  55.   ErrBStroreDuplicated='Error al cargar registro Escher. BStore duplicado';
  56.   ErrDgDuplicated='Error al cargar registro Escher. Dg duplicado';
  57.   ErrDggDuplicated='Error al cargar registro Escher. Dgg duplicado';
  58.   ErrsolverDuplicated='Error al cargar registro Escher. Solver container duplicado';
  59.  
  60.   ErrChangingEscher='Error al procesar un registro Escher';
  61.  
  62.   ErrInternal='FlexCel: Error l≤gico';
  63.  
  64.   ErrCantCopyPictFmla='No se puede copiar objetos OLE incrustados en una Hoja';
  65.  
  66.   ErrInvalidErrStr='Codigo de error de la celda invßlido: "%s"';
  67.   ErrInvalidCellValue='Valor de la celda invßlido: "%s"';
  68.  
  69.   ErrCantWriteToFile='Error al escribir en el archivo "%s". Verifique que no estΘ en uso por otro usuario';
  70.  
  71.   ErrShrFmlaNotFound='No se puede encontrar la Shared Formula correspondiente a una formula';
  72.  
  73.   //Strings
  74.   ErrInvalidStrLenLength='StrLenLength debe ser 1 o 2';
  75.   ErrInvalidStringRecord='String record invßlido';
  76.  
  77.   ErrNotImplemented='Este archivo tiene un tipo de registro no implementado: %s';
  78.  
  79.   BaseSheetName='Hoja';
  80. {$ELSE}
  81.   ErrFileIsNotXLS='The file "%s" is invalid';
  82.   ErrCantReadFile='Can''t read file "%s"';
  83.   ErrExcelInvalid= 'Error reading Excel records. File invalid';
  84.   ErrCantWriteOutput='Can''t create output file "%s"';
  85.   ErrCantWrite='Error writing output file';
  86.  
  87.   ErrFileNotFound='Can''t find file "%s"';
  88.   ErrStreamNotFound='Can''t open Stream "%s"';
  89.  
  90.   ErrExtRefsNotSupported='External references to another workbook are not supported by FlexCel';
  91.  
  92.   ErrWrongExcelRecord='Record with ID 0x%x is invalid';
  93.  
  94.   ErrBadToken='Error reading formula, Token Id: 0x%2x is not supported';
  95.   ErrBadFormula='Formula at Row %d, column %d is not supported. Token Id: 0x%2x';
  96.   ErrBadName='Error in Worksheet name: "%s". Token Id: 0x%2x';
  97.   ErrBadCF='Bad Conditional format. Token Id: 0x%2x';
  98.   ErrBadChartFormula='Error in Chart formula. Token Id: 0x%2x';
  99.  
  100.   Err3DRef='Found a reference to another worksheet on a formula that does not support it';
  101.  
  102.   ErrReadingRecord='Error reading record';
  103.  
  104.   ErrInvalidVersion='Template file is saved with an invalid Excel version';
  105.  
  106.   ErrTooManyEntries= 'Too many entries for this kind of record (%d out of a maximum of %d)';
  107.   ErrRecordNotSupported='Template contains an unsopported record: %4x';
  108.  
  109.   ErrSectionNotLoaded='A section of the workbook is not loaded';
  110.  
  111.   ErrInvalidContinue='Trying to add more than one CONTINUE record to the same record';
  112.   ErrStringTooLarge='String too large';
  113.   ErrInvalidDrawing='The file has an usupported drawing record';
  114.   ErrInvalidCF='Invalid conditional format record';
  115.  
  116.   ErrDuplicatedSheetName='Sheet name already exist: %s';
  117.  
  118.   ErrDupRow='Duplicated ROW record' ;
  119.   ErrRowMissing='Missing ROW Record for row %d';
  120.  
  121.   ErrBadCopyRows='Ivalid arguments to call InsertAndCopyRows';
  122.   ErrInvalidSheetNo='Sheet number "%d" invalid. Must be between %d and %d';
  123.  
  124.   ErrBadRowCount='Number of ROW record is not the same that the cell count';
  125.  
  126.   ErrEscherNotLoaded='Escher record is not fully loaded';
  127.   ErrLoadingEscher='Error loading Escher record';
  128.   ErrBStroreDuplicated='Error loading Escher record. Duplicated BStore';
  129.   ErrDgDuplicated='Error loading Escher record. Duplicated Dg';
  130.   ErrDggDuplicated='Error loading Escher record. Duplicated Dgg';
  131.   ErrsolverDuplicated='Error loading Escher record. Duplicated Solver container';
  132.  
  133.   ErrChangingEscher='Error processing Escher record';
  134.  
  135.   ErrInternal='FlexCel: Logical Error';
  136.  
  137.   ErrCantCopyPictFmla='Can''t copy OLE objects embedded on a sheet';
  138.  
  139.   ErrInvalidErrStr='Invalid cell error code: "%s"';
  140.   ErrInvalidCellValue='Invalid cell value: "%s"';
  141.  
  142.   ErrCantWriteToFile='Can''t write to file "%s". Check it is not in use by another user';
  143.  
  144.   ErrShrFmlaNotFound='Can''t find Shared Formula';
  145.  
  146.   //Strings
  147.   ErrInvalidStrLenLength='StrLenLength should be 1 or 2';
  148.   ErrInvalidStringRecord='Invalid String record';
  149.  
  150.   ErrNotImplemented='This file has a not implemented kind of record: %s';
  151.  
  152.   BaseSheetName='Sheet';
  153. {$ENDIF}
  154.  
  155.   WorkbookStrS='Workbook';
  156.  
  157.   //Error Codes
  158.     xlerr_Null  = '#NULL!';
  159.     xlerr_Div0  = '#DIV/0!';
  160.     xlerr_Value = '#VALUE!';
  161.     xlerr_Ref   = '#REF!';
  162.     xlerr_Name  = '#NAME?';
  163.     xlerr_Num   = '#NUM!';
  164.     xlerr_NA    = '#N/A';
  165.  
  166.     //MADE: Traducir mensajes
  167.  
  168. const
  169.  
  170.     xlerrcode_Null  = $00;
  171.     xlerrcode_Div0  = $07;
  172.     xlerrcode_Value = $0F;
  173.     xlerrcode_Ref   = $17;
  174.     xlerrcode_Name  = $1D;
  175.     xlerrcode_Num   = $24;
  176.     xlerrcode_NA    = $2A;
  177.  
  178.  
  179.   MaxRecordDataSize=8223;
  180.   MaxExternSheetDataSize= 8220;  // 1370 records of 6 bytes each, and 2 bytes for the count
  181.  
  182. type
  183.   ArrayOfByte = array[0..maxint div 2] of byte;
  184.   PArrayOfByte=^ArrayOfByte;
  185.  
  186.   TRecordHeader = packed record
  187.     Id: word;
  188.     Size: word;
  189.   end;
  190.  
  191.   PRecordHeader= ^TRecordHeader;
  192.  
  193.   EExcelException=class (Exception)
  194.   end;
  195.  
  196.   TGetSheet=function(const aSheetRef: word): integer of object;
  197.  
  198.   TSheetInfo= record
  199.     InsSheet, FormulaSheet: integer;
  200.     GetSheet, SetSheet: TGetSheet;
  201.   end;
  202.  
  203. const
  204.   Max_Columns       = 255;
  205.   Max_Rows          = 65535; //0 based
  206.   MaxSheets         = 250;
  207.  
  208.  
  209.   xlr_BofVersion    = $0600;
  210.  
  211.   xlb_Globals       = $0005;
  212.   xlb_Worksheet     = $0010;
  213.   xlb_Chart         = $0020;
  214.  
  215.  
  216.  
  217.   xlr_INTEGER                    = $0002;
  218.   xlr_FORMULA                    = $0006;
  219.   xlr_EOF                        = $000A;
  220.  
  221.   xlr_CALCCOUNT                  = $000C;
  222.   xlr_CALCMODE                   = $000D;
  223.   xlr_PRECISION                  = $000E;
  224.   xlr_REFMODE                    = $000F;
  225.   xlr_DELTA                      = $0010;
  226.   xlr_ITERATION                  = $0011;
  227.   xlr_PROTECT                    = $0012;
  228.   xlr_PASSWORD                   = $0013;
  229.   xlr_HEADER                     = $0014;
  230.   xlr_FOOTER                     = $0015;
  231.   xlr_EXTERNCOUNT                = $0016;
  232.   xlr_EXTERNSHEET                = $0017;
  233.   xlr_NAME                       = $0018;
  234.  
  235.   xlr_WINDOWPROTECT              = $0019;
  236.   xlr_VERTICALPAGEBREAKS         = $001A;
  237.   xlr_HORIZONTALPAGEBREAKS       = $001B;
  238.   xlr_NOTE                       = $001C;
  239.   xlr_SELECTION                  = $001D;
  240.  
  241.   xlr_FORMATCOUNT                = $001F;
  242.   xlr_COLUMNDEFAULT              = $0020;
  243.  
  244.   xlr_1904                       = $0022;
  245.  
  246.   xlr_COLWIDTH                   = $0024;
  247.  
  248.   xlr_LEFTMARGIN                 = $0026;
  249.   xlr_RIGHTMARGIN                = $0027;
  250.   xlr_TOPMARGIN                  = $0028;
  251.   xlr_BOTTOMMARGIN               = $0029;
  252.   xlr_PRINTHEADERS               = $002A;
  253.   xlr_PRINTGRIDLINES             = $002B;
  254.   xlr_FILEPASS                   = $002F;
  255.  
  256.   xlr_PRINTSIZE                  = $0033;
  257.  
  258.   xlr_CONTINUE                   = $003C;
  259.   xlr_WINDOW1                    = $003D;
  260.  
  261.   xlr_BACKUP                     = $0040;
  262.   xlr_PANE                       = $0041;
  263.   xlr_CODEPAGE                   = $0042;
  264.  
  265.   xlr_IXFE                       = $0044;
  266.   xlr_PLS                        = $004D;
  267.   xlr_DCON                       = $0050;
  268.   xlr_DCONREF                    = $0051;
  269.   xlr_DCONNAME                   = $0053;
  270.   xlr_DEFCOLWIDTH                = $0055;
  271.   xlr_BUILTINFMTCNT              = $0056;
  272.   xlr_XCT                        = $0059;
  273.   xlr_CRN                        = $005A;
  274.   xlr_FILESHARING                = $005B;
  275.   xlr_WRITEACCESS                = $005C;
  276.   xlr_OBJ                        = $005D;
  277.   xlr_UNCALCED                   = $005E;
  278.   xlr_SAFERECALC                 = $005F;
  279.   xlr_TEMPLATE                   = $0060;
  280.   xlr_OBJPROTECT                 = $0063;
  281.   xlr_COLINFO                    = $007D;
  282.  
  283.   xlr_IMDATA                     = $007F;
  284.   xlr_GUTS                       = $0080;
  285.   xlr_WSBOOL                     = $0081;
  286.   xlr_GRIDSET                    = $0082;
  287.   xlr_HCENTER                    = $0083;
  288.   xlr_VCENTER                    = $0084;
  289.   xlr_BOUNDSHEET                 = $0085;
  290.   xlr_WRITEPROT                  = $0086;
  291.   xlr_ADDIN                      = $0087;
  292.   xlr_EDG                        = $0088;
  293.   xlr_PUB                        = $0089;
  294.   xlr_COUNTRY                    = $008C;
  295.   xlr_HIDEOBJ                    = $008D;
  296.   xlr_BUNDLESOFFSET              = $008E;
  297.   xlr_BUNDLEHEADER               = $008F;
  298.   xlr_SORT                       = $0090;
  299.   xlr_SUB                        = $0091;
  300.   xlr_PALETTE                    = $0092;
  301.  
  302.   xlr_LHRECORD                   = $0094;
  303.   xlr_LHNGRAPH                   = $0095;
  304.   xlr_SOUND                      = $0096;
  305.   xlr_LPR                        = $0098;
  306.   xlr_STANDARDWIDTH              = $0099;
  307.   xlr_FNGROUPNAME                = $009A;
  308.   xlr_FILTERMODE                 = $009B;
  309.   xlr_FNGROUPCOUNT               = $009C;
  310.   xlr_AUTOFILTERINFO             = $009D;
  311.   xlr_AUTOFILTER                 = $009E;
  312.   xlr_SCL                        = $00A0;
  313.   xlr_SETUP                      = $00A1;
  314.   xlr_COORDLIST                  = $00A9;
  315.   xlr_GCW                        = $00AB;
  316.   xlr_SCENMAN                    = $00AE;
  317.   xlr_SCENARIO                   = $00AF;
  318.   xlr_SXVIEW                     = $00B0;
  319.   xlr_SXVD                       = $00B1;
  320.   xlr_SXVI                       = $00B2;
  321.   xlr_SXIVD                      = $00B4;
  322.   xlr_SXLI                       = $00B5;
  323.   xlr_SXPI                       = $00B6;
  324.   xlr_DOCROUTE                   = $00B8;
  325.   xlr_RECIPNAME                  = $00B9;
  326.  
  327.   xlr_MULRK                      = $00BD;
  328.   xlr_MULBLANK                   = $00BE;
  329.   xlr_MMS                        = $00C1;
  330.   xlr_ADDMENU                    = $00C2;
  331.   xlr_DELMENU                    = $00C3;
  332.   xlr_SXDI                       = $00C5;
  333.   xlr_SXDB                       = $00C6;
  334.   xlr_SXFIELD                    = $00C7;
  335.   xlr_SXINDEXLIST                = $00C8;
  336.   xlr_SXDOUBLE                   = $00C9;
  337.   xlr_SXSTRING                   = $00CD;
  338.   xlr_SXDATETIME                 = $00CE;
  339.   xlr_SXTBL                      = $00D0;
  340.   xlr_SXTBRGITEM                 = $00D1;
  341.   xlr_SXTBPG                     = $00D2;
  342.   xlr_OBPROJ                     = $00D3;
  343.   xlr_SXIDSTM                    = $00D5;
  344.   xlr_RSTRING                    = $00D6;
  345.   xlr_DBCELL                     = $00D7;
  346.   xlr_BOOKBOOL                   = $00DA;
  347.   xlr_SXEXTPARAMQRY              = $00DC;
  348.   xlr_SCENPROTECT                = $00DD;
  349.   xlr_OLESIZE                    = $00DE;
  350.   xlr_UDDESC                     = $00DF;
  351.  
  352.   xlr_INTERFACEHDR               = $00E1;
  353.   xlr_INTERFACEEND               = $00E2;
  354.   xlr_SXVS                       = $00E3;
  355.   xlr_CELLMERGING                = $00E5;
  356.   xlr_BITMAP                     = $00E9;
  357.   xlr_MSODRAWINGGROUP            = $00EB;
  358.   xlr_MSODRAWING                 = $00EC;
  359.   xlr_MSODRAWINGSELECTION        = $00ED;
  360.   xlr_PHONETIC                   = $00EF;
  361.   xlr_SXRULE                     = $00F0;
  362.   xlr_SXEX                       = $00F1;
  363.   xlr_SXFILT                     = $00F2;
  364.   xlr_SXNAME                     = $00F6;
  365.   xlr_SXSELECT                   = $00F7;
  366.   xlr_SXPAIR                     = $00F8;
  367.   xlr_SXFMLA                     = $00F9;
  368.   xlr_SXFORMAT                   = $00FB;
  369.   xlr_SST                        = $00FC;
  370.   xlr_LABELSST                   = $00FD;
  371.   xlr_EXTSST                     = $00FF;
  372.   xlr_SXVDEX                     = $0100;
  373.   xlr_SXFORMULA                  = $0103;
  374.   xlr_SXDBEX                     = $0122;
  375.   xlr_CHTRINSERT                 = $0137;
  376.   xlr_CHTRINFO                   = $0138;
  377.   xlr_CHTRCELLCONTENT            = $013B;
  378.   xlr_TABID                      = $013D;
  379.   xlr_CHTRMOVERANGE              = $0140;
  380.   xlr_CHTRINSERTTAB              = $014D;
  381.   xlr_USESELFS                   = $0160;
  382.   xlr_XL5MODIFY                  = $0162;
  383.   xlr_CHTRHEADER                 = $0196;
  384.   xlr_USERBVIEW                  = $01A9;
  385.   xlr_USERSVIEWBEGIN             = $01AA;
  386.   xlr_USERSVIEWEND               = $01AB;
  387.   xlr_QSI                        = $01AD;
  388.   xlr_SUPBOOK                    = $01AE;
  389.   xlr_PROT4REV                   = $01AF;
  390.   xlr_DSF                        = $0161;
  391.   xlr_CONDFMT                    = $01B0;
  392.   xlr_CF                         = $01B1;
  393.   xlr_DVAL                       = $01B2;
  394.   xlr_DCONBIN                    = $01B5;
  395.   xlr_TXO                        = $01B6;
  396.   xlr_REFRESHALL                 = $01B7;
  397.   xlr_HLINK                      = $01B8;
  398.   xlr_CODENAME                   = $01BA;
  399.   xlr_SXFDBTYPE                  = $01BB;
  400.   xlr_PROT4REVPASS               = $01BC;
  401.   xlr_DV                         = $01BE;
  402.   xlr_XL9FILE                    = $01C0;
  403.   xlr_RECALCID                   = $01C1;
  404.   xlr_DIMENSIONS                 = $0200;
  405.   xlr_BLANK                      = $0201;
  406.   xlr_NUMBER                     = $0203;
  407.   xlr_LABEL                      = $0204;
  408.   xlr_BOOLERR                    = $0205;
  409.  
  410.   xlr_STRING                     = $0207;
  411.   xlr_ROW                        = $0208;
  412.  
  413.   xlr_INDEX                      = $020B;
  414.   xlr_ARRAY                      = $0221;
  415.   xlr_EXTERNNAME                 = $0223;
  416.   xlr_DEFAULTROWHEIGHT           = $0225;
  417.   xlr_FONT                       = $0231;
  418.   xlr_TABLE                      = $0236;
  419.   xlr_WINDOW2                    = $023E;
  420.  
  421.   xlr_RK                         = $027E;
  422.   xlr_STYLE                      = $0293;
  423.  
  424.   xlr_FORMAT                     = $041E;
  425.   xlr_XF                         = $0443;
  426.   xlr_SHRFMLA                    = $04BC;
  427.   xlr_SCREENTIP                  = $0800;
  428.   xlr_WEBQRYSETTINGS             = $0803;
  429.   xlr_WEBQRYTABLES               = $0804;
  430.   xlr_BOF                        = $0809;
  431.   xlr_UNITS                      = $1001;
  432.   xlr_ChartChart                 = $1002;
  433.   xlr_ChartSeries                = $1003;
  434.   xlr_ChartDataformat            = $1006;
  435.   xlr_ChartLineformat            = $1007;
  436.   xlr_ChartMarkerformat          = $1009;
  437.   xlr_ChartAreaformat            = $100A;
  438.   xlr_ChartPieformat             = $100B;
  439.   xlr_ChartAttachedlabel         = $100C;
  440.   xlr_ChartSeriestext            = $100D;
  441.   xlr_ChartChartformat           = $1014;
  442.   xlr_ChartLegend                = $1015;
  443.   xlr_ChartSerieslist            = $1016;
  444.   xlr_ChartBar                   = $1017;
  445.   xlr_ChartLine                  = $1018;
  446.   xlr_ChartPie                   = $1019;
  447.   xlr_ChartArea                  = $101A;
  448.   xlr_ChartScatter               = $101B;
  449.   xlr_ChartChartline             = $101C;
  450.   xlr_ChartAxis                  = $101D;
  451.   xlr_ChartTick                  = $101E;
  452.   xlr_ChartValuerange            = $101F;
  453.   xlr_ChartCatserrange           = $1020;
  454.   xlr_ChartAxislineformat        = $1021;
  455.   xlr_ChartFormatlink            = $1022;
  456.   xlr_ChartDefaulttext           = $1024;
  457.   xlr_ChartText                  = $1025;
  458.   xlr_ChartFontx                 = $1026;
  459.   xlr_ChartObjectLink            = $1027;
  460.   xlr_ChartFrame                 = $1032;
  461.   xlr_BEGIN                      = $1033;
  462.   xlr_END                        = $1034;
  463.   xlr_ChartPlotarea              = $1035;
  464.   xlr_Chart3D                    = $103A;
  465.   xlr_ChartPicf                  = $103C;
  466.   xlr_ChartDropbar               = $103D;
  467.   xlr_ChartRadar                 = $103E;
  468.   xlr_ChartSurface               = $103F;
  469.   xlr_ChartRadararea             = $1040;
  470.   xlr_ChartAxisparent            = $1041;
  471.   xlr_ChartLegendxn              = $1043;
  472.   xlr_ChartShtprops              = $1044;
  473.   xlr_ChartSertocrt              = $1045;
  474.   xlr_ChartAxesused              = $1046;
  475.   xlr_ChartSbaseref              = $1048;
  476.   xlr_ChartSerparent             = $104A;
  477.   xlr_ChartSerauxtrend           = $104B;
  478.   xlr_ChartIfmt                  = $104E;
  479.   xlr_ChartPos                   = $104F;
  480.   xlr_ChartAlruns                = $1050;
  481.   xlr_ChartAI                    = $1051;
  482.   xlr_ChartSerauxerrbar          = $105B;
  483.   xlr_ChartClrClient             = $105C;
  484.   xlr_ChartSerfmt                = $105D;
  485.   xlr_Chart3DDataFormat          = $105F;
  486.   xlr_ChartFbi                   = $1060;
  487.   xlr_ChartBoppop                = $1061;
  488.   xlr_ChartAxcext                = $1062;
  489.   xlr_ChartDat                   = $1063;
  490.   xlr_ChartPlotgrowth            = $1064;
  491.   xlr_ChartSiindex               = $1065;
  492.   xlr_ChartGelframe              = $1066;
  493.   xlr_ChartBoppcustom            = $1067;
  494.  
  495. //////////////////////////////////////Tokens///////////////////////////777777
  496.     //Globals
  497.     tk_BinaryOps = [$3..$11];
  498.     tk_UnaryOps  = [$12..$15];
  499.  
  500.     //Constants
  501.     tk_MissArg   = $16;
  502.     tk_Str       = $17;
  503.     tk_Attr      = $19;
  504.     tk_Err       = $1C;
  505.     tk_Bool      = $1D;
  506.     tk_Int       = $1E;
  507.     tk_Num       = $1F;
  508.  
  509.     //Func
  510.     tk_Func      = [$21, $41, $61];
  511.     tk_FuncVar   = [$22, $42, $62];
  512.  
  513.     //Operand
  514.     tk_Array     = [$20, $40, $60];
  515.     tk_Name      = [$23, $43, $63];
  516.     tk_Ref       = [$24, $44, $64];
  517.     tk_Area      = [$25, $45, $65];
  518.     tk_RefErr    = [$2A, $4A, $6A];
  519.     tk_AreaErr   = [$2B, $4B, $6B];
  520.     tk_RefN      = [$2C, $4C, $6C];  //Reference relative to the current row. Can be < 0
  521.     tk_AreaN     = [$2D, $4D, $6D];  //Area relative to the current row
  522.     tk_NameX     = [$39, $59, $79];
  523.     tk_Ref3D     = [$3A, $5A, $7A];
  524.     tk_Area3D    = [$3B, $5B, $7B];
  525.     tk_Ref3DErr  = [$3C, $5C, $7C];
  526.     tk_Area3DErr = [$3D, $5D, $7D];
  527.  
  528.     tk_RefToRefErr         = $2A - $24;
  529.     tk_AreaToAreaErr       = $2B - $25;
  530.     tk_Ref3DToRef3DErr     = $3C - $3A;
  531.     tk_Area3DToArea3DErr   = $3D - $3B;
  532.  
  533.     tk_Operand=
  534.         tk_Array+
  535.         tk_Name+
  536.         tk_Ref+
  537.         tk_Area+
  538.         tk_RefErr+
  539.         tk_AreaErr+
  540.         tk_RefN+
  541.         tk_AreaN+
  542.         tk_NameX+
  543.         tk_Ref3D+
  544.         tk_Area3D+
  545.         tk_Ref3DErr+
  546.         tk_Area3DErr;
  547.  
  548. ///////////////////////////////////////Object Types /////////////////////7777
  549.         ftEnd           = $0000;
  550.         ftMacro         = $0004;
  551.         ftButton     = $0005;
  552.         ftGmo           = $0006;
  553.         ftCf           = $0007;
  554.         ftPioGrbit     = $0008;
  555.     ftPictFmla     = $0009;
  556.         ftCbls         = $000A;
  557.         ftRbo           = $000B;
  558.         ftSbs           = $000C;
  559.         ftNts           = $000D;
  560.         ftSbsFmla       = $000E;
  561.         ftGboData       = $000F;
  562.     ftEdoData       = $0010;
  563.         ftRboData       = $0011;
  564.         ftCblsData     = $0012;
  565.         ftLbsData       = $0013;
  566.         ftCblsFmla     = $0014;
  567.         ftCmo           = $0015;
  568.  
  569. ///////////////////////////////////////Cmo Object Types /////////////////////7777
  570.  
  571.         xlcmo_Group             = $00;
  572.         xlcmo_Line                = $01;
  573.         xlcmo_Rectangle          = $02;
  574.         xlcmo_Oval                = $03;
  575.         xlcmo_Arc                  = $04;
  576.         xlcmo_Chart              = $05;
  577.         xlcmo_TextBox            = $06;
  578.         xlcmo_Button            = $07;
  579.         xlcmo_Picture            = $08;
  580.         xlcmo_Polygon            = $09;
  581.         xlcmo_CheckBox          = $0B;
  582.         xlcmo_Option            = $0C;
  583.         xlcmo_Edit                = $0D;
  584.         xlcmo_Label             = $0E;
  585.         xlcmo_Dialog            = $0F;
  586.         xlcmo_Spinner            = $10;
  587.         xlcmo_Scroll            = $11;
  588.         xlcmo_List                = $12;
  589.         xlcmo_Group1             = $13;
  590.         xlcmo_Combo             = $14;
  591.         xlcmo_Comment            = $19;
  592.         xlcmo_MSDrawingx        = $1E;
  593.  
  594. // Escher records
  595.     MsofbtDggContainer             = $F000;
  596.     MsofbtDgg                      = $F006;
  597.     MsofbtCLSID                    = $F016;
  598.     MsofbtOPT                      = $F00B;
  599.     MsofbtColorMRU                 = $F11A;
  600.     MsofbtSplitMenuColors          = $F11E;
  601.     MsofbtBstoreContainer          = $F001;
  602.     MsofbtBSE                      = $F007;
  603.     MsofbtDgContainer              = $F002;
  604.     MsofbtDg                       = $F008;
  605.     MsofbtRegroupItem              = $F118;
  606.     MsofbtColorScheme              = $F120;
  607.     MsofbtSpgrContainer            = $F003;
  608.     MsofbtSpContainer              = $F004;
  609.     MsofbtSpgr                     = $F009;
  610.     MsofbtSp                       = $F00A;
  611.     MsofbtTextbox                  = $F00C;
  612.     MsofbtClientTextbox            = $F00D;
  613.     MsofbtAnchor                   = $F00E;
  614.     MsofbtChildAnchor              = $F00F;
  615.     MsofbtClientAnchor             = $F010;
  616.     MsofbtClientData               = $F011;
  617.     MsofbtOleObject                = $F11F;
  618.     MsofbtDeletedPspl              = $F11D;
  619.     MsofbtSolverContainer          = $F005;
  620.     MsofbtConnectorRule            = $F012;
  621.     MsofbtAlignRule                = $F013;
  622.     MsofbtArcRule                  = $F014;
  623.     MsofbtClientRule               = $F015;
  624.     MsofbtCalloutRule              = $F017;
  625.     MsofbtSelection                = $F119;
  626.  
  627.     //Image types
  628.      msobiUNKNOWN = 0;
  629.      msobiWMF  = $216;      // Metafile header then compressed WMF
  630.      msobiEMF  = $3D4;      // Metafile header then compressed EMF
  631.      msobiPICT = $542;      // Metafile header then compressed PICT
  632.      msobiPNG  = $6E0;      // One byte tag then PNG data
  633.      msobiJFIF = $46A;      // One byte tag then JFIF data
  634.      msobiJPEG = msobiJFIF;
  635.      msobiDIB  = $7A8;      // One byte tag then DIB data
  636.      msobiClient=$800;      // Clients should set this bit
  637.  
  638.      msoblipERROR   = 0;        // An error occured during loading
  639.      msoblipUNKNOWN = 1;        // An unknown blip type
  640.      msoblipEMF     = 2;        // Windows Enhanced Metafile
  641.      msoblipWMF     = 3;        // Windows Metafile
  642.      msoblipPICT    = 4;        // Macintosh PICT
  643.      msoblipJPEG    = 5;        // JFIF
  644.      msoblipPNG     = 6;        // PNG
  645.      msoblipDIB     = 7;        // Windows DIB
  646.  
  647.  
  648.      XlsImgConv: array[TXlsImgTypes] of byte = (msoblipEMF, msoblipWMF, msoblipJPEG, msoblipPNG);
  649.      XlsBlipHeaderConv: array[TXlsImgTypes] of Word=($F01A, $F01B,$F01D,$F01E);
  650.      XlsBlipSignConv: array[TXlsImgTypes] of Word=(msobiEMF, msobiWMF, msobiJPEG, msobiPNG);
  651.  
  652.   procedure IncMax(var X: word ; N, Max: Longint );
  653.   procedure IncMaxMin(var X: word ; N, Max,  Min: Longint );
  654.  
  655.   procedure IncWord( const Pdata: PArrayOfByte; const tPos: integer; const Offset: integer; const Max: integer);
  656.   function GetWord(const Pdata: PArrayOfByte; const tPos: integer): word;
  657.   procedure SetWord(const Pdata: PArrayOfByte; const tPos: integer; const number: Word);
  658.   procedure IncCardinal( const Pdata: PArrayOfByte; const tPos: integer; const Offset: int64);
  659.   function GetCardinal(const Pdata: PArrayOfByte; const tPos: integer): cardinal;
  660.   procedure SetCardinal(const Pdata: PArrayOfByte; const tPos: integer; const number: cardinal);
  661.  
  662.   function GetStrLen(const Length16Bit: boolean ;const Pdata: PArrayOfByte; const tPos: integer; const UseExtStrLen: boolean; const ExtStrLen: Cardinal): int64;
  663.  
  664.   function IsWide(const W: WideString): boolean;
  665. implementation
  666.  
  667. procedure IncWord( const Pdata: PArrayOfByte; const tPos: integer; const Offset: integer; const Max: integer);
  668. var
  669.   w: int64;
  670. begin
  671.   w:=Pdata^[tPos] or (PData^[tPos+1] shl 8);
  672.   inc(w, Offset);
  673.   if (w<0) or (w>Max) then Raise Exception.CreateFmt(ErrTooManyEntries,[w, Max]);
  674.   Pdata^[tPos]:= lo(w);
  675.   Pdata^[tPos+1]:= hi(w);
  676. end;
  677.  
  678. procedure IncMax(var X: word ; N, Max: Longint );
  679. begin
  680.   if (N+X>Max) or (N+X<0) then Raise Exception.CreateFmt(ErrTooManyEntries,[N+X, Max]);
  681.   Inc(X,N);
  682. end;
  683.  
  684. procedure IncCardinal( const Pdata: PArrayOfByte; const tPos: integer; const Offset: int64);
  685. var
  686.   Pc: ^Cardinal;
  687. begin
  688.   Pc:= @PData[tPos];
  689.   Inc(Pc^,Offset);
  690. end;
  691.  
  692. procedure IncMaxMin(var X: word ; N, Max, Min: Longint );
  693. begin
  694.   if (N+X>Max) then X:=Max else if N+X<Min then X:=Min else Inc(X,N);
  695. end;
  696.  
  697. function GetWord(const Pdata: PArrayOfByte; const tPos: integer): word;
  698. type
  699.   pWord=^Word;
  700. begin
  701.   Result:=pWord(PCHAR(Pdata)+tPos)^;
  702. end;
  703.  
  704. function GetCardinal(const Pdata: PArrayOfByte; const tPos: integer): cardinal;
  705. type
  706.   pCardinal=^Cardinal;
  707. begin
  708.   result:=PCardinal(PCHAR(Pdata)+tPos)^;
  709. end;
  710.  
  711. procedure SetCardinal(const Pdata: PArrayOfByte; const tPos: integer; const number: cardinal);
  712. begin
  713.   System.Move(Number, Pdata^[tPos], sizeof(Cardinal))
  714. end;
  715.  
  716. procedure SetWord(const Pdata: PArrayOfByte; const tPos: integer; const number: Word);
  717. begin
  718.   System.Move(Number, Pdata^[tPos], sizeof(Word))
  719. end;
  720.  
  721. function GetStrLen(const Length16Bit: boolean ;const Pdata: PArrayOfByte; const tPos: integer;const UseExtStrLen: boolean; const ExtStrLen: Cardinal): int64;
  722. var
  723.   l, rt: Cardinal;
  724.   bsize: byte;
  725.   sz: cardinal;
  726.   myPos: integer;
  727.   oField: byte;
  728. begin
  729.   myPos:=tPos;
  730.   if UseExtStrLen then l:= ExtStrLen
  731.   else
  732.   begin
  733.     if Length16Bit then begin;l:=GetWord( Pdata, myPos);inc(myPos,2);end
  734.     else begin;l:=Pdata^[myPos];inc(myPos);end;
  735.   end;
  736.  
  737.   oField:= Pdata^[myPos];
  738.   inc(myPos);
  739.  
  740.   bsize:= oField and $1;
  741.  
  742.   rt:=0;
  743.   if (oField and $8)= $8 then //RTF Info
  744.   begin
  745.     rt:=GetWord( Pdata, myPos);
  746.     inc(myPos, 2);
  747.   end;
  748.  
  749.   sz:=0;
  750.   if (oField and $4)= $4 then //Far East Info
  751.   begin
  752.     sz:= GetCardinal( Pdata, myPos);
  753.     inc(myPos, 4);
  754.   end;
  755.  
  756.   Result:=int64(myPos-tPos) + l shl bsize+ rt shl 2 + sz;
  757.  
  758. end;
  759.  
  760. function IsWide(const W: WideString): boolean;
  761. var
  762.   i:integer;
  763. begin
  764.   for i:=1 to length(w) do if ord(w[i])>$FF then begin;Result:=true;exit;end;
  765.   Result:=false;
  766. end;
  767.  
  768. end.
  769.