delphi6,編譯后的程式一直運行正常,昨天突然strtoint 函式無法轉化字符為數字,求分析原因。
uj5u.com熱心網友回復:
按ctrl點開它,看看是不是重新實作了。uj5u.com熱心網友回復:
在原程式中1、按ctrl鍵。
2、滑鼠點擊IntToStr。
一、打開的不是SysUnit的IntToStr方法,就是自己重新撰寫inttostr方法,應洗掉。,
二、打開SysUnit的IntToStr方法,檢查是否與下面一致:
function IntToStr(Value: Integer): string;
// FmtStr(Result, '%d', [Value]);
asm
PUSH ESI
MOV ESI, ESP
SUB ESP, 16
XOR ECX, ECX // base: 0 for signed decimal
PUSH EDX // result ptr
XOR EDX, EDX // zero filled field width: 0 for no leading zeros
CALL CvtInt
MOV EDX, ESI
POP EAX // result ptr
CALL System.@LStrFromPCharLen
ADD ESP, 16
POP ESI
end;
修改再運行。
三、如果無效。只有重新安裝了。
uj5u.com熱心網友回復:

樓上, strtoint 跟 inttostr 別混了額.
在呼叫 strtoint 前,可以嘗試自己判斷下, 字符是否為數字 [0..9]
有時候在字符中出現非數字字符, 或者 數字字符為全角輸入時, 轉化會出錯.
uj5u.com熱心網友回復:
不好意思看錯了。建議在呼叫StrToInt函式前通過判斷后再,執行:
判斷S是否整形的函式:
function IsInteger(Str: string): boolean; // 判斷整數
var V, Code : Integer;
begin
Val(Str, V, Code);
Result := (Code = 0) and ( Pos('X',Str ) <= 0);
end;
執行代碼“
if IsInteger(S) then I:=StrToInt(S)
我的代碼中,都是這樣,也就避免了非數字字符的錯誤。
uj5u.com熱心網友回復:
StrToInt在傳入的字串不是數字的時候會例外,有2種方法處理,使用try...except捕獲處理,或者使用TryStrToInt函式。uj5u.com熱心網友回復:

StrToIntDef(‘3’,0)函式可以在非整型資料的時候顯示默認的數值,樓主可以用這個看一下是不是函式轉換的問題。
uj5u.com熱心網友回復:
字符源是非數字吧uj5u.com熱心網友回復:
如果無法保證str 最數字,最好用這個TryStrToInt
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/87418.html
標籤:數據庫相關
上一篇:delphi開發web
下一篇:請教如何實作
