![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
lucas |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 26.5.2006 Репутация: нет Всего: нет |
Здравствуйте. Кто знает возможно ли то что я пытаюсь реализовать. У меня несколько констант массивов, как мне работать с ними не обращаясь на прямую. Т.е функция getConst должна возвращать определенный масив примерно так: Caption:= getConst(0)[0].s; {='Кино'},
Caption:= getConst(1)[2].s; {='Морковь'}, type TTemp = record s:String; b:Integer; end; TForm1 = class(TForm) private { Private declarations } public function getConst(Index:Integer)://какой установить тип для получения константы { Public declarations } end; const OneArray:Array[0..1] of TTemp = ( (s: 'Кино'; b: 15), (s: 'Видио'; b: 25) ); TwoArray:Array[0..2] of TTemp = ( (s: 'Прокат'; b: 15), (s: 'Сок'; b: 25), (s: 'Морковь'; b: 25) ); var Form1: TForm1; implementation {$R *.dfm} function getConst(Index:Integer)://какой установить тип для получения константы begin case Index of 0: Result:= OneArray; 1: Result:= TwoArray; end; end; |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
только введи в эти константы размеры массивов, а то имхо тяжко потом будет -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
Dynamic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 372 Регистрация: 5.7.2004 Где: Салехард Репутация: 12 Всего: 15 |
константу ты так не вернешь. Надо создать тип данных, который ты хочешь получать из getConst, типа
и передавать указатель на него, либо передавать переменную с массивом как var M: TMyArr в параметрах. -------------------- Было бы о чем молчать, а уж что сказать – всегда найдется... |
|||
|
||||
lucas |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 26.5.2006 Репутация: нет Всего: нет |
Спасибо Dynamic Вам большое. Вы очень мне помогли. Действительно теперь все работает, но последний вопрос почему при такой схеме функция High для полученного массива возвращает не корректное значение
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TTemp = record s:String; b:Integer; end; PMyArr = ^TMyArr; TMyArr = array of TTemp; TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public procedure getConst(Index:Integer; var M: TMyArr);//какой установить тип для получения константы { Public declarations } end; const OneArray:Array[0..1] of TTemp = ( (s: 'Кино'; b: 15), (s: 'Видио'; b: 25) ); TwoArray:Array[0..2] of TTemp = ( (s: 'Прокат'; b: 15), (s: 'Сок'; b: 25), (s: 'Морковь'; b: 25) ); var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.getConst(Index:Integer; var M: TMyArr );//какой установить тип для получения константы begin case Index of 0: M:= @OneArray; 1: M:= @TwoArray; end; end; procedure TForm1.Button1Click(Sender: TObject); var M: TMyArr; begin getConst(1, M); caption:= InTToStr(High(M)); //Возвращает 24, а должно 2 end; end. |
|||
|
||||
AriX |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 16.6.2003 Репутация: 5 Всего: 19 |
Нужно установить длину для M массива:
Это сообщение отредактировал(а) AriX - 26.5.2006, 17:03 |
|||
|
||||
lucas |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 26.5.2006 Репутация: нет Всего: нет |
Всем большое спасибо. Вопрос полностью разрешен.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |