当前位置:主页>销售管理软件> 列表

将文件型变量通过函数传出,该怎么实现?

记账软件版1楼: 文件型变量
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是用的无类型参数,
实在受不了,一头雾水,没有看到这样的需求过啊

2楼: 这样就可以啦
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; 如速达软件

3楼: 无类型文件,可以这样
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;

4楼: 用pchar传地址呢?

5楼: Thanks,lichengbin



:可以作为返回值吗

6楼: 可以

记账软件版7楼: 下午试试实现,成功就加分

8楼: 接受答案了.