帮我改个程序好吗?(20分)

  • 主题发起人 主题发起人 bbtwo33
  • 开始时间 开始时间
B

bbtwo33

Unregistered / Unconfirmed
GUEST, unregistred user!
返回值有问题!
function TForm1.GetWavLength(FileName : String): integer;
var Head : Array[0..43] of Char;
ReadFile : file;
NumRead, length : integer;

begin

length := 0;
AssignFile(ReadFile,FileName);
Reset(ReadFile,2);
BlockRead(ReadFile,Head,44,NumRead);

CopyMemory(@length,Head + 40,4);

CloseFile(ReadFile);

Result := length;
end;


这个函数就是想得到WAVE文件中声音数据的长度所以读前面44字节的文件头中的最后四个字节为声音文件的长度,然后将长度返回
执行到最后Result的时候有内存错误
谢谢各位了,我没有多少分了!所以请多包涵
 
Reset(ReadFile,1);

seek(ReadFile,40);
blockread(ReadFile,datalength,4);

或者move(Head[40],datalength,4);
不好将函数 length 作变量名
 
function TForm1.GetWavLength(FileName : String): integer;
var Head : Array[0..43] of Char;
ReadFile : file;
NumRead, length : integer;

begin

length := 0;
AssignFile(ReadFile,FileName);
Reset(ReadFile);
BlockRead(ReadFile,Head,44,NumRead);
CloseFile(ReadFile);
Result := strtoint(Head[40]+Head[41]+Head[42]+Head[43]);
end;
 
谢谢,能不能告诉我我的程序问题出在哪呢?
 
接受答案了.
 
后退
顶部