Указатели

Тема в разделе "WASM.BEGINNERS", создана пользователем ptr, 14 мар 2009.

  1. ptr

    ptr New Member

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

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

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

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    p:=@dword(mas[1]);

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

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

    ptr New Member

    Публикаций:
    0
    Регистрация:
    14 мар 2009
    Сообщения:
    130
    спасыба учытел! (:
     
  4. EvilsInterrupt

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

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    ptr
    это все равно что на си сделать так:

    void * Ptr;

    Ptr = &PVOID(mas[1]);

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

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