全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1188
推到 Plurk!
推到 Facebook!

RichEdit元件LoadFromFile所產生的問題?

尚未結案
g6101
高階會員


發表:22
回覆:129
積分:110
註冊:2002-06-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-07-11 22:32:54 IP:163.29.xxx.xxx 未訂閱
大家好: 小弟在使用RichEdit元件的巨集(LoadFromFile/SaveToFile)載入/存入檔案時,檔名或路徑若使用中文名稱常引發例外錯誤,不知如何解決,還請大家不吝賜教,謝謝!    底下為BCB所返回的錯誤原因,其所用語法為Delphi,實在是看不懂,請大家幫忙看看如何? <...\vcl\Classes.pas> constructor TFileStream.Create(const FileName: string; Mode: Word; Rights: Cardinal); begin if Mode = fmCreate then begin inherited Create(FileCreate(FileName, Rights)); if FHandle < 0 then raise EFCreateError.CreateResFmt(@SFCreateError, [FileName]); end else begin inherited Create(FileOpen(FileName, Mode)); if FHandle < 0 then raise EFOpenError.CreateResFmt(@SFOpenError, [FileName]); end; end; ps.我的系統為WIN2K BCB6.0 SP4 ◎天長地久有時盡,追求知識無絕期!
nlj859
資深會員


發表:139
回覆:375
積分:322
註冊:2004-03-20

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-07-12 00:00:40 IP:219.81.xxx.xxx 未訂閱
Hello g6101,    請參考使用TRichEdit去LoadFromFile/SaveToFile的用法.
void __fastcall TForm1::btnLoadClick(TObject *Sender)
{
if (OpenDialog1->Execute())
  {
   if (FileExists(OpenDialog1->FileName))
      {
       RichEdit1->Lines->LoadFromFile(OpenDialog1->FileName);
      }
   }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btnSaveClick(TObject *Sender)
{
  if (SaveDialog1->Execute())
   {
    if (!FileExists(SaveDialog1->FileName))
       {
        RichEdit1->Lines->SaveToFile(SaveDialog1->FileName);
       }
    }
}
pwipwi
版主


發表:68
回覆:629
積分:349
註冊:2004-04-08

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-07-12 15:59:08 IP:211.76.xxx.xxx 未訂閱
g6101你好:    vcl在檔案處理方面還是用CreateFileA,如果檔名是簡體中文可能會造成無法開新檔案。這時可以試把儲存的過程改成用WideString和CreateFilwW。看看能不能解決你的問題,參考下面的Code     
 
//---------------------------------------------------------------------------
int FileCreateW(const WideString& FileName)
{
return (int)CreateFileW(FileName.c_bstr(),GENERIC_READ|GENERIC_WRITE,
    0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
}
//---------------------------------------------------------------------------
void SaveToFileW(const WideString& FileName,TStrings* Lines)
{
TStream* Stream = new THandleStream(FileCreateW(FileName));
try
    {
    Lines->SaveToStream(Stream);
    }
__finally
    {
    delete Stream;
    }
}    void __fastcall TForm1::Button1Click(TObject *Sender)
{
SaveToFileW("c:\\檔案.txt",RichEdit1->Lines);
}
//--    
系統時間:2024-05-14 9:39:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!