關於stringgrid內容型態轉換的問題 |
答題得分者是:st33chen
|
efun
一般會員 發表:5 回覆:3 積分:1 註冊:2006-11-08 發送簡訊給我 |
剛開始測試
ChangeMyXYZ ( 10,10,10); //通過 可是改成 ChangeMyXYZ ( 10,10, Strtoint( StringGrid1.cells[1,1] ) ); 運行到這便出錯(確定 cells內容已經預設為10) First chance exception at $7C812AEB. Exception class EConvertError with message ''''' is not a valid integer value'. Process Fly.exe (2080) 請問可能會是什麼原因呢?? |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
單從你的內文實在看不出有那裡出問題, 而你真的確認運行到這邊的值真的是10嗎?
因為從錯誤的訊息來看, 你確實是因為 strtoint() 轉換出錯! ===================引 用 efun 文 章=================== 剛開始測試 ChangeMyXYZ ( 10,10,10); //通過 可是改成 ChangeMyXYZ ( 10,10, Strtoint( StringGrid1.cells[1,1] ) ); 運行到這便出錯(確定 cells內容已經預設為10) First chance exception at $7C812AEB. Exception class EConvertError with message ''''' is not a valid integer value'. Process Fly.exe (2080) 請問可能會是什麼原因呢?? |
efun
一般會員 發表:5 回覆:3 積分:1 註冊:2006-11-08 發送簡訊給我 |
是的^^
因為個人是新手,不太會debug,所以都會把變數先列在form上觀看數值變化 Label9.caption := StringGrid1.cells[1,1]; 顯示數值是10無誤 個人為防 StringGrid 內容為空的問題,也在create的時候就預先把空的cells都填上1了 也有試過先把其他地方用{ }框選,觀察是否是這段的問題,結果只有取消這行{ }框選的時候才會出現錯誤.... 個人用的是delphi 2009 。。。。。。。。。。。。。。。。。。。。。。。。。。。 補充一下,個人剛剛又做了些實驗 發現 Label9.caption := StringGrid1.cells[1,1]; //結果10 顯示正常 MyZ := Strtoint ( StringGrid1.cells[1,1] ); // MyZ:Integer,編譯時通過,可是執行時出錯 錯誤訊息同第一篇..... 完全猜不出來什麼原因了.....
編輯記錄
efun 重新編輯於 2009-03-07 03:37:52, 註解 無‧
|
st33chen
尊榮會員 發表:15 回覆:591 積分:1201 註冊:2005-09-30 發送簡訊給我 |
我用d6測下列程式, 沒問題耶, 可否在 ChangeMyXYZ ( 10,10, Strtoint( StringGrid1.cells[1,1] ) ); 前加 showmessage(StringGrid1.cells[1,1] '-->' inttostr(length( StringGrid1.cells[1,1] ))); 試看看 又 可否提供一下 ChangeMyXYZ 的宣告式. ============================================ unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, TeEngine, Series, ExtCtrls, TeeProcs, Chart; type TForm1 = class(TForm) StringGrid1: TStringGrid; Button1: TButton; Button2: TButton; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } procedure ChangeMyXYZ (x,y,z : integer); public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var ii, jj : integer; begin for ii := 1 to 3 do for jj := 1 to 3 do begin stringgrid1.Cells[ii, jj] := '10'; end; end; procedure TForm1.Button2Click(Sender: TObject); begin ChangeMyXYZ ( 10,10, Strtoint( StringGrid1.cells[1,1] ) ); end; procedure tform1.ChangeMyXYZ (x,y,z : integer); begin label1.Caption := inttostr(x); label2.Caption := inttostr(y); label3.Caption := inttostr(z); label4.caption := inttostr(x*y*z); end; end.
------
IS IT WHAT IT IS 我是 李慕白 請倒著唸. 又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦); 都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲. |
efun
一般會員 發表:5 回覆:3 積分:1 註冊:2006-11-08 發送簡訊給我 |
感謝大大~
問題點似乎出來了 個人使用 showmessage(StringGrid1.cells[1,1] '-->' inttostr(length( StringGrid1.cells[1,1] ))); 發現跳出來的message 內容是 會一直循環跳動的 跳動內容有2個 1個是 ---->0 (約維持0.9秒) ,1個是 10--->2(0.1秒) 可是個人對於StringGrid1的操作只有create的時候 [code delphi] StringGrid1.Cells[1,0]:= '座標X'; StringGrid1.Cells[2,0]:= '座標Y'; StringGrid1.Cells[3,0]:= '前往高度'; StringGrid1.Cells[4,0]:= '範圍'; StringGrid1.Cells[5,0]:= '時間'; for a := 1 to 10 do begin StringGrid1.Cells[0,a]:= '第' IntToStr(a) '組'; end; for l := 1 to 5 do for m := 1 to 10 do StringGrid1.Cells[l,m]:='1'; StringGrid1.Cells[1,1]:='10'; [/code] 其他時間並沒有對 StringGrid1 寫入 為什麼會有 空內容 的時候呢?? PS:暫時先用條件式 if (length(StringGrid1.cells[3,Work_number])>0) then ..... 來處理這個問題,也先結案內容 等真正發現原因再上來修正文章,也感謝各位大大持續幫忙^^~ ===================引 用 st33chen 文 章=================== 我用d6測下列程式, 沒問題耶,
可否在 ChangeMyXYZ ( 10,10, Strtoint( StringGrid1.cells[1,1] ) ); 前加 showmessage(StringGrid1.cells[1,1] '-->' inttostr(length( StringGrid1.cells[1,1] ))); 試看看
編輯記錄
efun 重新編輯於 2009-03-08 16:33:41, 註解 無‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |