请问下面的语句错在哪里了?(10分)

  • 主题发起人 主题发起人 衫菜
  • 开始时间 开始时间

衫菜

Unregistered / Unconfirmed
GUEST, unregistred user!
[?]
下面的函数可以依次把存在一个文件里的两个文件读出来,并保存到相关文件中去,
可是在读第一个的时候是正确的,在读第二个的时候就出错了,请帮忙指点我一下!


Function Cjt_LoadFromFile(SourceFile,TargetFile :string):Boolean;
var
Source:TFileStream;
Target:TMemoryStream;
MyFileSize,mm1:integer;
begin
try
Target:=TMemoryStream.Create;
Source:=TFileStream.Create(SourceFile,fmOpenRead or fmShareDenyNone);
try

Source.Seek(-sizeof(MyFileSize),soFromEnd);
Source.ReadBuffer(MyFileSize,sizeof(MyFileSize));//读出资源大小
Source.Seek(-MyFileSize,soFromEnd);//定位到资源位置
Target.CopyFrom(Source,MyFileSize-sizeof(MyFileSize));//取出资源
Target.SaveToFile('E:/CSdelphi资料大全/tmp_3.txt');//存放到文件
//上面是对的!
target.Free;
target:=tmemorystream.Create;

Source.Seek(-sizeof(mm1),soFromcurrent);
Source.ReadBuffer(mm1,sizeof(mm1));//读出资源大小
Source.Seek(-mm1,soFromcurrent);//定位到资源位置
Target.CopyFrom(Source,mm1-sizeof(mm1));//取出资源
//这里就出错了,说读STREAM的时候有错误!!!
Target.SaveToFile('E:/CSdelphi资料大全/tmp_2.txt');//存放到文件
finally
Target.Free;
Source.Free;
end;
except
Result:=false;
Exit;
end;
Result:=true;
end;
 
将定义为全局变量,放在系统函数或过程定义之前应当就可以了!

注意定义成[red]全局变量[/red]!
 
你只需要知道,Target.CopyFrom也會讓Source移動當前位置就應該明白哪裡錯了
所以你的mm1的數值肯定很大,對吧?
 
是啊,我的MM1数值真的很大,可是为什么第一个的数值就很正确的呢???
 
我该怎么办呢!!!!!!!!
 
请帮帮我!
 
想通了,谢谢!
 
后退
顶部