![]() |
| ||
|
|
Новости |
Поиск |
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 обратиться к массиву?
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 обратиться к массиву?
переписать код надо иначе никак