Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Массив как параметр функции [D5, Win2k]


Страницы:   1 2

Романов Р.В. ©   (2003-02-06 09:35:00) 

Доброе утро всем. Есть у меня функция

function TTablesDataModule.DoCmd(Command, IdTable, IdRecord: Integer;
Data: array of TFRec; Param1: Integer = 0): Integer;
var
t: TTable;
i: Integer;
begin // EVariantError InvalidVariant operation
...

где
TFRec = record
FieldName: string;
Value: Variant;
end;

В одном из вызовов параметр Data не нужен, и я вызываю функцию так
TablesDataModule.DoCmd(_opDel, _Cargoes, qryCargoes.FieldByName(_fIdnCargo).AsInteger, []);

При этом в самом начале функции возникает ошибка EVariantError InvalidVariant operation.
Я что то не могу сообразить как передать в функцию пустой параметр Data?


Романов Р.В.   (2003-02-06 12:55:00) [21]


> Nil?

Не компилится


REA   (2003-02-06 12:54:00) [22]

Nil? (Я правда наверно глупость сказал, но разбираться лень)


Романов Р.В.   (2003-02-06 12:50:00) [23]

Что то никак не получается передать пустой массив. Не ругается только когда массив содержит хотя бы один элемент :(


RWolf   (2003-02-06 11:50:00) [24]

попробуй вместо [] вставить VarArrayOf([])


Романов Р.В.   (2003-02-06 11:47:00) [25]

Нет мыслей?


Романов Р.В.   (2003-02-06 10:00:00) [26]

Обрабатывается он так
for i := 0 to Length(Data) - 1 do
UpdateField(t, Data[i].FieldName, Data[i].Value);

Попробовал var. Не откомпилировалось, т.к. у меня уже есть куча таких вызовов

TablesDataModule.DoCmd(_opChange, _Cargoes,
qryCalcSum.FieldByName(_fIdnCargo).AsInteger,
[FRec(_fCgReceptions, True), FRec(_fDateReceptions, Date())]);


MBo   (2003-02-06 09:53:00) [27]

Да. Правда, я воспринял array of TFRec не как открытый, а как динамический массив.
С открытым вроде бы не должно быть проблем. Как он внутри обрабатывается? Low и High используется?


Романов Р.В.   (2003-02-06 09:49:00) [28]

MBo © (06.02.03 09:41)

Ты по это?

function TTablesDataModule.DoCmd(Command, IdTable, IdRecord: Integer;
varData: array of TFRec; Param1: Integer = 0): Integer;


MBo   (2003-02-06 09:41:00) [29]

var?


Страницы:   1 2

Наверх

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