把下面的C代码转成DELPHI:
        BYTE v_Pic[435640];
BYTE *v_PtrPic;
        v_PtrPic=&v_Pic[40];
        BYTE m_Pic[440*330];  
BYTE *m_PtrPic;
        m_PtrPic=&m_Pic[0];   for(int yy=0;yy<330;yy++)
      for(int xx=0;xx<440;xx++)
 *(m_PtrPic+yy*440+xx)=*(v_PtrPic+((329-yy)*440+xx)*3);DELPHI:
        v_Pic: array[0..435639] of BYTE;
        v_PtrPic : ^BYTE;
        m_Pic:[0..440*330-1] of BYTE;
        m_PtrPic : ^BYTE;
        v_PtrPic:=@v_Pic[40];
        m_PtrPic:=@m_Pic[0];
       for  yy:=0 to 329 do
         for xx:=0 to 439 do
         (m_PtrPic+yy*440+xx)^:=(v_PtrPic+((329-yy)*440+xx)*3)^; //出错在DELPHI中指针不能进行加减运算,不如C中灵活,难道只能像下面这种实现:
m_Pic[yy*Video_Width+xx]:=v_Pic[((Video_Height-1-yy)*Video_Width+xx)*3+40];
指针的效率是否要高些?

解决方案 »

  1.   

    inc(m_PtrPic,yy*440+xx) ;
    inc(v_PtrPic,(329-yy)*440+xx)*3) ;
    m_PtrPic^ := v_PtrPic ;
      

  2.   

    http://dev.csdn.net/develop/article/10/10029.shtm
      

  3.   

    littlebao(爱拼才会赢) :这样就改变了指针的位置
      

  4.   

    上一文的一个例子:
    var
      a : array [1..20] of Char;
      ptr : PChar; //PChar 可以看作 ^Char
      begin
        ptr := @a;
        Inc(ptr); // 这句等价于 C 的 ptr++;
        Inc(ptr, 2); //这句等价于 C 的 ptr+=2;
     end;到底这里得a是等于a[0] 还是@a[0]?
    为什么ptr := @a;还要加个取址@?
    试了一下去掉取祉是不能编译通过的。到底这里的a和c语言里的a有什么区别呢?
      

  5.   

    ptr := @a;为什么要这么写?为什么要取一次地址?
    ptr 是指针,a 是数组,直接给值就可以了
    ptr := a;
      

  6.   

    c 和pascal 果然有区别!看来是一定要取地址的,不然就会报错了!
      

  7.   

    直接赋值是不可以的,编译不能通过。
    在c里a代表首地址,而在delphi里不是。
      

  8.   

    ptr := @a 和ptr := @a[1] 结果是一样的!ptr 得到的是从1 开始的整个串的内容
      

  9.   

    inc(ptr) 加的也是这里的'1'
      

  10.   

    7899(7899):我的那种方法不行吗?http://community.csdn.net/Expert/topic/3170/3170911.xml?temp=4.688662E-02
      

  11.   

    var
            a:Array [0..4] of integer;
            ptr:Pchar;
            b,i:Integer;
    begin
            for i := 0 to 4 do
                    a[i] := i;
            ptr := @a;
            inc(ptr,sizeof(integer));
            b := Integer(ptr^);
            showmessage(inttostr(b));
    简单例子