以下是程序部分:
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,math, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit3: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
function yiwei(cs:byte;wshuzhi:word;var gw,dw:byte) :integer;implementation{$R *.dfm} function yiwei(cs:byte;wshuzhi:word;var gw,dw:byte) :integer; //位置二处
var
gdcs ,n1,n2: Byte ;
lsz ,lgw,ldw: Longint;
bgw ,bdw:Byte ;
begingdcs := cs;
n1 := gdcs And 240;
n1 := n1 shr 4;
n2 := gdcs And ($F); //位置三处
lsz := wshuzhi;
case n2 of //位置四处
0:
begin
bgw := LO((lsz And $FF00) shr 16);
bdw := LO(lsz And $FF) ;
end;
1 :
begin
lgw := lsz And $8000;
ldw := lsz And $7FFF;
lgw := lgw shr 15;
ldw := ldw * 2 ;
end;
2:
begin
lgw := lsz And $C000;
ldw := lsz And $3FFF; lgw := lgw shr 14;
ldw := ldw * 4;
end;
3:
begin
lgw := lsz And $E000;
ldw := lsz And $1FFF; lgw := lgw shr 13;
ldw := ldw * 8;
end; End; lsz := lgw Or ldw; lgw := lsz And $FF00;
ldw := lsz And $FF; lgw := lgw shr 16;
bgw := LO(lgw) ; bdw := LO(ldw) ;
result:=9; //位置五处
end; //位置六处
procedure TForm1.Button1Click(Sender: TObject);
var
aa,bb,cc:byte;
dd,ee:word;
begin
dd:=58000;
aa:=1;
ee:=yiwei(aa,dd,bb,cc); //位置一处
edit3.Text := inttostr(bb);
edit4.Text:=inttostr(cc);end;end.以上这段程序中,当在位置一处调用yiwei函数后,在执行到此函数内部时,程序运行很奇怪,依次直接跳至位置二、三、四、五、六处,两个位置之间的代码一概不执行。为知道为什么,请教大家。
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,math, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit3: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
function yiwei(cs:byte;wshuzhi:word;var gw,dw:byte) :integer;implementation{$R *.dfm} function yiwei(cs:byte;wshuzhi:word;var gw,dw:byte) :integer; //位置二处
var
gdcs ,n1,n2: Byte ;
lsz ,lgw,ldw: Longint;
bgw ,bdw:Byte ;
begingdcs := cs;
n1 := gdcs And 240;
n1 := n1 shr 4;
n2 := gdcs And ($F); //位置三处
lsz := wshuzhi;
case n2 of //位置四处
0:
begin
bgw := LO((lsz And $FF00) shr 16);
bdw := LO(lsz And $FF) ;
end;
1 :
begin
lgw := lsz And $8000;
ldw := lsz And $7FFF;
lgw := lgw shr 15;
ldw := ldw * 2 ;
end;
2:
begin
lgw := lsz And $C000;
ldw := lsz And $3FFF; lgw := lgw shr 14;
ldw := ldw * 4;
end;
3:
begin
lgw := lsz And $E000;
ldw := lsz And $1FFF; lgw := lgw shr 13;
ldw := ldw * 8;
end; End; lsz := lgw Or ldw; lgw := lsz And $FF00;
ldw := lsz And $FF; lgw := lgw shr 16;
bgw := LO(lgw) ; bdw := LO(ldw) ;
result:=9; //位置五处
end; //位置六处
procedure TForm1.Button1Click(Sender: TObject);
var
aa,bb,cc:byte;
dd,ee:word;
begin
dd:=58000;
aa:=1;
ee:=yiwei(aa,dd,bb,cc); //位置一处
edit3.Text := inttostr(bb);
edit4.Text:=inttostr(cc);end;end.以上这段程序中,当在位置一处调用yiwei函数后,在执行到此函数内部时,程序运行很奇怪,依次直接跳至位置二、三、四、五、六处,两个位置之间的代码一概不执行。为知道为什么,请教大家。
为什么CASE语句运行异常呀。大哥,快帮帮我吧。
注意,用Ctrl+F9是不行的,也就是说,用Compiler不行,必须Build
为了加快编译速度,Compile只编译修改部份的代码,而Build则是不管改没改,都全部重来,同时,如果你把Project的版本号设为自动增加,则Build还要更新一次版本号