Ptr(Seg0040, $006c) 該如何修正 ? |
答題得分者是:syntax
|
pcboy
版主 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
下面程式想改成 Delphi 7
高速拷貝文件 http://www.vbzx.net/ArticleView/vbzx_Article_View_1344.asp Compile 下面這行錯誤 Ticks := Ptr(Seg0040, $006c); // Undeclared identifier 'Seg0040' 改成這樣也不行 Ticks := Ptr($0040, $006c); // Segment/Offset pairs not supported in Borland 32-bit Pascal 請問該改成如何 ?
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案! 子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問! |
pedro
尊榮會員 發表:152 回覆:1187 積分:892 註冊:2002-06-12 發送簡訊給我 |
好久沒用指標了,我剛剛試一下,程式碼不一定可以run,不過觀念上差不多是這樣吧
<textarea class="delphi" rows="10" cols="60" name="code"> var pint:^Integer; aInt:array[0..10] of Integer; v:Integer; begin aInt[1]:=20; aInt[2]:=10; pInt:=Ptr(aInt[1]); Inc(pInt,1); v:=pInt; ShowMessage(IntToStr(v)); end;</textarea> |
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
|
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
很久沒玩CONSOLE的程式了,本想玩玩但是發現那塊程式碼不完整!OK~不過小弟還是有點資訊提供。
32-bit code no longer uses the segment/offset addressing scheme that 16-bit code used. In 16-bit versions of Borland Pascal, segment/offset pairs were used to declare absolute variables, and as arguments to the Ptr standard function. Note that absolute addresses should not be used in 32-bit protected mode programs. Instead appropriate Win32 API functions should be called. program Produce; //這塊程式碼COMPILE不會過 var VideoMode : Integer absolute $0040:$0049; begin Writeln( Byte(Ptr($0040,$0049)^) ); end. program Solve; //這塊程式碼COMPILE會過,但是跑不起來 (*This version will compile, but will not run; absolute addresses are to be carefully avoided*) //var // VideoMode : Integer absolute $0040*16 $0049; begin Writeln( Byte(Ptr($0040*16 $0049)^) ); end. 因此傳統的16bit方法都不可以用,必須要呼叫windows api,但是是那個API有類似Ptr的效果呢?小弟也在找資料! |
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |