線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1610
推到 Plurk!
推到 Facebook!

請問有關chart的問題

答題得分者是:kenlee1109
student38
一般會員


發表:22
回覆:13
積分:7
註冊:2010-04-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-08-19 22:16:33 IP:120.114.xxx.xxx 訂閱

[code cpp]
void __fastcall TForm1::Comm1ReceiveData(TObject *Sender)
{
String InputStr,tmpStr,tmpStr1,buff,buff1,ch1;
char *ch;
int i,StrLen,j;
float ch2;


txtInput->Text=Trim(Comm1->Input); //未轉前
//以下進行長字串
InputStr=txtInput->Text;
StrLen=InputStr.Length();
tmpStr="";
//將每個字元的編碼組成一個字串
//欲將中文字的前字元取出,需使用unsigned char作型態轉換
for (i=1;i<=StrLen;i )
tmpStr =IntToStr((unsigned char)InputStr[i]);
ch=tmpStr.c_str();
//ReceiveData[i]=StrToFloat(ch);
ch1=AnsiString(ch,3) ;
Edit1->Text=ch1;
Timer1->Enabled=true;
}
}
[/code]

[code cpp]
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
Chart2->BottomAxis->SetMinMax(0,500);
Chart2->LeftAxis->SetMinMax(0,350);
Double TimeX=0;
TimeX ;
Series2->Add(Edit1->Text.ToDouble(),TimeX,clRed);

}[/code]



編輯記錄
student38 重新編輯於 2010-08-19 22:20:42, 註解 無‧
student38 重新編輯於 2010-08-19 22:22:01, 註解 無‧
student38 重新編輯於 2010-08-19 22:25:43, 註解 無‧
kenlee1109
初階會員


發表:20
回覆:40
積分:27
註冊:2006-08-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-08-19 22:48:18 IP:118.160.xxx.xxx 訂閱
對Chart不熟,不過元件一般不會有問題,猜想寫法上是否在 Timer 進入函示的第一行讓它 Disable. 如果有需要在最後一行再讓它 Enable.
1. void __fastcall TForm1::Timer1Timer(TObject *Sender)
2. {
Timer1->Enabled=false;
3. Chart2->BottomAxis->SetMinMax(0,500);
4. Chart2->LeftAxis->SetMinMax(0,350);
5. Double TimeX=0;
6. TimeX ;
7. Series2->Add(Edit1->Text.ToDouble(),TimeX,clRed);
8. }

student38
一般會員


發表:22
回覆:13
積分:7
註冊:2010-04-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2010-08-19 22:58:04 IP:120.114.xxx.xxx 訂閱
有這大大這樣改不過還是跟之前的錯誤一樣ˊˋ
Project.exe raised exception class EconverError with message "is not a valid floathing point value" Process stopped. 會出現這個 同樣的錯誤
然後要修改地方都會在Series2->Add(Edit1->Text.ToDouble(),TimeX,clRed);這邊,請問該如何處理@@"

kenlee1109
初階會員


發表:20
回覆:40
積分:27
註冊:2006-08-17

發送簡訊給我
#4 引用回覆 回覆 發表時間:2010-08-20 04:39:44 IP:118.169.xxx.xxx 訂閱
看是資料的問題,用 debug 檢查那個 ToDouble 所產生的值是多少?如確定是數字, 則前面再加上(float) 強制轉 Type, 不過這個數值由 Edit 中來的,是否有危險?

試著將這一行
Series2->Add(Edit1->Text.ToDouble(),TimeX,clRed);

改寫成:
double value = Edit1->Text.ToDouble(),
Series2->Add(value,TimeX,clRed);

看是否當在第一行?


編輯記錄
kenlee1109 重新編輯於 2010-08-20 04:45:53, 註解 無‧
student38
一般會員


發表:22
回覆:13
積分:7
註冊:2010-04-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2010-08-22 22:15:42 IP:120.114.xxx.xxx 訂閱
有用k大的程式改了一下,還是不能執行= =|||
我有嘗試更改另一種寫法

[code cpp]
void __fastcall TForm1::Comm1ReceiveData(TObject *Sender)
{
String buf,buff1;
int i;
long tmpStr;
buf=Trim(Comm1->Input);
for (i=1;i<=buf.Length();i )
tmpStr =((tmpStr buf[i])&0xff);
Edit1->Text=tmpStr;

Timer1->Enabled=true;
//Memo1->Text=Memo1->Text tmpStr;

}
[/code]
雖然可以用,但是數值會亂跳 我所接收的是0-255
亂跳例如 255,111.......
有用過陣列下去寫 可是 tmpStr算是變數 請問如何放進陣列裡面 怎嚜寫都不對,我有參考rs232串列通訊那本@@
剛接觸這領域,看書學,因為目前老師的學生只有我一個在學@@

系統時間:2024-03-29 20:13:22
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!