二維以上AnsiString結構指標問題 |
尚未結案
|
ckenson
一般會員 發表:2 回覆:4 積分:1 註冊:2003-12-07 發送簡訊給我 |
不知各位先進們有沒有遇過這個問題 AnsiString test[10][10],test1[10]; void __fastcall TForm1::aaa(AnsiString *D)
{
Edit1->Text=D[0][0];
} void __fastcall TForm1::Button1Click(TObject *Sender)
{
test[0][0]="a";
test1[0]="b"; aaa(test);
} 如果是傳送一維時是正常的,但在二維時就會有問題,錯誤如下
[C Error] Unit1.cpp(31): E2034 Cannot convert 'AnsiString ( *)[10]' to 'AnsiString *'
[C Error] Unit1.cpp(31): E2342 Type mismatch in parameter 'D' (wanted 'AnsiString *', got 'AnsiString ( *)[10]') 試了好久,請大家幫幫忙,非常感謝呢
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 不知各位先進們有沒有遇過這個問題 AnsiString test[10][10],test1[10]; void __fastcall TForm1::aaa(AnsiString *D) { Edit1->Text=D[0][0]; } void __fastcall TForm1::Button1Click(TObject *Sender) { test[0][0]="a"; test1[0]="b"; aaa(test); } 如果是傳送一維時是正常的,但在二維時就會有問題,錯誤如下 [C Error] Unit1.cpp(31): E2034 Cannot convert 'AnsiString ( *)[10]' to 'AnsiString *' [C Error] Unit1.cpp(31): E2342 Type mismatch in parameter 'D' (wanted 'AnsiString *', got 'AnsiString ( *)[10]') 試了好久,請大家幫幫忙,非常感謝呢chenson 你好: 看看這樣寫行不行呢?? < class="code"> void __fastcall TForm1::Button3Click(TObject *Sender) { AnsiString test[10][10]; test[0][0]="abcdefghijk"; aaa(test[0][0]); } void __fastcall TForm1::aaa(AnsiString &D) { Edit1->Text=D; } -- Enjoy Researching & Developing -- 發表人 - RaynorPao 於 2003/12/09 20:59:32
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
ckenson
一般會員 發表:2 回覆:4 積分:1 註冊:2003-12-07 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
ckenson您好:
引言: 我主要用到二個陣列 Assume test1[20][3] test2[20][3] 有一個副程式主要將一些分析後的資料填入 test1 或 test2 所以想說如果可以將要處理的陣列指定給副程式,這樣就不用再寫二段相同架構的程式,而只有目標陣列不同而以,希望這樣先進們能了解我的需求...^^不太懂您的意思,您的這段文字似乎與您當初的問題不太一致 照您原來的程式< class="code"> aaa(test[0]); //傳2維 aaa(test1); //傳1維 貼程式碼請考下面連結的說明,謝謝您的配合 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=41390 順心 <>~我也是在學習的階段,回答的不好請您多多見諒與指教~> 發表人 - |
ckenson
一般會員 發表:2 回覆:4 積分:1 註冊:2003-12-07 發送簡訊給我 |
引言: ckenson您好:引言: 我主要用到二個陣列 Assume test1[20][3] test2[20][3] 有一個副程式主要將一些分析後的資料填入 test1 或 test2 所以想說如果可以將要處理的陣列指定給副程式,這樣就不用再寫二段相同架構的程式,而只有目標陣列不同而以,希望這樣先進們能了解我的需求...^^不太懂您的意思,您的這段文字似乎與您當初的問題不太一致 貼程式碼請考下面連結的說明,謝謝您的配合 < href="http://delphi.ktop.com.tw/topic.php?TOPIC_ID=41390">http://delphi.ktop.com.tw/topic.php?TOPIC_ID=41390 順心 <>~我也是在學習的階段,回答的不好請您多多見諒與指教~> >>< face="Verdana, Arial, Helvetica"> Sorry版主大大... 那我再次描述一下好了...AnsiString test[10][10],test1[10][10]; void __fastcall TForm1::aaa(AnsiString *D) // P1 { Edit1->Text=D[0][0]; //P2 D[0][0]="123"; //P3 } void __fastcall TForm1::Button1Click(TObject *Sender) { test[0][0]="a"; aaa(test); //P4 }Step 1 如同上面 P4 的地方可以選擇要處理的陣列名 Example 可傳 test 或 test1 給 aaa() 作處理 Step 2 P1 地方,當aaa()收到後,以指標 *D 來當作以後處理的參考對像 Step 3 P2 AND P3 可以針對 D 來作處理,而不用因為陣列為 test or test1 而要寫另外的判斷 不過小弟我測試過,當一維陣列時,這樣是可行的,不過在二維時就會出現錯誤訊習 [C Error] Unit1.cpp(31): E2034 Cannot convert 'AnsiString ( *)[10]' to 'AnsiString *' [C Error] Unit1.cpp(31): E2342 Type mismatch in parameter 'D' (wanted 'AnsiString *', got 'AnsiString ( *)[10]') 所以...不知前輩們有沒有遇過這樣的問題呢... 新手一個 有所不禮之處請見諒...^^ |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
ckenson您好:
引言:您的這段程式應該不只有您所說的錯誤訊息,不過沒關係 您要的答案應該就是我上一篇的回應AnsiString test[10][10],test1[10][10]; void __fastcall TForm1::aaa(AnsiString *D) // P1 { Edit1->Text=D[0][0]; //P2 D[0][0]="123"; //P3 } void __fastcall TForm1::Button1Click(TObject *Sender) { test[0][0]="a"; aaa(test); //P4 } AnsiString test[10][10],test1[10]; void __fastcall TForm1::Button1Click(TObject *Sender) { test[0][0]="a"; test1[0]="b"; // aaa(test1); //傳1維 aaa(test[0]);//傳2維 } //--------------------------------------------------------------------------- void __fastcall TForm1::aaa(AnsiString *D) { Edit1->Text=D[0]; }順心 <>~我也是在學習的階段,回答的不好請您多多見諒與指教~> |
kwu
中階會員 發表:10 回覆:57 積分:58 註冊:2003-10-31 發送簡訊給我 |
引言: Sorry版主大大... 那我再次描述一下好了...AnsiString test[10][10],test1[10][10]; void __fastcall TForm1::aaa(AnsiString *D) // P1 { Edit1->Text=D[0][0]; //P2 D[0][0]="123"; //P3 } void __fastcall TForm1::Button1Click(TObject *Sender) { test[0][0]="a"; aaa(test); //P4 }Step 1 如同上面 P4 的地方可以選擇要處理的陣列名 Example 可傳 test 或 test1 給 aaa() 作處理 Step 2 P1 地方,當aaa()收到後,以指標 *D 來當作以後處理的參考對像 Step 3 P2 AND P3 可以針對 D 來作處理,而不用因為陣列為 test or test1 而要寫另外的判斷 不過小弟我測試過,當一維陣列時,這樣是可行的,不過在二維時就會出現錯誤訊習 [C Error] Unit1.cpp(31): E2034 Cannot convert 'AnsiString ( *)[10]' to 'AnsiString *' [C Error] Unit1.cpp(31): E2342 Type mismatch in parameter 'D' (wanted 'AnsiString *', got 'AnsiString ( *)[10]') 所以...不知前輩們有沒有遇過這樣的問題呢... 新手一個 有所不禮之處請見諒...^^ >>< face="Verdana, Arial, Helvetica"> chenson 你好: 試試看這個方法!!AnsiString test[10][10],test1[10][10]; void __fastcall TForm1::aaa(AnsiString D[][10]) { Edit1->Text=D[0][0]; D[0][0]="123"; } void __fastcall TForm1::Button1Click(TObject *Sender) { test[0][0]="a"; aaa(test); } |
ckenson
一般會員 發表:2 回覆:4 積分:1 註冊:2003-12-07 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |