Указатели

Discussion in 'WASM.BEGINNERS' started by ptr, Mar 14, 2009.

  1. ptr

    ptr New Member

    Blog Posts:
    0
    Joined:
    Mar 14, 2009
    Messages:
    130
    Добрый день.
    Есть данные:
    массив,указатель
    Code (Text):
    1. var
    2.  mas: array [0..2] of string;
    3.  p:pointer;
    Нужно получить указатель на массив, точней на конкрет. элемент массива
    делаю так:
    Code (Text):
    1. p:=ptr(dword(mas[1]));
    Все ок, адрес конвертится в указатель.

    А вот если так:
    Code (Text):
    1. p:=@dword(mas[1]);
    то почему-то получаю экзепшн.
    Объяните почему так ?? =\
    спасибо.
     
  2. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Blog Posts:
    0
    Joined:
    Oct 28, 2003
    Messages:
    2,428
    Location:
    Russia
    p:=@dword(mas[1]);

    гы) на смешил, должно быть вроде этого:

    p:=Pointer(@mas[1]);
     
  3. ptr

    ptr New Member

    Blog Posts:
    0
    Joined:
    Mar 14, 2009
    Messages:
    130
    спасыба учытел! (:
     
  4. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Blog Posts:
    0
    Joined:
    Oct 28, 2003
    Messages:
    2,428
    Location:
    Russia
    ptr
    это все равно что на си сделать так:

    void * Ptr;

    Ptr = &PVOID(mas[1]);

    правило просто:
    Действия производятся экземплярами типов, а не с самими типами!

    Поэтому взять указатель у dword, PVOID, char, etc это очень глупо, потому что типы - это абстракция того что можно сделать с данными! А вот взять у объекта к примеру &mas[1] вполне логично, потому что это вполне реальное и осязаемое нечто в нашем, пусть и программном, мире !