倾尽所有家产,大家帮我看看这是出了什么问题 ( 积分: 50 )

  • 主题发起人 主题发起人 channelxp
  • 开始时间 开始时间
C

channelxp

Unregistered / Unconfirmed
GUEST, unregistred user!
首先是我的代码:
function TMessageSendForm.SaveMsgData(MsgData: array of string): Boolean;
var
i: Integer;
F: TextFile;
begin
Result := False;
CurrentPath := ExtractFilePath(ParamStr(0));
if not FileExists(CurrentPath + '/a.txt') then
FileCreate(CurrentPath + '/a.txt');

AssignFile(F, CurrentPath + '/a.txt');
Append(F);
for i := 0 to Length(MsgData) - 1 do
begin
case i of
0: Writeln(F, '发送日期: ' + MsgData);
1: Writeln(F, '发送时间: ' + MsgData);
2: Writeln(F, '接收用户姓名: ' + MsgData);
3: Writeln(F, '接收电话号码: ' + MsgData);
4: Writeln(F, '短信内容: ' + MsgData);
5: Writeln(F, '是否成功: ' + MsgData + #13#10);
end;
end;
CloseFile(F);
Result := True;
end;
如果CurrentPath + '/a.txt'存在的话,程序没有问题,但要是CurrentPath + '/a.txt'不存在要创建的时候,程序就会报错说"I/O error 32",请问这是什么原因呢,怎么解决?
 
如果不存在就自动建立一个空的A.TXT文件就可以了。
 
呵呵,改一个字符即可
'/a.txt' 改为 'a.txt'
 
function TMessageSendForm.SaveMsgData(MsgData: array of string): Boolean;
var
i: Integer;
F: TextFile;
begin
Result := False;
CurrentPath := ExtractFilePath(ParamStr(0));
AssignFile(F, CurrentPath + '/a.txt');
if not FileExists(CurrentPath + '/a.txt') then
ReWrite(F)
else
Append(F);
for i := 0 to Length(MsgData) - 1 do
...
 
同的三楼的
 
3楼的不行哦,还是错啊,我用最简单的'C:/a.txt',不用取当前路径都不行,所以应该不是路径的问题
 
文件能创建成功,就是AssignFile(F, CurrentPath + '/a.txt');开始报错,插不进数据了
 
{$I-}
AssignFile(F, CurrentPath + '/a.txt');
if not FileExists(CurrentPath + '/a.txt') then
ReWrite(F);

Append(F);
 
4楼的方法也是会报同样的错'I/0 error 32'
 
4楼的思路是对了,就是多了个else,所以wql的成功了
 
我把你的函数修正了一下,应该没有什么异常了。

function SaveMsgData(MsgData: array of string): Boolean;
var
i: Integer;
F: TextFile;
CurrentPath:String;
NillFile:TMemo;
begin
Result := False;
CurrentPath := ExtractFilePath(ParamStr(0));
if not FileExists(CurrentPath + 'a.txt') then
begin
NillFile:=TMemo.Create(Nil);
NillFile.Text:=#13#10;
NillFile.Lines.SaveToFile(CurrentPath+'a.txt');
NillFile.Free;
end;

AssignFile(F, CurrentPath + 'a.txt');
Append(F);

for i := 0 to Length(MsgData) - 1 do
begin
case i of
0: Writeln(F, '发送日期: ' + MsgData);
1: Writeln(F, '发送时间: ' + MsgData);
2: Writeln(F, '接收用户姓名: ' + MsgData);
3: Writeln(F, '接收电话号码: ' + MsgData);
4: Writeln(F, '短信内容: ' + MsgData);
5: Writeln(F, '是否成功: ' + MsgData + #13#10);
end;
end;
CloseFile(F);
Result := True;
end;
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
843
import
I
I
回复
0
查看
1K
import
I
I
回复
0
查看
719
import
I
后退
顶部