用Delphi XE 編譯舊版本的VCL,總是出現這個編譯錯誤,請問該如何解決啊?謝謝!
uj5u.com熱心網友回復:
沒用過XE ,有可能像vs那樣只用設定下字符型別就可以了要不得做個轉換才行
uj5u.com熱心網友回復:
主要是使用PChar引起的,Dephi7的時候PChar指PAnsiChar,到了D2010,默認指PWideChar因此,你需要更改PChar相關的內容為PAnsiChar就可以了.
uj5u.com熱心網友回復:
同意樓上Pchar 改成PAnsiChar
我現在用的2010以前也是同樣的情況
uj5u.com熱心網友回復:
發現很多控制元件就算改了也出錯,XE還是不好用uj5u.com熱心網友回復:
我的D7代碼移到D2010上面沒什么大的問題,一般就是如本貼一樣的字串問題uj5u.com熱心網友回復:
PAnsiChar...uj5u.com熱心網友回復:
這個也關 XE 的事情呀?uj5u.com熱心網友回復:
留意留意~收下咯~~ 謝謝..
uj5u.com熱心網友回復:
還是用回2007了uj5u.com熱心網友回復:
還真沒有用xeuj5u.com熱心網友回復:
型別不匹配uj5u.com熱心網友回復:
謝謝分享,我也在 研究并學習DELPHI XE中
uj5u.com熱心網友回復:
這是在D7下的代碼完全正常:var tem:DWORD;
begin
tem:= htonl(ntohl(inet_addr(Pchar(edtPing1.Text))));
ShowMessage(IntToStr(htonl(ntohl(inet_addr(Pchar(edtPing1.Text))))));
ShowMessage(inet_ntoa(in_addr(tem)));
end;
這是在2010下的測驗,得到的結果卻不一樣,edt1.text值為IP地址
var tem:DWORD;
begin
tem:= htonl(ntohl(inet_addr(PAnsiChar(edt1.Text))));
ShowMessage(IntToStr(htonl(ntohl(inet_addr(PAnsiChar(edt1.Text))))));
ShowMessage(inet_ntoa(in_addr(tem)));
end;
所有的原生字串型別String轉PAnsiChar都需要經過AnsiString過渡
tem:= htonl(ntohl(inet_addr(PAnsiChar(AnsiString(edt1.Text)))));
你可以試試這個。我在D2010中解決這個提示。
uj5u.com熱心網友回復:
呼叫API函式gethostname出錯:[DCC Error] uVIMPublicFun.pas(449): E2010 Incompatible types: 'Array' and 'PAnsiChar'var
hostName : array [0..255] of char;
begin
gethostname(hostName, sizeof (hostName));
end;
產生原因:D2009的Char為寬字符WideChar,而gethostname第一個引數是PAnsiChar。
解決方法:將hostName的宣告改成array [0..255] of AnsiChar;即可。
uj5u.com熱心網友回復:
d2009 開始就默認unicode了
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/157145.html
標籤:VCL組件開發及應用
上一篇:完整逆波蘭計算器(Java)
下一篇:Java基礎之內部類
