Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Open array parameters 
:(
    Опции темы
stab
Дата 23.2.2003, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 14
Всего: 48



Есть процедура сохраняет в реестре переданные ей значаения через Open array parameter. Имеется еще одна прцедура для считывания из реестра (приведена ниже), она от чего не работает, т.е. значения читается нормально, но в переменной переданной в Open array parameter значение не сохраняется, что делать? ... и кто виноват? smile.gif

procedure LoadValues(names, more: array of const);
var
reg: TRegIniFile;
s: String;
i: Integer;
begin

reg := TRegIniFile.Create;
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.OpenKey('some key', True);

for i := 0 to High(more) do

case more[i].VType of

vtAnsiString: begin

s := reg.ReadString('some subkey', names[i].VPChar, '');
ShowMessage(s); // выводится считанная строка
String(more[i].VAnsiString) := s;

end;

end;

reg.Free;

end;


...
var
value: String;

LoadValues(['Value Name'], [value]);
ShowMessage(value); // выводится пустая строка



--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Dayana
Дата 23.2.2003, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 352
Регистрация: 6.10.2002
Где: Тель-Авив

Репутация: 2
Всего: 4



В процедуре тот массив, в который возращается значение должен быть переменный, т.е. перед ним надо поставить var, т.е var more: array of... и он не должен быть массивом констант...
PM MAIL ICQ   Вверх
stab
Дата 23.2.2003, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 14
Всего: 48



Тут вся и фишка в том, что он array of const, а если писать var more: array of const, то как тогда передавать Open array parameters, ведь конструктор ['name1', 'name2'] создает константный массив, а он как известно не может передаваться по с использованием var.

ясно что можно все реализовать через обычные массивы, но тогда нельзя будет написать:

case more[i].VType of

vtAnsiString: begin

s := reg.ReadString('some subkey', names[i].VPChar, '');
ShowMessage(s); // выводится считанная строка
String(more[i].VAnsiString) := s;

end;

vtInteger: ... ;

vtClass: ... ;

end;



--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Fantasist
Дата 25.2.2003, 01:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй
***


Профиль
Группа: Участник Клуба
Сообщений: 1517
Регистрация: 24.3.2002

Репутация: нет
Всего: 41



Передавай array of variant.


--------------------
Волны гасят ветер...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0440 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.