全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1239
推到 Plurk!
推到 Facebook!

關於stringgrid內容型態轉換的問題

答題得分者是:st33chen
efun
一般會員


發表:5
回覆:3
積分:1
註冊:2006-11-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-03-06 23:02:49 IP:59.127.xxx.xxx 訂閱
剛開始測試

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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-03-06 23:43:26 IP:61.67.xxx.xxx 未訂閱
單從你的內文實在看不出有那裡出問題, 而你真的確認運行到這邊的值真的是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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-03-07 01:24:25 IP:61.223.xxx.xxx 訂閱
是的^^

因為個人是新手,不太會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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-03-07 10:54:18 IP:122.116.xxx.xxx 未訂閱
我用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 (滷肉腳啦);
都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
編輯記錄
st33chen 重新編輯於 2009-03-07 10:56:19, 註解 無‧
st33chen 重新編輯於 2009-03-07 10:57:02, 註解 無‧
st33chen 重新編輯於 2009-03-07 10:58:45, 註解 無‧
efun
一般會員


發表:5
回覆:3
積分:1
註冊:2006-11-08

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-03-07 17:50:06 IP:61.223.xxx.xxx 訂閱
感謝大大~

問題點似乎出來了
個人使用 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, 註解 無‧
系統時間:2024-05-15 7:13:54
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!