Показать сообщение отдельно
  #5  
Старый 02.11.2010, 17:02
Аватар для KOOL
KOOL KOOL вне форума
Активный
 
Регистрация: 06.01.2008
Адрес: Рязань
Сообщения: 306
Версия Delphi: 2009
Репутация: 6150
По умолчанию

Цитата:
А что это такое:
ba:PByteArray;
p:PRGBTriple;
q:PRGBQuad;
это указатели на определенные типы

обычные типы и массивы не лучший пример (их легче просто присвоить), но раз просите:
Код:
type PString = ^String; //type foo = ^bar - это объявление нового типа foo как указателя на объект или переменную типа bar
...
var p, p2:PString; //объявляем переменную-указатель
   Src,Dst : String; //Исходная и конечная строки
begin
//Использование динамических переменных (здесь это p)
  //тут p=nil, т.е. пустому указателю

  GetMem(p, Length(Src)+1); //выделяем участок памяти размером с исходную строку (включая нулевой символ) и записываем адрес этого участка в указатель
  //тут p=некоторому адресу
  p^:=Src; //копируем исходную строку в новую. foo^ - означает доступ к объекту/переменной, хранящейся по адресу, на который указывает foo
  //вот, собственно, и все. строка скопирована и обращаться к ней надо по p^
...
  FreeMem(p); //поработали со строкой - надо теперь память за собой почистить
  p:=nil; //на всякий пожарный

...
//Доступ к переменной через указатель

  p2:=@Src; //p2 теперь указывает на Str; @var - возвращает адрес var
  p2^:='Test'; //записываем строку по адресу, на который указывает p2
  //Src теперь равно 'Test';
  p2:=nil; //на всякий пожарный

...
//Копирование Src -> Dst. для простых типов делать это через указатели бессмысленно и неоптимально

  p:=@Dst; //p теперь указывает на Dst;
  p^:=Src; //Dst теперь равна Src
  p:=nil; //на всякий пожарный

end;
помимо GetMem() и FreeMem() есть еще New() и Dispose(). GetMem() выделяет кусок памяти произвольного размера и поэтому годится для нетипизированных указателей (p:Pointer) и указателей на динамические структуры - массивы, строки; New выделяет память указателю на тип с фиксированным размером - integer, float... и record

ну и лучше из какого-нибудь учебника почитать про них..попонятнее будет. вот для начала можно http://coder.udrabota.com/stat/delphi/gl_15.1.php
__________________
РГРТУ - ФВТ - Системы Автоматизированного ПРоектирования. ت
Ответить с цитированием