回 帖 发 新 帖 刷新版面

主题:请高手帮我看看这段代码

功能是日期的小写转大写
RUN的时候报错,说VAR前有END 不知道是哪里的错

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DateUtils, math;

type

  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;

function YearToChinese(yearofdate : Currency):string;
function MonthToChinese(Monthofdate : currency) :string;
function DayToChinese(Dayofdate : currency):string;

  var   iNumLength:Integer;//数字长度
          i,j:Integer;
          sNumber:String;
          arALB:Array   [0..9]   of   String;
           Form1: TForm1;
          S: string;
          T: TDateTime;
 

  begin
      arALB[0]:='零';     arALB[1]:='壹';
      arALB[2]:='贰';     arALB[3]:='叁';
      arALB[4]:='肆';     arALB[5]:='伍';
      arALB[6]:='陆';     arALB[7]:='柒';
      arALB[8]:='捌';     arALB[9]:='玖';

    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  implementation

{$R *.dfm}

function YearToChinese(yearofdate : Currency):string;
begin
  var
  ChineseofYear:array [0..3] of string;

  sNumber:=inttostr(yearofdate);
  iNumLength := StrLen(sNumber);
  for i:=1 to iNumLength do
  begin
    j:=strtoint(Copy(sNumber,i,1));
    ChineseofYear[i-1]:=arALB[j];
  end; //end for
  Result:=chineseofyear;
end;

function MonthToChinese(Monthofdate : currency) :string;
begin
  var
  Chineseofmonth:array [0.1]  of string;
  sNumber := inttostr(Monthofdate);
  iNumLength := StrLen(sNumber);
  for i := 1 to iNumLength do
  begin
  j:=strtoint(copy(sNumber,i,l));
  Chineseofmonth[i-1] := arALB[j];
  end;//end for
  if chineseofmonth <>'零' then
  Result := Chineseofmonth[0] + '拾' + chineseof[1];
  else
  Result := Chineseofmonth;
  end;//end if
end;

function DayToChinese(Dayofdate : currency) :string;
begin
  var
  Chineseofday:array [0.1]  of string;
  sNumber := inttostr(Dayofdate);
  iNumLength := StrLen(sNumber);
  for i := 1 to iNumLength do
  begin
  j:=strtoint(copy(sNumber,i,l));
  Chineseofmonth[i-1] := arALB[j];
  end;//end for
  if chineseofmonth <>'零' then
  Result := Chineseofmonth[0] + '拾' +chineseof[1];
  else
  Result := Chineseofmonth;
  end;//end if
end;


function DayToChinese(Dayofdate : currency):string;

procedure TForm1.Button1Click(Sender: TObject);
begin
   T := now();
   S := yeartochinese ( yearof(t)) ;
   memo1.Lines.Clear;
   memo1.Lines.add(s);
   s := monthtochinese (monthof(t));
   memo1.lines.add(s);
   s := daytochinese (dayof(t));
   memo1.lines.add(s);
end.

回复列表 (共7个回复)

沙发

你的代码好乱,有很多地方赋值都出错了,我再帮你看下

板凳


在线等ing。。。。。

3 楼

var定义赋值在begin前~
你这样做当然出问题拉~
你换换回来看看~
把var定义调在begin前~

4 楼

function MonthToChinese(Monthofdate : currency) :string;
begin
  var
  Chineseofmonth:array [0.1]  of string;
  sNumber := inttostr(Monthofdate);
  iNumLength := StrLen(sNumber);
  for i := 1 to iNumLength do
  begin
  j:=strtoint(copy(sNumber,i,l));
  Chineseofmonth[i-1] := arALB[j];
  end;//end for
  if chineseofmonth <>'零' then
  Result := Chineseofmonth[0] + '拾' + chineseof[1];
  else
  Result := Chineseofmonth;
  end;//end if
end;

function DayToChinese(Dayofdate : currency) :string;
begin
  var
  Chineseofday:array [0.1]  of string;
  sNumber := inttostr(Dayofdate);
  iNumLength := StrLen(sNumber);
  for i := 1 to iNumLength do
  begin
  j:=strtoint(copy(sNumber,i,l));
  Chineseofmonth[i-1] := arALB[j];
  end;//end for
  if chineseofmonth <>'零' then
  Result := Chineseofmonth[0] + '拾' +chineseof[1];
  else
  Result := Chineseofmonth;
  end;//end if
end;
这段代码~

5 楼

呵呵,你的代码我改了很多,似乎还不行,得找方法重新写过,我的帮朋友也在帮忙写个,你耐心等待吧!!问一下你是不是刚学Delphi的。加一下群吧:1374103

6 楼

是的,我是刚接触DELPHI  
单位上需要,硬着头皮上的。
我以前学过C  感觉很相似  但又有那么点不一样
有点晕忽忽的  看样子要去买本书看看先

7 楼

OK,我搞定了,你看下
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DateUtils, math;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    
    { Private declarations }
  public
    function YearToChinese(yearofdate : string):string;
    function MonthToChinese(Monthofdate : string) :string;
    function DayToChinese(Dayofdate : string):string;
    { Public declarations }
  end;

var
  Form1: TForm1;
  iNumLength:Integer;//数字长度
  i,j:Integer;
  sNumber:String;
  arALB:Array[0..9] of String=('零','壹','贰','叁','肆','伍','陆','柒','捌','玖');
  S: string;
  T: TDateTime;
implementation

{$R *.dfm}
function Tform1.YearToChinese(yearofdate : string):string;
var ChineseofYear:array [0..3] of string;
begin
  for i:=1 to length(yearofdate) do
  begin
    j:=strtoint(Copy(yearofdate,i,1));
    ChineseofYear[i-1]:=arALB[j];
  end; //end for
  for i:=low(Chineseofyear) to high(chineseofyear) do
    Result:=Result+chineseofyear[i]
end;


function tform1.MonthToChinese(Monthofdate : string) :string;
var ChineseofMonth:array [0..1] of string;
begin
  for i:=1 to length(Monthofdate) do
  begin
    j:=strtoint(Copy(Monthofdate,i,1));
    ChineseofMonth[i-1]:=arALB[j];
  end; //end for
  if chineseofmonth[0] <>'零' then
  Result := Chineseofmonth[0] +  chineseofmonth[1]
  else
  begin
    for i:=low(Chineseofmonth) to high(Chineseofmonth) do
      Result := Result+Chineseofmonth[i]
  end;

end;

function tform1.DayToChinese(Dayofdate : string) :string;
var Chineseofday:array [0..1]  of string;
begin
  for i:=1 to length(Dayofdate) do
  begin
    j:=strtoint(Copy(Dayofdate,i,1));
    Chineseofday[i-1]:=arALB[j];
  end; //end for
  if Chineseofday[0] <>'零' then
  Result := Chineseofday[0] + '拾' + Chineseofday[1]
  else
  begin
    for i:=low(Chineseofday) to high(Chineseofday) do
      Result := Result+Chineseofday[i]
  end;

end;

procedure TForm1.Button1Click(Sender: TObject);
var y,m,d:word; s:string;
begin
   //T := datetostr(date);
   DecodeDate(date,y,m,d);
   S := yeartochinese (inttostr(y)) ;
   memo1.Lines.Clear;
   memo1.Lines.add(s);
   s := monthtochinese (inttostr(m));
   memo1.lines.add(s);
   s := daytochinese (inttostr(d));
   memo1.lines.add(s);

end;

end.

我来回复

您尚未登录,请登录后再回复。点此登录或注册