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

InI檔放於Server多入存取時,會錯誤無法存取??

尚未結案
jeffreck
高階會員


發表:247
回覆:340
積分:197
註冊:2003-01-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-06 09:37:39 IP:61.218.xxx.xxx 未訂閱
請教各位前輩    InI檔放於Server多入存取時,會錯誤無法存取??    我有一個系統,當執行時會去讀取'I:\AppINI\LogSale.ini' 這個ini檔取得SQL Server名稱,I:\ 是網路伺服器主機的目錄(Win2000 Server)    因同時約有 30台PC在使用這系統,有時I:\AppINI\LogSale.ini 這檔案會無法開啟 去查看Server 會有User 一直在讀取這檔案不關閉,但用檔案總管去開LogSale.ini ,可以正常開啟,但程式就無法執行,直到我強行在Server關閉User的存取, 之後才可以正常存取    這問題並不是每次都會,是偶爾會發生,不知問題在那??    感謝各位前輩!!    
    procedure TSYSData.DataModuleCreate(Sender: TObject);
var
  strINIPath: string;
  infINIFile: Tinifile;
  StrDataSource: string;
begin
  FV_OpenRight := False;      strINIPath := 'I:\AppINI\LogSale.ini';      if not FileExists(strINIPath) then
  begin
    FunMessageBox.Message_OK_ERROR('找不到檔案:'   strINIPath, '系統載入錯誤');
    abort;
  end;      //-----------------------------------------
  try
    infINIFile := TiniFile.Create(strINIPath);
  except
    FunMessageBox.Message_OK_ERROR('無法開啟檔案:'   strINIPath, '系統載入錯誤');
    infINIFile.Free;
    abort;
  end;
  //--------------      StrDataSource := infINIFile.ReadString('DataBase', 'DataSource', '');
  infINIFile.Free;
  if StrDataSource = '' then
  begin
    FunMessageBox.Message_OK_ERROR('無法取得伺服器名稱', '系統載入錯誤');
   abort;
  end;      //--------
  try        FV_DataSource := StrDataSource;
    self.cnt_SaleTable.Close;        self.cnt_SaleTable.ConnectionString :=
      'Provider=SQLOLEDB.1;'  
      'Integrated Security=SSPI;'  
      'Persist Security Info=False;'  
      'Initial Catalog=A_SaleTable;'  
      'Data Source='   StrDataSource   ';'  
      'Use Procedure for Prepare=1;'  
      'Auto Translate=True;'  
      'Packet Size=4096;'  
      'Use Encryption for Data=False;'  
      'Tag with column collation when possible=False';        self.cnt_SaleTable.Open;      except
    FunMessageBox.Message_OK_ERROR('無法連線資料庫:'   StrDataSource, '系統載入錯誤');
    self.cnt_SaleTable.ConnectionString := '';
    abort;
  end;      FV_OpenRight := True
end;  
tonytop
中階會員


發表:6
回覆:114
積分:89
註冊:2003-12-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-01-06 14:32:31 IP:210.64.xxx.xxx 未訂閱
先釋放後再秀訊息會比較好吧!不然檔案一直開啟著
 
//-----------------------------------------
  try
    infINIFile := TiniFile.Create(strINIPath);
  except
    infINIFile.Free;
    FunMessageBox.Message_OK_ERROR('無法開啟檔案:'   strINIPath, '系統載入錯誤');
    abort;
  end;
  //--------------
忙盲茫
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-01-06 15:22:00 IP:61.71.xxx.xxx 未訂閱
我想分幾個方向來看 1.window的特性是當open一個file時會有lock的問題, 所以如果第2個企圖去存 取同一個檔時極有可能會出問題, 最簡單的測試法, 開啟一個檔後, 嘗試去刪除 該檔, 系統會告訴你檔案正在被使用中 2.既然你透過I來讀取這個資料, 不如這樣考慮 程式啟動後先copy到單機, 再從單機來讀取ini檔就可以解決共享問題, 而且 因為不透過server存取, 也可以降低server的負荷及加快速度!
系統時間:2024-06-02 2:32:45
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!