GotoBookmark的引數型態從Pointer變成IntPtr,該如何轉換! |
尚未結案
|
jieshu
版主 發表:42 回覆:894 積分:745 註冊:2002-04-15 發送簡訊給我 |
請問Delphi5的程式碼如下
ClientDataSet1.GotoBookmark(Pointer(DBGrid1.SelectedRows[0]));
該如何轉換為Delphi.Net的程式碼,編譯時會出現Invalid typecast的錯誤。 也就是DBGrid1.SelectedRows[0]的型態是String該如何轉成IntPtr,IntPtr好像是.Net的東西,所以不太會用,敬請賜教!
------
人生有夢,逐夢而行 人若為善,福雖未至,禍已遠離 人若為惡,禍雖未至,福已遠離 http://www.taconet.com.tw/jieshu/ | ||
Jasonwong
版主 發表:49 回覆:931 積分:581 註冊:2006-10-27 發送簡訊給我 |
|||
code6421
版主 發表:43 回覆:223 積分:208 註冊:2002-08-16 發送簡訊給我 |
引言: 請問Delphi5的程式碼如下 ClientDataSet1.GotoBookmark(Pointer(DBGrid1.SelectedRows[0])); 該如何轉換為Delphi.Net的程式碼,編譯時會出現Invalid typecast的錯誤。 也就是DBGrid1.SelectedRows[0]的型態是String該如何轉成IntPtr,IntPtr好像是.Net的東西,所以不太會用,敬請賜教!呵..我還不知道DBGrid.SelectedRows可以這樣用說,太少用了 ^_^ ......... uses System.Runtime.InteropServices; {$R *.nfm} procedure TForm1.Button1Click(Sender: TObject); var I:Integer; vptr:IntPtr; begin ClientDataSet1.DisableControls; for I:=0 to DBGrid1.SelectedRows.Count-1 do begin vptr := Marshal.StringToHGlobalAnsi(DBGrid1.SelectedRows[I]); try ClientDataSet1.GotoBookmark(vptr); ListBox1.Items.Add(ClientDataSet1.FieldByName('CustNo').AsString); finally Marshal.FreeHGlobal(vptr); end; end; ClientDataSet1.EnableControls; end;Just coding... Taiwan:http://code6421.ktop.com.tw China:http://home.hoolee.com/~code6421
------
Just codeing... |
||
jieshu
版主 發表:42 回覆:894 積分:745 註冊:2002-04-15 發送簡訊給我 |
引言: ClientDataSet1.GotoBookmark(IntPtr(DBGrid1.SelectedRows[0])); 試試看~我編譯會過~但我沒有實際去測~ -- 聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心 傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心Jasonwong兄,這我試過了不行,出現同樣的錯誤。
------
人生有夢,逐夢而行 人若為善,福雖未至,禍已遠離 人若為惡,禍雖未至,福已遠離 http://www.taconet.com.tw/jieshu/ |
||
jieshu
版主 發表:42 回覆:894 積分:745 註冊:2002-04-15 發送簡訊給我 |
引言: 呵..我還不知道DBGrid.SelectedRows可以這樣用說,太少用了 ^_^真的不得不佩服code6421兄的功力,這麼難都會,我還能說什麼呢?太神了,code6421兄,我以前也沒用過這樣的功能,有次在K.Top上看到有人討論在用,覺得不錯就把他的功能加到元件裡。 在Delphi5有範例(可用SelectedRows查Help),但是用Delphi.Net卻查不到此範例,一度讓我傷透腦筋,只好上來求教高手,想問code6421兄的是,像我這種問題該如何自救(也就是從何下手)。......... uses System.Runtime.InteropServices; {$R *.nfm} procedure TForm1.Button1Click(Sender: TObject); var I:Integer; vptr:IntPtr; begin ClientDataSet1.DisableControls; for I:=0 to DBGrid1.SelectedRows.Count-1 do begin vptr := Marshal.StringToHGlobalAnsi(DBGrid1.SelectedRows[I]); try ClientDataSet1.GotoBookmark(vptr); ListBox1.Items.Add(ClientDataSet1.FieldByName('CustNo').AsString); finally Marshal.FreeHGlobal(vptr); end; end; ClientDataSet1.EnableControls; end;Just coding... Taiwan:http://code6421.ktop.com.tw China:http://home.hoolee.com/~code6421
------
人生有夢,逐夢而行 人若為善,福雖未至,禍已遠離 人若為惡,禍雖未至,福已遠離 http://www.taconet.com.tw/jieshu/ |
||
code6421
版主 發表:43 回覆:223 積分:208 註冊:2002-08-16 發送簡訊給我 |
引言: 在Delphi5有範例(可用SelectedRows查Help),但是用Delphi.Net卻查不到此範例,一度讓我傷透腦筋,只好上來求教高手,想問code6421兄的是,像我這種問題該如何自救(也就是從何下手)。唉...那個Help實在是..連語法都寫錯...@_@ 最快的方式是由VCL.NET Source下手, 基本上多數的物件與型别都已由VCL移植到VCL.NET上來了, 為了兼故相容性,VCL.NET有極大部份是與Unmanaged環境互通, Midas,BDE,dbExpress,Windows API都是,而這些大多以指標 操作,在CLR中,當由Unmanagd取回一個指標時,就必須進行Marshal 動作才能使用,反之則需進行UnMarshal. 就長遠來看,還是得多看看.NET Framework的書籍, Jeffray Richter 的Applied .NET Framework是最好的選擇. Just coding... Taiwan:http://code6421.ktop.com.tw China:http://home.hoolee.com/~code6421
------
Just codeing... |
||
jieshu
版主 發表:42 回覆:894 積分:745 註冊:2002-04-15 發送簡訊給我 |
引言: 唉...那個Help實在是..連語法都寫錯...@_@ 最快的方式是由VCL.NET Source下手, 基本上多數的物件與型别都已由VCL移植到VCL.NET上來了, 為了兼故相容性,VCL.NET有極大部份是與Unmanaged環境互通, Midas,BDE,dbExpress,Windows API都是,而這些大多以指標 操作,在CLR中,當由Unmanagd取回一個指標時,就必須進行Marshal 動作才能使用,反之則需進行UnMarshal. 就長遠來看,還是得多看看.NET Framework的書籍, Jeffray Richter 的Applied .NET Framework是最好的選擇. Just coding... Taiwan:http://code6421.ktop.com.tw China:http://home.hoolee.com/~code6421謝謝code6421兄的說明,讓我受益良多。 我的Delphi.Net好像找不到TRemoteDataModule,Help找的到要Uses Borland.Vcl.DataBkr,但整個Delphi.Net的BDS目錄卻找不到相關檔案。 To create a remote data module at design time, choose File|New|Other, and select Remote Data Module from the multi-tiered page of the new items dialog. 以上為Help所提,但我的Delphi.Net沒有multi-tiered page,請問各位網友你們有multi-tiered page嗎?
------
人生有夢,逐夢而行 人若為善,福雖未至,禍已遠離 人若為惡,禍雖未至,福已遠離 http://www.taconet.com.tw/jieshu/ |
||
code6421
版主 發表:43 回覆:223 積分:208 註冊:2002-08-16 發送簡訊給我 |
引言: 我的Delphi.Net好像找不到TRemoteDataModule,Help找的到要Uses Borland.Vcl.DataBkr,但整個Delphi.Net的BDS目錄卻找不到相關檔案。記憶中DELPHI.NET 只附MIDAS/DataSnap Client端, 因此你只能用DELPHI 7寫Server.. Just coding... Taiwan:http://code6421.ktop.com.tw China:http://home.hoolee.com/~code6421
------
Just codeing... |
||
jieshu
版主 發表:42 回覆:894 積分:745 註冊:2002-04-15 發送簡訊給我 |
引言: 記憶中DELPHI.NET 只附MIDAS/DataSnap Client端, 因此你只能用DELPHI 7寫Server.. Just coding... Taiwan:http://code6421.ktop.com.tw China:http://home.hoolee.com/~code6421唉...原本想說Server是給眾多Client連接,需要穩定性,想說改成.Net使用看看會不會比較穩定,Client則因無法確保每台都有.Net環境,先不改,現在可能沒希望了!
------
人生有夢,逐夢而行 人若為善,福雖未至,禍已遠離 人若為惡,禍雖未至,福已遠離 http://www.taconet.com.tw/jieshu/ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |