以下是程序部分:
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函数后,在执行到此函数内部时,程序运行很奇怪,依次直接跳至位置二、三、四、五、六处,两个位置之间的代码一概不执行。为知道为什么,请教大家。

解决方案 »

  1.   

    在IDE下,Project-> Options-> Code   Generation页下,在   去掉Optimization前的勾 把编译器优化去掉,再重新BUILD一次,所有的代码码都会执行了。
      

  2.   

    位置   2-3、3-4、4-5之间的代码都不执行,按逻辑,n=1,程序至少应该在case语句中的1:处执行一下中,但是程序执行到位置四处,而后直接跳到位置五处,4-5之间的代码一概不执行。你可以直接把这段代码复制到你的程序中,在窗体上加上一个按钮和四个EDIT文本框即可。
      

  3.   


    为什么CASE语句运行异常呀。大哥,快帮帮我吧。
      

  4.   

    我试过,可以的,把Optimization去掉后,一定要通过菜单的Project->build重新编译一次。
    注意,用Ctrl+F9是不行的,也就是说,用Compiler不行,必须Build
      

  5.   


    为了加快编译速度,Compile只编译修改部份的代码,而Build则是不管改没改,都全部重来,同时,如果你把Project的版本号设为自动增加,则Build还要更新一次版本号