Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 09.01.2009, 22:06
omaryan omaryan вне форума
Прохожий
 
Регистрация: 04.01.2009
Сообщения: 12
Репутация: 10
По умолчанию Использование указателей

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  A: array [1..10] of byte;
  P: Pointer;
begin
  P := @A;
  //set second element of array to 100 using only operations with pointer "P"
  P := 100;
  ShowMessage(IntToStr(A[2]));
end;

Как мне присвоить второму элементу массива А значение 100, используя только операции c указателем Р?
Ответить с цитированием
  #2  
Старый 10.01.2009, 10:43
Аватар для :S.p.a.m.
:S.p.a.m. :S.p.a.m. вне форума
Активный
 
Регистрация: 04.05.2008
Сообщения: 260
Репутация: 15
По умолчанию

А так не пойдет?
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  A: array [1..10] of byte;
  P: ^byte;
begin
  P:=@A[2];
  P^:=5;

  ShowMessage(IntToStr(a[2]));
end;
Ответить с цитированием
  #3  
Старый 01.03.2009, 19:33
omaryan omaryan вне форума
Прохожий
 
Регистрация: 04.01.2009
Сообщения: 12
Репутация: 10
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  A: array [1..10] of byte;
  P: Pointer;
begin
  P := @A;
  //set second element of array to 100 using only operations with pointer "P"
  //**********************
  P := 100;
  //**********************
  ShowMessage(IntToStr(A[2])); // "100"
end;
Нет, изменения должны быть внесены только в промежуток между звездочками. Другие варианты?
Ответить с цитированием
  #4  
Старый 01.03.2009, 19:56
Аватар для Karsh
Karsh Karsh вне форума
Активный
 
Регистрация: 22.09.2007
Адрес: SPb
Сообщения: 228
Версия Delphi: 7, 2009, XE2
Репутация: 70
По умолчанию

боюсь, что только если так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
type
  TArr = array [1..10] of byte;
var
  A: TArr;
  P: Pointer;
begin
  P := @A;
  //set second element of array to 100 using only operations with pointer "P"
  //**********************
  TArr(P^)[2]:= 100;
  //**********************
  ShowMessage(IntToStr(A[2])); // "100"
end;
__________________
Начинающий программист уверен, что в 1 килобайте 1000 байт.
Законченный программист уверен, что в 1 километре 1024 метра.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:10.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter