Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.08.2009, 16:12   #1
VladimirVB
Форумчанин
 
Аватар для VladimirVB
 
Регистрация: 12.10.2008
Сообщений: 131
По умолчанию Указатели и массивы

Здравствуйте.

Как в такой программе при помощи указатели p получить доступ к элементам массива a.

Код:
var
  a:array[0..2] of Integer = (3,1,2);
  p: Pointer;
begin
  p := @a;
  //?????????
  Readln;
end.
или в Delphi такое невозможно, а только в C++?
VladimirVB вне форума Ответить с цитированием
Старый 23.08.2009, 17:00   #2
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Цитата:
Сообщение от VladimirVB Посмотреть сообщение
Здравствуйте.

Как в такой программе при помощи указатели p получить доступ к элементам массива a.

Код:
var
  a:array[0..2] of Integer = (3,1,2);
  p: Pointer;
begin
  p := @a;
  //?????????
  Readln;
end.
или в Delphi такое невозможно, а только в C++?
Значит так: Объявляешь в type tA = array [0..2] of integer;

А потом и сам массив (в разделе var) a: tA = (3, 1, 2);

Код:
...
p := @a;
...
tA(p^).[1] := ...
...
Altera вне форума Ответить с цитированием
Старый 23.08.2009, 17:05   #3
Volt
Форумчанин
 
Аватар для Volt
 
Регистрация: 07.12.2008
Сообщений: 244
По умолчанию

попробуй так
Цитата:
const a: array[0..2] of Integer = (3,1,2);
var p: Pointer;
begin
p:=@a;

form1.Caption:=inttostr(a[ integer(p)]);
end;
|̲̅̅●̲̅̅|̲̅̅=̲̅̅|̲̅̅●̲̅̅]

Последний раз редактировалось Volt; 23.08.2009 в 17:08.
Volt вне форума Ответить с цитированием
Старый 23.08.2009, 17:36   #4
VladimirVB
Форумчанин
 
Аватар для VladimirVB
 
Регистрация: 12.10.2008
Сообщений: 131
По умолчанию

Большое вам спасибо за ответы. У меня к вам еще один вопрос по другой теме. Ранее я задавал его на этом форуме, но так четкого так и не получил ответа.

В программу я при помощи RC файл поместил .pdf файл, но как открыть этот файл из ресурса, я не знаю.
То есть не извлечь как в примере ниже

var
Res: TResourceStream;
begin
Res := TResourceStream.Create(HInstance, 'Demo', 'PDFFILE');
Res.SaveToFile('a.pdf');
Res.Free;
end;

а сразу при открытии программы PDF файл должен открыться.
VladimirVB вне форума Ответить с цитированием
Старый 23.08.2009, 17:54   #5
Volt
Форумчанин
 
Аватар для Volt
 
Регистрация: 07.12.2008
Сообщений: 244
По умолчанию

можно скинуть проект вмести с res
|̲̅̅●̲̅̅|̲̅̅=̲̅̅|̲̅̅●̲̅̅]
Volt вне форума Ответить с цитированием
Старый 23.08.2009, 18:10   #6
VladimirVB
Форумчанин
 
Аватар для VladimirVB
 
Регистрация: 12.10.2008
Сообщений: 131
По умолчанию

Подскажите пожалуйста, а куда и как скидывать?
VladimirVB вне форума Ответить с цитированием
Старый 23.08.2009, 18:55   #7
s.Creator
Форумчанин
 
Регистрация: 28.09.2008
Сообщений: 344
По умолчанию

Немного поправлю Volt
Код:
const // или var
  a2: array[0..2] of Integer = (10, 11, 12); // локальные переменные нельзя инициализировать

procedure TForm2.btVoltClick(Sender: TObject);
var
  p: ^integer; // или PInteger - если указатель на тип элемента массива то можно inc() или dec()
begin
p:=@a2;
inc(p); // переход ко второму элементу массива
btVolt.Caption:=inttostr(p^);
//btVolt.Caption:=inttostr(a2[ integer(p)]); // integer(p) = около 4500000 - это же адрес памяти
end;
Про PDF из памяти:
Он встраивается в эксплорер и Мазилу.
Надо копать ActiveX или Ole
Сам этой проблемой не занимался но в панели "Import ActiveX Control ..." он присутствует.
s.Creator вне форума Ответить с цитированием
Старый 23.08.2009, 19:55   #8
VladimirVB
Форумчанин
 
Аватар для VladimirVB
 
Регистрация: 12.10.2008
Сообщений: 131
По умолчанию

проект для скачивания находится здесь

http://narod.ru/disk/12324766000/6.rar.html

создан в Delphi 2009. В EXE файле находится файл test.pdf.
VladimirVB вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[C] массивы, указатели, двойные указатели. Iggel Общие вопросы C/C++ 5 05.05.2009 12:39
Указатели и массивы. (С++) Eddie Помощь студентам 8 24.04.2009 19:48
Указатели и динамические массивы. Airou Общие вопросы C/C++ 5 16.01.2009 19:05
С++.Указатели и массивы Wia Помощь студентам 1 15.12.2008 18:29
Задачи на массивы и указатели в СИ D@rk_Spirit Общие вопросы C/C++ 3 29.12.2007 08:01