这个程序真是怪,怪得出奇,我急用,急,急,急,请帮帮忙,看看,谢谢!在线等待!再次提出!请帮帮忙,看看,谢谢! (30分)

  • 主题发起人 主题发起人 ※快乐点滴※
  • 开始时间 开始时间

※快乐点滴※

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大富翁,一个小小的问题就是我想读取一个文件,用是的如下代码:但是奇怪的就是当我读取一个文件后,此文件就不能用了,比如说,当我读取一个.rm文件后,此文件将不能再放了,并且文件变小了,都是青一色的大小,128字节,并且如果这个.rm文件不存在,执行后就自动新生成一个.rm文件,我简直无语了,请各位富翁帮我找找原因,先谢谢了哈!
窗体控件如下:窗体上有一个buttom和一个ProgressBar1,
buttom上写了如下代码:
procedure TRead.StartClick(Sender: TObject);
const
FName='rm.rm';
var
F:File;
MyData:array[1..2048] of byte;
BytesRead:LongInt;
begin
AssignFile(F,FName);
try
Reset(F);
Read.ProgressBar1.Max:=FileSize(F);
if (Read.ProgressBar1.Max>10) then
Read.ProgressBar1.Step:=Read.ProgressBar1.Max div 10
else
Read.ProgressBar1.Step:=Read.ProgressBar1.Max;
while (Read.ProgressBar1.Position<Read.ProgressBar1.Max) do
begin
BlockRead(F,MyData,Read.ProgressBar1.Step,BytesRead);
Read.ProgressBar1.StepIt;
end;
finally;
CloseFile(F);
end;
end;
窗体上写了如下代码:
procedure TRead.FormCreate(Sender: TObject);
const
FName='rm.rm';
var
F:File;
MyData:array[1..2048] of byte;
result:integer;
begin
AssignFile(F,FName);
Rewrite(F);
fillchar(mydata,sizeof(mydata),'A');
BlockWrite(F,MyData,1,result);
closefile(f);
end;
请各位富翁帮我看看,找找原因,先谢谢了哈!注:我是照到书上抄的,不是自己写的哈!
不好意思哈,我没多少钱了,只好这样先给这点,不是我舍不得,而是我怕这点钱花光了就玩完了,真不意思,请大家给给面子,回答一下哈,谢谢!下次一定多给点!
 
下面的原因

procedure TRead.FormCreate(Sender: TObject);
const
FName='rm.rm';
var
F:File;
MyData:array[1..2048] of byte;
result:integer;
begin
AssignFile(F,FName);
Rewrite(F)
//覆盖写文件
fillchar(mydata,sizeof(mydata),'A');
BlockWrite(F,MyData,1,result)
closefile(f);
end;
 
Rewrite(F);错误,这个可是覆盖写的代码
 
请你们说详细一点哈,我倒底应该怎样做才对,我知道有很大的问题,请各位说清楚一点哈,谢谢!我等你们的答案哈,88!
 
begin
AssignFile(F,FName);
[red]Reset(F);[/red]
fillchar(mydata,sizeof(mydata),'A');
BlockWrite(F,MyData,1,result);
closefile(f);
end;
 
书上的是错了,全信书不如无书.逐一分析.
procedure TRead.FormCreate(Sender: TObject);
const
FName='rm.rm';
var
F:File;
MyData:array[1..2048] of byte;
result:integer;
begin
AssignFile(F,FName);//F指针指向'rm.rm'文件
Rewrite(F)
//文件在,覆盖,文件不在,创建
fillchar(mydata,sizeof(mydata),'A');//充填字符A到数组MyData
BlockWrite(F,MyData,1,result);//把mydata数组中'A'数据写到F指向的文件中
closefile(f);//关闭文件.
end;
forcreat执行完后,你的默认目录下生成了一个大小为128字节的文件.
procedure TRead.StartClick(Sender: TObject);
这个对象方法什么也没做,只是把已有文件内容逐一的读到了数组mydata中,然后覆盖再读在覆盖,直到读完为止,最后关闭文件,文件大小还为128字节.
//////
买书也要买好书啊,中国人自己写的书很垃圾的.给你推荐几本:
delphi6开发人员指南.118元,内容很全.delphi5开发人员指南138元
刘艺和李维的书,那可是精品.现在我就在看他们的书.
多上DFW来看帖子,问问题,很有帮助.


 
把过程 procedure TRead.FormCreate(Sender: TObject) 按下面照抄就行,抄吧:
const
FName = 'rm.rm';
var
F: file;
MyData: array[1..2048] of Byte;
begin
AssignFile(F,FName);
if FileExists(FName) then
Reset(F)
else
Rewrite(F);
fillchar(mydata,sizeof(mydata), 'A');
BlockWrite(F,MyData,sizeof(mydata) div 128);
closefile(f);
end;
 
谢谢各位!我再回去试试,下次再来会大家!以后还望大家多多关照!
 
谢谢在家!
 
谢谢,我再回去研究一下哈,谢了!
 
后退
顶部