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 обратиться к массиву?


Reindeer Moss Eater   (2008-04-11 16:23:00) [1]

вариант с типизированным указателем на четырехбайтовый тип изящнее.


webpauk   (2008-04-11 16:04:00) [2]


> clickmaker ©   (11.04.08 16:01) [33]


>   (11.04.08 15:57) [32]

у зубры...


clickmaker   (2008-04-11 16:01:00) [3]

а ко второму соответственно так:

Так же, только указатель следует направить на второй элемент массива
fArr:=@cArr1[1]

const
cArr1: array[1..3] of String = ('123', '456', '789');
var
fArr: Pointer;
begin
fArr:=@cArr1[2];
Caption:=Pstring(fArr)^;
end;


<code>   (2008-04-11 15:57:00) [4]

>а к первому?

Так же, только указатель следует направить на первый элемент массива
fArr:=@cArr1[1]

const
cArr1: array[1..3] of String = ('123', '456', '789');
var
fArr: Pointer;
begin
fArr:=@cArr1[1];
Caption:=Pstring(fArr)^;
end;


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


>   (11.04.08 15:43) [30]

а к первому?


<code>   (2008-04-11 15:43:00) [6]

>к какому элементу?
К третьему.


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


>   (11.04.08 15:38) [28]

к какому элементу?


<code>   (2008-04-11 15:38:00) [8]

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

const
 cArr1: array[1..3] of String = ('123', '456', '789');
var
 fArr: Pointer;
begin
 fArr:=@cArr1[3];
 Caption:=Pstring(fArr)^;
end;


Reindeer Moss Eater   (2008-04-11 15:28:00) [9]

const arr : array[1..3] of string = ('one','two','three');

var p : pcardinal;
begin
p := @arr[1];
ShowMessage(PChar(p^));
inc(p);
ShowMessage(PChar(p^));
inc(p);
ShowMessage(PChar(p^));
...


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


> webpauk ©   (11.04.08 15:27) [25]

упс... ставил элементы вне размерности

> Сергей М. ©   (11.04.08 15:24) [23]

спасибо


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


> Сергей М. ©   (11.04.08 15:24) [23]

Constant expression violates subrange bounds


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


> DVM ©   (11.04.08 15:23) [22]

согласен...
зато потом хорошо


Сергей М.   (2008-04-11 15:24:00) [13]

ShowMessage(cColumnPropArr[i][j].rN)


DVM   (2008-04-11 15:23:00) [14]


> можно, но не красиво...

Такого вида константы, как ты привел уже сами по себе не особо красивы. В глазах аж рябит.


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


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

а как обратиться к элементу?

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

 PColumnPropArr=^TColumnPropArr;
 TColumnPropArr = array[1..4] of TColumnProp;
const
 cTypeArr: TColumnPropArr = ((rN: '¹'; rW: 0), (rN: ''; rW: 0), (rN: ''; rW: 0), (rN: ''; rW: 0));
 cPartnerArr: TColumnPropArr = ((rN: '¹'; rW: 0), (rN: ''; rW: 0), (rN: ''; rW: 0), (rN: ''; rW: 0));
 cUnitArr: TColumnPropArr = ((rN: '¹'; rW: 0), (rN: ''; rW: 0), (rN: ''; rW: 0), (rN: ''; rW: 0));
 cGoodsArr: TColumnPropArr = ((rN: '¹'; rW: 0), (rN: ''; rW: 0), (rN: ''; rW: 0), (rN: ''; rW: 0));

 cColumnPropArr: array[TMain] of PColumnPropArr  = (@cTypeArr, @cPartnerArr, @cUnitArr, @cGoodsArr);
begin

 ShowMessage(cColumnPropArr...);
end;


Anatoly Podgoretsky   (2008-04-11 15:21:00) [16]

> webpauk  (11.04.2008 15:14:17)  [17]

Бьешься возможно из-за неправильной поставновки в твоей голове, но нам ты ее говорить не хочешь и каких же ты советов ждешь? И какие тебе могут дать, может потом придется за голову хвататься.


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


> DVM ©   (11.04.08 15:19) [18]

можно, но не красиво...


DVM   (2008-04-11 15:19:00) [18]


> webpauk ©

может по-простому:

cColumnPropArr: array[1..2] of TColumnPropArr = (((rN: ''; rW: 0), (rN: ''; rW: 0), (rN: ''; rW: 0), (rN: ''; rW: 0)), ((rN: ''; rW: 0), (rN: ''; rW: 0), (rN: ''; rW: 0), (rN: ''; rW: 0)));


это ж константа все равно.


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


> DVM ©   (11.04.08 15:13) [15]

вообще то да...
я просто не встречался ранее и бьюсь головой об стенку


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


> как здесь правильно записать?
>


PColumnProp =^TColumnProp;

..

cColumnPropArr: array[TMain] of PColumnPropArr = (@cArr1, @cArr2);


Страницы:   1 2

Наверх

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