我想判斷Timer小于2秒,并且Memo中收到反饋資料時,提示發送訊息成功;反之,如果時間超過2秒,memo還沒有收到資料則提示發送失敗!應該怎么做?
uj5u.com熱心網友回復:
初始:Timer1->Enabled 為false , Interval 為2000 毫秒發送訊息代碼;發完馬上:
Timer1->Enabled=true;
Timer1的OnTimer事件處理函式中:
Timer1->Enabled=false;
Memo中收到反饋資料,提示發送訊息成功,否則,提示發送失敗。
前后兩次比較Memo1->Lines->Count(行數)判斷是否收到反饋資料。
uj5u.com熱心網友回復:
我也是這么做的!可是有兩個問題;第一,他會不停的彈出提示視窗;第二,并不是只有一個資料有反饋有好多都有,如果是如下的判斷,是有失誤的!memo中超過10行會自動清零一次,但是只要里面有資料,程式就會提示發送成功。有時候可能并沒有成功!我的代碼如下:
Timer1->Enable=true;
if(Form1->Memo1->Lines->Count>=1)//后來才發現判斷它為1,不怎么妥當,如果它里面本身就有資料,就會誤認為成功
{
ShowMessage("成功");
Timer1->Enable=false;
}
else
{
ShowMessage("失敗");
Timer1->Enable=false;
}
Form1->Memo1->Lines->Count>10;
Form1->Memo1->Text=“”;
uj5u.com熱心網友回復:
有人在嗎?挺著急的!uj5u.com熱心網友回復:
Timer1->Enable=true;這句你放在哪里?
前后兩次比較Memo1->Lines->Count(行數)判斷是否收到反饋資料。
你理解了嗎?
uj5u.com熱心網友回復:
Timer1->Enable=true;我是給下位機發送命令,下位機主動反饋資料;
這句放在我發送命令那個button事件的末尾;
兩次比較沒怎么理解?
uj5u.com熱心網友回復:
Timer1->Enable=true;這個問題已經解決了,現在就差你說的那兩個比較了。前后兩次應該怎么比較啊?能幫忙寫一下嗎?
uj5u.com熱心網友回復:
用一個變數,發送資料之前記錄Memo的行數,在Timer1的OnTimer事件處理函式中:Timer1->Enabled=false;
比較Memo的行數與之前記錄的行數,多出來則表示Memo中收到反饋資料。
不過問題是如果是上上一次被判斷為發送失敗的延遲反饋回來,是無法分清的。
uj5u.com熱心網友回復:
用一個變數,發送資料之前記錄Memo的行數,在Timer1的OnTimer事件處理函式中:
Timer1->Enabled=false;
比較Memo的行數與之前記錄的行數,多出來則表示Memo中收到反饋資料。
不過問題是如果是上上一次被判斷為發送失敗的延遲反饋回來,是無法分清的。
我是剛接觸C++ Builder不久,好多東西還不理解!我大概也能理解你說的兩次比較!但是,目前就是糾結到怎么確定當前的行數;
假如我現在定義 int n;n=StrTOInt(Memo->Lines->Count);這個統計的應該是當前Memo中的行數!但是我點擊button后首先彈出了失敗的提示框!然后第二次之后才進行判斷!而且每次都是先彈出提示框,我才收到資料,這樣就算我收到資料了,有時候也提示失敗!
所以還是想麻煩你把你的思路用代碼幫我簡單的寫一下,我就是想看一下,我現在是堵在哪里了!一直不正確!不知可否方便
uj5u.com熱心網友回復:
用一個變數,發送資料之前記錄Memo的行數,在Timer1的OnTimer事件處理函式中:
Timer1->Enabled=false;
比較Memo的行數與之前記錄的行數,多出來則表示Memo中收到反饋資料。
不過問題是如果是上上一次被判斷為發送失敗的延遲反饋回來,是無法分清的。
不用麻煩了!自己解決了!并不需要兩次比較!只判斷反饋資料就好了!
uj5u.com熱心網友回復:
解決了就好順便說一下,Memo->Lines->Count 就是int型別
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/74445.html
標籤:網絡及通訊開發
上一篇:請教:C++builder使用DBGrid查詢時總是閃爍,怎么解決。
下一篇:開發WEB時動態配置服務器
