将文件型变量通过函数传出,该怎么实现? ( 积分: 100 )

  • 主题发起人 主题发起人 魏启明
  • 开始时间 开始时间

魏启明

Unregistered / Unconfirmed
GUEST, unregistred user!
文件型变量
A:file of RecordType;
如何通过函数传递出来
我试过函数返回值和传地址参数都没有实现。

本身目的就是提供一个文件访问的句柄,而不要显示具体访问的文件。
通过类成员函数返回成员变量。
procedure TLogRecordFile.LogFile(var F: File
ADate: TDateTime);
begin
if ADate <> ThisDate then
begin

end
else
begin
F := FLogFile;
end;
end;

我在试验时发现
procedure TForm1.Button1Click(Sender: TObject);
var
F1,F2:TextFile;
begin
AssignFile(F1,'C:/A');
F2:=F1;//??
end;
无法执行。
同时AssignFile的F1是用的无类型参数,
实在受不了,一头雾水,没有看到这样的需求过啊
 
文件型变量
A:file of RecordType;
如何通过函数传递出来
我试过函数返回值和传地址参数都没有实现。

本身目的就是提供一个文件访问的句柄,而不要显示具体访问的文件。
通过类成员函数返回成员变量。
procedure TLogRecordFile.LogFile(var F: File
ADate: TDateTime);
begin
if ADate <> ThisDate then
begin

end
else
begin
F := FLogFile;
end;
end;

我在试验时发现
procedure TForm1.Button1Click(Sender: TObject);
var
F1,F2:TextFile;
begin
AssignFile(F1,'C:/A');
F2:=F1;//??
end;
无法执行。
同时AssignFile的F1是用的无类型参数,
实在受不了,一头雾水,没有看到这样的需求过啊
 
这样就可以啦
procedure ReadContent(var F: TextFile
var S: string);
begin
Readln(F, S);
end;
用无类型参数也是可以的
procedure ReadContent(var F
var S: string);
begin
Readln(TextFile(F), S);
end;

var
F1, F2: TextFile;
S: string;
begin
AssignFile(F1, 'f:/vmt.txt');
TTextRec(F2) := TTextRec(F1);
Reset(F2);
//Readln(F2, S);
ReadContent(F2, S);
Memo1.Lines.Add(S);
CloseFile(F2);
end;
 
无类型文件,可以这样
procedure ReadContent(var F
var S: string);
begin
BlockRead(file(F), Pointer(S)^, Length(S));
end;

var
F1, F2: file;
S: string;
begin
SetLength(S, 10);
AssignFile(F1, 'f:/vmt.txt');
TFileRec(F2) := TFileRec(F1);
Reset(F2, 1);
ReadContent(F2, S);
Memo1.Lines.Add(S);
ReadContent(F2, S);
Memo1.Lines.Add(S);
CloseFile(F2);
end;
 
用pchar传地址呢?
 
Thanks,lichengbin



:可以作为返回值吗
 
下午试试实现,成功就加分
 
接受答案了.
 

Similar threads

回复
0
查看
978
不得闲
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部