关于 FOR循环的简单问题(0分)

  • 主题发起人 主题发起人 z_f123
  • 开始时间 开始时间
Z

z_f123

Unregistered / Unconfirmed
GUEST, unregistred user!
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
OpenDialog1: TOpenDialog;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure getsigdata (strs:string) ;
end;

var
Form1: TForm1;
aaa:array[1..21] of boolean;
implementation

{$R *.dfm}
var sigdataarray:array[1..21] of string ;
procedure tform1.getsigdata (strs:string) ;
var i ,i1:integer;
strk,strk1,strk2:string;
doubdata:double;
begin
i1:=length(strs);
for i:=1 to i1 do
begin
strk:=copy(strs,i,1);
strk1:=strk1+strk;
if (strk=' ') then
begin
doubdata:=strtofloat(trim(strk1));
strk2:=formatfloat('0.00',doubdata);
edit1.Text :=strk2;
sigdataarray:= strk2;
doubdata:=0.00;
strk1:='';
strk:='';
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var fopen :textfile;
nopen:string;
DATASTR:STRING;
i:integer;
begin
if opendialog1.Execute then
nopen:=opendialog1.FileName;
assignfile(fopen,nopen); //
if fileexists(nopen) then
begin
RESET(FOPEN);
READLN(FOPEN,DATASTR);
getsigdata (DATASTR);
for i:=1 to 21 do // 问题出在这里:当单步运行时候 会发现I的值是从21减到
//1 的 ,而不是又1 递增到 21 这是为什么?
begin
aaa:=true;
end;
end;
end;

end.
 
怎么没有人回答呀
分我先欠着 攒够我一定奉上
先 看看 解决一下吧
 
那是Delphi进行了优化
 
汗 这个问题 我想太深了!
 
那这个问题 就是如法解决吗 ?
 
不可能吧
 
对不起,你看错了;不可能的
 
这是delphi为了加快执行速度而进行的优化,正常的。
 
但是这样 会造成读数的不准确
 
难道 只能将错就错?
 
错在哪里???
何来的将错就错?????
 
不会错的,以下是测试程序:
var
a : array [1..21] of byte;
i,j:byte;
begin
j := 1;
for i := 1 to 21 do
begin
a := j;
inc(j);
end;

memo1.Lines.Add(inttostr(a[1]));
memo1.Lines.Add(inttostr(a[2]));
memo1.Lines.Add(inttostr(a[3]));
memo1.Lines.Add(inttostr(a[4]));
memo1.Lines.Add(inttostr(a[5]));
memo1.Lines.Add(inttostr(a[6]));
memo1.Lines.Add(inttostr(a[7]));
memo1.Lines.Add(inttostr(a[8]));
可以看到输出的是1-8,而不是21-14。
 
for i := Low(aaa) to High(aaa) do
begin
aaa := true;
end;
 
接受答案了.
 
后退
顶部