㈠ delphi7的代碼 最下面是錯誤 說什麼為什麼 再幫忙改正下 謝謝了!
將函數function AddNum(InStr:string;LabStr:string):string;
begin
case instr of //60行
stro:if (labstr<>stro) then addnum:=labstr + instr;
strl:if pos(labstr,strl)=0 then addnum:=labstr + instr;
else
addnum:=labstr + instr;
end;
定義成如下:
function AddNum(InStr:string;LabStr:string):string;
begin
if instr=stro then begin
if (labstr<>stro) then result:=labstr + instr;
end else if instr=strl then begin
if pos(strl,labstr)=0 then result:=labstr + instr;
end else begin
result:=labstr + instr;
end;
end;
報錯信息解釋:
[Error] Unit1.pas(60): Ordinal type required
case後面的表達式只能接Ordinal 類型數據,不能接string類型,可以上網查查Ordinal 類型包括哪些。
[Error] Unit1.pas(61): Constant expression expected
of的分支必須是常量,而stro是字元串變數。
[Error] Unit1.pas(62): Constant expression expected
of的分支必須是常量,而strl是字元串變數。
[Error] Unit1.pas(67): Statement expected but 'PROCEDURE' found
函數function AddNum(InStr:string;LabStr:string):string缺少一個end,你代碼里的end是case語句的end,缺少與begin對應的end。
由於你的輸入InStr是字元串變數,不建議用case語句,改成以上if...else語句可以達到目的。
另外:
(1)我將你的pos(labstr,strl)改為pos(strl,labstr),不知道對不對,你再證實一下。pos用法中第一個參數是子字元串,第二個參數才是目標字元串,我見strl='.',只有一個字元,應該為子字元串,你應該要在labstr里找strl,不知對否,如果不是,你自己再改改吧。
(2)我將addnum改為result,因為函數返回值是給result(調用時取的也是result值),除非你特別用處,addnum有另外定義,如果另外定義,那麼此函數將沒有返回值,你後面lab1.caption:=addnum(s,lab1.caption);調用時會出問題。
若還無法解決,請Hi我~