存档

2008年12月 的存档

中文字符处理函数

2008年12月24日 没有评论

//Create by Yeats.

原理, 首先填充字符为宽字符集。 即 原本属于单字符, 在后面加上chr(127). 得到宽字符, 然后进行截取. 截取完毕后, 再将字符中的chr(127) 删除。

MidString(Source : Text[250];StartPos : Integer;Length : Integer) : Text[500]

//This is created by Yeats

t1:=127;

targetString:=”;

c[1]:=127;

FOR I:=1 TO STRLEN(Source) DO BEGIN

EVALUATE(t2,COPYSTR(Source,I,1));

IF t2<t1 THEN

targetString:=targetString+COPYSTR(Source,I,1)+c

ELSE

targetString:=targetString+COPYSTR(Source,I,1);

END;

targetString:=COPYSTR(targetString,1+(StartPos-1)*2,Length*2);

Source:=”;

FOR I:=1 TO STRLEN(targetString) DO BEGIN

EVALUATE(t2,COPYSTR(targetString,I,1));

IF t2<>t1 THEN

Source:=Source+COPYSTR(targetString,I,1);

END;

EXIT(Source);

 

LeftString(Source : Text[250];Length : Integer) : Text[500]

//This is created by Yeats

t1:=127;

targetString:=”;

c[1]:=127;

FOR I:=1 TO STRLEN(Source) DO BEGIN

EVALUATE(t2,COPYSTR(Source,I,1));

IF t2<t1 THEN

targetString:=targetString+COPYSTR(Source,I,1)+c

ELSE

targetString:=targetString+COPYSTR(Source,I,1);

END;

targetString:=COPYSTR(targetString,1,Length*2);

Source:=”;

FOR I:=1 TO STRLEN(targetString) DO BEGIN

EVALUATE(t2,COPYSTR(targetString,I,1));

IF t2<>t1 THEN

Source:=Source+COPYSTR(targetString,I,1);

END;

EXIT(Source);

 

RightString(Source : Text[250];Length : Integer) : Text[500]

//This is created by Yeats

t1:=127;

targetString:=”;

c[1]:=127;

FOR I:=1 TO STRLEN(Source) DO BEGIN

EVALUATE(t2,COPYSTR(Source,I,1));

IF t2<t1 THEN

targetString:=targetString+COPYSTR(Source,I,1)+c

ELSE

targetString:=targetString+COPYSTR(Source,I,1);

END;

StartPos:=STRLEN(targetString)-(Length*2)+1;

IF StartPos<1 THEN

StartPos:=1;

targetString:=COPYSTR(targetString,StartPos,Length*2);

Source:=”;

FOR I:=1 TO STRLEN(targetString) DO BEGIN

EVALUATE(t2,COPYSTR(targetString,I,1));

IF t2<>t1 THEN

Source:=Source+COPYSTR(targetString,I,1);

END;

EXIT(Source);

分类: C/AL 标签: , ,

Table370的独立实现

2008年12月24日 没有评论

 

Global Variable:

Name       

DataType       

Subtype           Length

XlApp       

Automation       

Unknown Automation Server.Application       

XlBook       

Automation       

Unknown Automation Server.Workbook       

XlSheet       

Automation       

Unknown Automation Server.Worksheet       

g_intColumn       

Integer       

       

 

 

 

EnterCell(RowNo : Integer;ColumnNo : Integer;CellValue : Text[250];Bold : Boolean)

 

Local Variable

Name       

DataType       

Subtype       

Length

I       

Integer               

 

 

X       

Integer               

 

 

C       

Char               

 

 

ColID       

Text               

 

30

 

Parm

Name       

DataType       

Subtype       

Length

RowNo       

Integer               

 

 

ColumnNo       

Integer               

 

 

CellValue       

Text               

 

250

Bold       

Boolean       

 

       

 

ColID := ”;

IF ColumnNo <> 0 THEN BEGIN

  x := ColumnNo – 1;

  c := 65 + x MOD 26;

  ColID[10] := c;

  i := 10;

  WHILE x > 25 DO BEGIN

    x := x DIV 26;

    i := i – 1;

    c := 64 + x MOD 26;

    ColID[i] := c;

  END;

  FOR x := i TO 10 DO

    ColID[1+x-i] := ColID[x];

END;

XlSheet.Range(ColID+FORMAT(RowNo)).Value:=CellValue;

XlSheet.Range(ColID+FORMAT(RowNo)).NumberFormat:=’@’;

XlSheet.Range(ColID+FORMAT(RowNo)).Font.Bold:=Bold;

XlSheet.Range(ColID+FORMAT(RowNo)).Font.Size:=10;

 

 

 

EnterNCell(RowNo : Integer;ColumnNo : Integer;CellValue : Text[250];Bold : Boolean)

Local Variable

Name       

DataType       

Subtype       

Length

I       

Integer               

 

 

X       

Integer               

 

 

C       

Char               

 

 

ColID       

Text               

 

30

 

Parm

Name       

DataType       

Subtype       

Length

RowNo       

Integer               

 

 

ColumnNo       

Integer               

 

 

CellValue       

Text               

 

250

Bold       

Boolean       

 

       

ColID := ”;

IF ColumnNo <> 0 THEN BEGIN

  x := ColumnNo – 1;

  c := 65 + x MOD 26;

  ColID[10] := c;

  i := 10;

  WHILE x > 25 DO BEGIN

    x := x DIV 26;

    i := i – 1;

    c := 64 + x MOD 26;

    ColID[i] := c;

  END;

  FOR x := i TO 10 DO

    ColID[1+x-i] := ColID[x];

END;

XlSheet.Range(ColID+FORMAT(RowNo)).Value:=CellValue;

XlSheet.Range(ColID+FORMAT(RowNo)).NumberFormat:=’0.00′;

XlSheet.Range(ColID+FORMAT(RowNo)).Font.Bold:=Bold;

XlSheet.Range(ColID+FORMAT(RowNo)).Font.Size:=10;

 

 

SaveExcel(xlsFileName : Text[1024])

XlSheet.Range(‘A:J’).Columns.AutoFit;

XlSheet.Range(‘A:A’).ColumnWidth:=4;

XlBook.SaveCopyAs(xlsFileName);

XlBook.Close;

XlApp.Quit;

 

CreateApp(SheetName : Text[1024])

IF ISCLEAR(XlApp) THEN

  IF NOT CREATE(XlApp,TRUE) THEN

    ERROR(‘Excel application is no start’);

XlApp.Visible(FALSE);

XlApp.DisplayAlerts(FALSE);

XlBook := XlApp.Workbooks.Add(-4167);

XlSheet := XlBook.Worksheets.Item(1);

XlSheet.Name:=SheetName;

 

通过上面的程序可以实现自己构建370表的所有功能,首先进行CreateApp操作,启动Excel,并命名xlsSheet

 

然后进行EnterCell EnterNCell 填写数据操作,EnterCell格式是行号,列号,内容,是否粗体

EnterCell 用于填写文本内容

EnterNCell用于填写数字内容

 

完成数据填写后,使用 SaveExcel的方式,保存Excel文件,并关闭Excel应用程序。

分类: C/AL 标签: , , ,