程序如下:
procedure TForm1.ProcedureName(Sender: TObject);
var
ss: array[0..75] of Char;
filestream: TMemoryStream;
begin
filestream := TMemoryStream.Create;
filestream.loadfromfile('D:\FileName.dat');
filestream.position := 51;
filestream.read(ss, 4);
edit1.text := strpas(ss);
filestream.free;
end;
问题是为什么从filestream里读不出内容,ss原来是什么数据,read完后还是什么数据.文件保证是存在的,而且数据也是对的.把鼠标放在ss上,显示的是#0 #0 #0 ...,读完之后还是,而在第51个字节开始的数据是0x31 0x31 0x31 0x31 ...
另外,怎么知道filestream.loadfromfile成功没成功啊?!我想在程序里加入如下代码:
filestream.position := 0;
filesize := filestream.size;
但为什么监视不了filesize的值呢?!鼠标放到上面没反应,在Debug里Add watch to cursor,提示我"Variable 'filesize' inaccessible here due to optimization",怎么回事儿?
还有如下的句子:
i := pos(' ', strpas(ss));
if i>0 then
ss[i-1] := #0;
为什么在第一行执行完之后,把鼠标放在i上能看到i的值,而第二句执行完之后就不可以了呢?加到watch里提示同上.
不知道Delphi里如何监视变量啊.
注:i和filesize我定义的都是word,filesize也定义成longint过,都不行.
procedure TForm1.ProcedureName(Sender: TObject);
var
ss: array[0..75] of Char;
filestream: TMemoryStream;
begin
filestream := TMemoryStream.Create;
filestream.loadfromfile('D:\FileName.dat');
filestream.position := 51;
filestream.read(ss, 4);
edit1.text := strpas(ss);
filestream.free;
end;
问题是为什么从filestream里读不出内容,ss原来是什么数据,read完后还是什么数据.文件保证是存在的,而且数据也是对的.把鼠标放在ss上,显示的是#0 #0 #0 ...,读完之后还是,而在第51个字节开始的数据是0x31 0x31 0x31 0x31 ...
另外,怎么知道filestream.loadfromfile成功没成功啊?!我想在程序里加入如下代码:
filestream.position := 0;
filesize := filestream.size;
但为什么监视不了filesize的值呢?!鼠标放到上面没反应,在Debug里Add watch to cursor,提示我"Variable 'filesize' inaccessible here due to optimization",怎么回事儿?
还有如下的句子:
i := pos(' ', strpas(ss));
if i>0 then
ss[i-1] := #0;
为什么在第一行执行完之后,把鼠标放在i上能看到i的值,而第二句执行完之后就不可以了呢?加到watch里提示同上.
不知道Delphi里如何监视变量啊.
注:i和filesize我定义的都是word,filesize也定义成longint过,都不行.
filestream.read(s, 4);
StrCopy(ss,s);
project->option->compile里有优化的选项,去掉optimization