Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Pointer & array [D6, D7, XP]


Страницы:   1 2

webpauk ©   (2008-04-11 14:44:00) 

const
  cArr1: array[1..3] of String = ('', '', '');
  cArr2: array[1..2] of String = ('', '');
var
  fArr: Pointer;
begin
  if ... then fArr:=@cArr1 else fArr:=@cArr2;


вопрос: как через fArr обратиться к массиву?


DVM   (2008-04-11 15:13:00) [21]


> webpauk ©   (11.04.08 15:09) [13]

это задание типа "Исправить все ошибки" ?


webpauk   (2008-04-11 15:11:00) [22]

для простоты
cColumnPropArr: array[1..2] of TColumnPropArr = (cArr1, cArr2);


webpauk   (2008-04-11 15:09:00) [23]

ладно...
тогда вот такое:

procedure pSetListColumnsEx;
type
 TColumnProp = packed record
   rN: String;
   rW: Integer;
 end;

 TColumnPropArr = array[1..4] of TColumnProp;
const
 cArr1: TColumnPropArr = ((rN: ''; rW: 0), (rN: ''; rW: 0), (rN: ''; rW: 0), (rN: ''; rW: 0));
 cArr1: TColumnPropArr = ((rN: ''; rW: 0), (rN: ''; rW: 0), (rN: ''; rW: 0), (rN: ''; rW: 0));

 cColumnPropArr: array[TMain] of TColumnPropArr = (cArr1, cArr2);
- как здесь правильно записать?


DVM   (2008-04-11 15:05:00) [24]


> Просто тиресно...

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

Либо динамический массив возьми либо еще как, но для этого надо знать конечную цель.


webpauk   (2008-04-11 15:02:00) [25]


> DVM ©   (11.04.08 15:01) [10]

решение всегда есть. Просто тиресно...


DVM   (2008-04-11 15:01:00) [26]


> Anatoly Podgoretsky ©   (11.04.08 14:56) [8]


> он установить {$R-}

это немного поможет, но не решение все равно.


> а что савсэм никак?

а для чего это нужно? может есть более красивое решение.


webpauk   (2008-04-11 14:58:00) [27]


> Anatoly Podgoretsky ©   (11.04.08 14:52) [7]

ладно, массивы сделаю одинаковыми...
а что савсэм никак?


Anatoly Podgoretsky   (2008-04-11 14:56:00) [28]

> DVM  (11.04.2008 14:51:06)  [6]

А очень просто, он установить {$R-} оно и так по умолчанию.


Anatoly Podgoretsky   (2008-04-11 14:52:00) [29]


> вопрос: как через fArr обратиться к массиву?

Никак, переменная не инициализирована и второе, абсолютно нет никакой информации об размерности.


DVM   (2008-04-11 14:51:00) [30]


> если ты заметил размерность массивов разная

а как ты потом узнаешь на какой тип указывает указатель, чтобы потом правильно работать с данными на которые указатель указывает?


webpauk   (2008-04-11 14:50:00) [31]


> Сергей М. ©   (11.04.08 14:47) [4]

если ты заметил размерность массивов разная


Сергей М.   (2008-04-11 14:47:00) [32]

type
 PMyStrArray = ^TMyStrArray;
 TMyStrArray = array[1..N] of String;

..

fArr: PMyStrArray;

ShowMessage(fArr[1]);


Reindeer Moss Eater   (2008-04-11 14:47:00) [33]

к такому через PChar


Ega23   (2008-04-11 14:46:00) [34]

^


DVM   (2008-04-11 14:45:00) [35]


> вопрос: как через fArr обратиться к массиву?

переписать код надо иначе никак


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо