全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1072
推到 Plurk!
推到 Facebook!

二維以上AnsiString結構指標問題

尚未結案
ckenson
一般會員


發表:2
回覆:4
積分:1
註冊:2003-12-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-12-09 20:40:47 IP:210.71.xxx.xxx 未訂閱
不知各位先進們有沒有遇過這個問題 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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-12-09 20:50:46 IP:61.221.xxx.xxx 未訂閱
引言: 不知各位先進們有沒有遇過這個問題 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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-12-09 21:58:50 IP:210.71.xxx.xxx 未訂閱
感謝 RaynorPao 的回應.. 我主要用到二個陣列 Assume test1[20][3] test2[20][3] 有一個副程式主要將一些分析後的資料填入 test1 或 test2 所以想說如果可以將要處理的陣列指定給副程式,這樣就不用再寫二段相同架構的程式,而只有目標陣列不同而以,希望這樣先進們能了解我的需求...^^
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-12-09 22:47:54 IP:140.135.xxx.xxx 未訂閱
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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-12-09 23:05:52 IP:210.71.xxx.xxx 未訂閱
引言: 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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-12-09 23:20:15 IP:140.135.xxx.xxx 未訂閱
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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-12-10 09:30:02 IP:61.63.xxx.xxx 未訂閱
引言: 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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-12-10 10:13:43 IP:210.71.xxx.xxx 未訂閱
kwu 你好,真是剛好呢,我當得分後才看到你的方法。。 真是sorry沒加到分。。 不過這個方法真特別,不知道原理是什麼 感謝以上各位的解答,太愛你們了
系統時間:2024-05-18 17:54:12
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!