[問題] BCB Memo輸出問題

看板C_and_CPP (C/C++)作者 (路邊小人物)時間16年前 (2009/09/12 20:45), 編輯推噓2(207)
留言9則, 2人參與, 最新討論串1/1
小弟在做BCB裡面的memo輸出東西的時候 有個問題 宣告部分: int nodeid=10; string node_name[100]; char istr1[2001]; (這邊memo好像不能輸出string 所以使用這個變數轉換) for (i=0;i<=2000;i++) { istr1[i]=node_name[node_id][i]; } 假設上面變數都有值 然後下面要輸出一句 istr1+"文字" -------------------------------------------------------- 下面幾種的程式碼都繪顯示有BUG: "Invalid pointer addition" 1. FuncA->Memo1->Lines->Add(istr1+"A"); 2. FuncA->Memo1->Lines->Add("A"+istr1); 3. FuncA->Memo1->Lines->Add("A"+istr1+"A"); ---------------------------------------------------------- 如果改成下面幾種都會過 4. FuncA->Memo1->Lines->Add(AnsiString(nodeid)+"A"+istr1); 5. FuncA->Memo1->Lines->Add(AnsiString(nodeid)+istr1); 6. FuncA->Memo1->Lines->Add(istr1); 7. FuncA->Memo1->Lines->Add("A"); 我一直找不出原因 請問是甚麼問題呢 因為我需要用到前三種方法來增添文字 PS.另外可不可以Add()裡面直接使用string的變數呢 謝謝指教 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.228.178.209

09/12 20:49, , 1F
istr1是一個char[], "A"是一個const char string, 你有
09/12 20:49, 1F

09/12 20:50, , 2F
想過, char str[]="test"; str + "A"; <- 這會變什麼嗎?
09/12 20:50, 2F

09/12 20:51, , 3F
轉成AnsiString就可以, 是因為它有overload + operator
09/12 20:51, 3F

09/12 20:52, , 4F
for char[]; 把你的"A"或istr1用AnsiString包起來讓它來
09/12 20:52, 4F

09/12 20:52, , 5F
handle這些object init或type conversion就好啦....@_@"
09/12 20:52, 5F

09/12 20:53, , 6F
像 Add(AnsiString(istr1)+"A"); 或改括"A"也一樣我猜.
09/12 20:53, 6F

09/12 21:00, , 7F
感謝V大 超快解決的 兩種方法都可以
09/12 21:00, 7F

09/12 21:05, , 8F
那在我的第四種方法後面可以組合起來 也是最前面有Ansi囉?
09/12 21:05, 8F

09/12 21:43, , 9F
是的, 關鍵在於二元運算子的兩個運算元與最後產物為何:)
09/12 21:43, 9F
文章代碼(AID): #1AgvVrbT (C_and_CPP)
文章代碼(AID): #1AgvVrbT (C_and_CPP)