Memo->Lines->SaveToFile()?(50分)

  • 主题发起人 主题发起人 wangliang
  • 开始时间 开始时间
W

wangliang

Unregistered / Unconfirmed
GUEST, unregistred user!
Builder4中程序运行到如下语句时,出错:
Memo->Lines->SaveToFile("gauge//fhl.cal");
错误提示如下:
Project Zpg200.exe raised exception class EFCreateError with
message 'Cannot create file gauge/fhl.cal'. Process stopped.
程序运行目录下有guage目录,且其中也有fhl.cal文件。
请各位高手指点迷津.
 
是不是该文件已经被其他程序打开了?
或者存在目录权限问题?
 
贴出代码...
 

可能有以下两种可能:
1、原来已经存在fhl.cal,且其属性为只读
2、目录不对
 
加上下面两句:
AnsiString Dir = ExtractFilePath(Application->ExeName) + "gauge";
ForceDirectories(Dir);
Memo1->Lines->SaveToFile("gauge//fhl.cal");
是否出贼?
 
Is the file in a network mochine??
Do you have the right of writing?
 
同意Croco.
你程序运行时的"当前目录"可不一定是你"程序所在目录"哦.
 
还是不行,程序当前目录应该没错.
Memo中的文本来自
Memo->Lines->LoadFromFile("gauge//fhl.cal");
程序的功能是修改这个文本文件后存盘.
如果我改变保存文件名不会出错如:
Memo->Lines->SaveToFile("gauge//fhl.rlt");
我并没有设置文件属性为只读啊,为什么不行?
程序段如下:
if(Memo->Modified)
{
int iResult=Application->MessageBox("确实要修改这些数据吗?",
"警告",MB_YESNO|MB_ICONQUESTION);
if(iResult==IDNO)
return;
char str[80];
strcpy(str,sFileName);
//sFileName="d:/zpg2000/gauge/fhl.cal";程序当前目录为d:/zpg2000
str[strlen(sFileName)-4]='/0';
char sTemp[100];
sprintf(sTemp,"%s.bak",str);
if(!CopyFile(sFileName,sTemp,false))//备份
{
Application->MessageBox("文件备份失败","文件错误",MB_ICONSTOP);
return;
}
Memo->Lines->SaveToFile(sFileName);//这句出错
sprintf(sTemp,"%s.RLT",str);
Memo->Lines->SaveToFile(sTemp);//这句没问题
sprintf(sTemp,"原有数据将被保存在%s.BAK中/n",&str);
if(DlgDemManage->RadioButtonSingle->Checked)
strcat(sTemp,"执行/"重新计算/"功能可修改最终结果");
else
strcat(sTemp,"执行/"重新计算/"功能可恢复原有数据");
Application->MessageBox(sTemp,"消息",MB_OK);
Memo->Modified=false;
}
 
我真苯,我在程序的其他部分用fopen打开了这个文件,
但关闭却在这个程序段的后面.
麻烦大家了!
 
多人接受答案了。
 
后退
顶部