![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Массив как параметр функции [D5, Win2k]
Романов Р.В. © (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?