就两句话的程序也搞不定! (100分)

  • 主题发起人 主题发起人 fbc-gc
  • 开始时间 开始时间
F

fbc-gc

Unregistered / Unconfirmed
GUEST, unregistred user!
program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;
var
Buffer:Pointer;
begin
{ TODO -oUser -cConsole Main : Insert code here }
writeln(Integer(Buffer));
GetMem(Buffer,10*1024*sizeof(byte));
writeln(Integer(Buffer));
FillChar(Buffer,10*1024*sizeof(byte),0);//出错
readln;
end.
执行到FillChar(Buffer,10*1024*sizeof(byte),0);时出错!好像是非法访问地址。
我看了半天也没看出来错误。
 
Buffer : pchar
 
把Buffer定义成 pchar也不行,和原来一样。
不会是我机器的问题吧?
 
我把程序编译后在控制台下执行,执行到FillChar(Buffer,10*1024*sizeof(byte),0)这句时
就出错退出,后面的程序没有执行,和freepascal编译的程序执行一样。
 
buffer象不应该定义为:pointer的吧

记得buffer应该是一块内存区域。

没有类型的。
 
delphi6的帮助里是这么定义的:
procedure GetMem(var P: Pointer
Size: Integer);
FillChar(var X
Count: Integer
Value: Byte);
//////////////////////////////
是不是不能用fillchar填充一块内存空间呀?
那用什么方法?
我想从TMemoryStream中读入其中的一段数据写到一个TFileStream中,有没有好方法?
 
别用GETMEM吧!
把POINTER换成一个CHAR数组吧!
一定行!
 
既然你要用 Buffer:Pointer;
那么从语法而言应该是 FillChar(Buffer^,10*1024*sizeof(byte),$AA);
 
再次感谢YB_unique。一语道破天机!
 
buffer不是指针,不要传递变量的地址,而是传递变量本身!
 
后退
顶部