請問一個delphi語法轉成BCB. |
答題得分者是:taishyang
|
pireer
初階會員 發表:73 回覆:80 積分:30 註冊:2004-12-14 發送簡訊給我 |
這是flishman前輩之前回答其他人問題的語法.
剛好我也需要用到.但我翻不太過來. 不知道有沒有懂的前輩能幫我翻.. 謝謝 http://delphi.ktop.com.tw/board.php?cid=30&fid=71&tid=79803 |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
<textarea class="cpp" rows="10" cols="60" name="code">//.h
class TForm1 : public TForm
{
__published: // IDE-managed Components
TTreeView *TreeView1;
TButton *Button1;
void __fastcall Button1Click(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
void __fastcall TravelAllChild(int &ChildCount, TTreeNode* pNode);
int __fastcall GetChildCount(TTreeNode *pNode);
};
//.cpp
//---------------------------------------------------------------------------
void __fastcall TForm1::TravelAllChild(int &ChildCount, TTreeNode* pNode)
{
ChildCount;
if (pNode->HasChildren)
{
for (int i=0; i < pNode->Count; i )
{
TravelAllChild(ChildCount, pNode->Item[i]);
}
}
}
//---------------------------------------------------------------------------
int __fastcall TForm1::GetChildCount(TTreeNode *pNode)
{
int r=0;
if (pNode)
{
TravelAllChild(r, pNode);
}
r--;
return r;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ShowMessage("Find " IntToStr(GetChildCount(TreeView1->Selected)) " childnode(s).");
}
//---------------------------------------------------------------------------
</textarea>
|
pireer
初階會員 發表:73 回覆:80 積分:30 註冊:2004-12-14 發送簡訊給我 |
|
pireer
初階會員 發表:73 回覆:80 積分:30 註冊:2004-12-14 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
pireer
初階會員 發表:73 回覆:80 積分:30 註冊:2004-12-14 發送簡訊給我 |
我完全依照前輩給的CODE來測試..
測試TreeView為下.當我點選B時.顯示正確.. 只要點選A或底下有子NODE.就錯. root |___A |___B <textarea rows="8" cols="80"> ChildCount; if (pNode->HasChildren) { for (int i=0; i < ChildCount; i ) { TravelAllChild(ChildCount, pNode->Item[i]); } }</textarea><br /> 說明一下點A進入時的動作.. 一進入這函式後.pNode->HasChildren = true. 所以他會進去.此時ChildCount = 1. 當執行 TravelAllChild(ChildCount, pNode->Item[i]); 此時i = 0 ------A步驟 他會再跑一次這函式..然後ChildCount =2.. 檢查是否有子NODE..回傳flase. 離開這函式..然後接著他會回A步驟的for迴圈.由於ChildCount =2.所以他會再進去一次. 此時TravelAllChild(ChildCount, pNode->Item[i]); pNode->Item[i] i =1 然後就出現上述的錯誤訊息.. |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
pireer
初階會員 發表:73 回覆:80 積分:30 註冊:2004-12-14 發送簡訊給我 |
前輩我找到原因了..
你給我的CODE是這樣.但你程式不是這樣寫 <textarea rows="8" cols="80"> ChildCount; if (pNode->HasChildren) { for (int i=0; i < ChildCount; i ) { TravelAllChild(ChildCount, pNode->Item[i]); } }</textarea><br /> 你後來程式的寫法跟上面一樣.. 只是再for迴圈 你是寫 i < pNode->Item...所以我的才會執行錯誤.. 感謝前輩指點... |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |