![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Pointer & array [D6, D7, XP]
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);