線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:5913
推到 Plurk!
推到 Facebook!

Format '%s' invalid or incompatible with argument 的問題

答題得分者是:GrandRURU
younger98
一般會員


發表:2
回覆:4
積分:1
註冊:2010-11-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2011-02-10 17:49:59 IP:61.220.xxx.xxx 訂閱
小弟目前將手邊的Delphi 5程式轉換為Delphi XE版本,遇到了下面的問題
我在Frame裡放了一個TDataSource(名稱為QuotationMDS)
這個DataSource用來顯示一些DBText
在DataSource的BeforeGetRecord事件內撰寫下面的程式

[code delphi]
procedure TTool2.QuotationMCBeforeGetRecords(Sender: TObject;
var OwnerData: OleVariant);
begin
OwnerData := VarArrayOf([Person,QuotationFrame.InputEdit.Text,QuotationFrame.vOwnerData]);
end;
[/code]

執行完這行後出現下面的錯誤訊息:
Project Project1.exe raised exception class EOleException with message 'Format '%s' invalid or incompatible with argument'.

因為是三層式架構,所以有先在server端程式確認過DataSetProvider確實有取得資料並回傳至Client端
但不知為何在BeforeGetRecord事件後,就出現錯誤訊息
描寫得滿模糊的,不過希望各位先進建議小弟debug的方向
先謝謝啦!

P.D.
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2011-02-10 22:52:27 IP:118.169.xxx.xxx 未訂閱
抱歉, 先說一聲, 我無法提出解答, 只是最近開始研究, 並看了站上一些先進的回覆, 我認為應該是DELPHI XE 的字串定義已由原來內定STRING架構改為UNICODE 的WIDESTRING定義了, 所以才會引發如此問題, 但如何調整, 真的SORRY, 還沒接觸到, 我也想知道答案
GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2011-02-11 09:38:54 IP:203.75.xxx.xxx 未訂閱
 我沒有辦法還原大大所說的問題

目前測試的環境是
Delphi 2010 (沒有XE,但應該是差不多)
TDatabase TTable TDataSetProvider TClientDataSet
測試的資料庫是 BDE 內建的 DBDemos

測試code就比較陽春了
[code delphi]
procedure TForm1.ClientDataSet1BeforeGetRecords(Sender: TObject; var OwnerData: OleVariant);
begin
OwnerData := VarArrayOf([DBEdit1.Text]);
end;
[/code]

放了幾個中文字,也沒有出現大大說的問題
還請大大再詳述些,謝謝。
編輯記錄
GrandRURU 重新編輯於 2011-02-10 18:39:58, 註解 無‧
GrandRURU 重新編輯於 2011-02-10 18:40:35, 註解 無‧
younger98
一般會員


發表:2
回覆:4
積分:1
註冊:2010-11-17

發送簡訊給我
#4 引用回覆 回覆 發表時間:2011-02-11 11:50:30 IP:61.220.xxx.xxx 訂閱
原本以為是在顯示資料時的format出現問題
所以我試過把TClientDataSet裡的欄位全部刪除後
再連至TDataSetProvider後重抓
但這個問題還是存在

另外GrandRURU測試的方式,我也自己測了一下
是可以正常執行的
專案裡面也有許多程式是用這種寫法來做的
也都可以正常執行
就只有這支程式在執行後會出現這個問題

歡迎大家一起討論可能出現問題的原因
謝謝!
GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#5 引用回覆 回覆 發表時間:2011-02-13 07:48:17 IP:111.249.xxx.xxx 未訂閱
你可以試著把有問題的TABLE內的資料匯出到PARADOX後,再用上述的測試方式嘗試看會不會也有相同的問題

或是採用單筆讀取的方式試試看,是否每一筆都會出現相同的錯誤

===================引 用 younger98 文 章===================
原本以為是在顯示資料時的format出現問題
所以我試過把TClientDataSet裡的欄位全部刪除後
再連至TDataSetProvider後重抓
但這個問題還是存在

另外GrandRURU測試的方式,我也自己測了一下
是可以正常執行的
專案裡面也有許多程式是用這種寫法來做的
也都可以正常執行
就只有這支程式在執行後會出現這個問題

歡迎大家一起討論可能出現問題的原因
謝謝!
younger98
一般會員


發表:2
回覆:4
積分:1
註冊:2010-11-17

發送簡訊給我
#6 引用回覆 回覆 發表時間:2011-03-08 15:11:28 IP:61.220.xxx.xxx 訂閱
謝謝各位的回答,我也有把資料全刪掉之後,再重新把程式開起來
發現問題還是一樣

最後的作法是把程式裡引用到的TClientDataSet全部刪掉
再重新建立之後就很神奇的完成了...

我猜可能是從Delphi 5轉換到Delphi XE時,版本的問題...
系統時間:2024-04-19 8:04:30
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!