RetItem — различия между версиями
Материал из Фабиус wiki
Hisava (обсуждение | вклад) м |
Hisava (обсуждение | вклад) м (→QrAddFn.pas) |
||
(не показана одна промежуточная версия этого же участника) | |||
Строка 4: | Строка 4: | ||
Если <indItem>=true, то берется вторая часть элемента массива | Если <indItem>=true, то берется вторая часть элемента массива | ||
+ | = [[QrAddFn.pas]] = | ||
+ | type | ||
+ | TQREvRetItem = class(TQREvDbFunction) | ||
+ | public | ||
+ | function Calculate: TQREvResult; override; | ||
+ | end; | ||
+ | |||
+ | function TQREvRetItem.Calculate: TQREvResult; | ||
+ | var | ||
+ | marr: TMArrString; | ||
+ | fld: byte; | ||
+ | begin | ||
+ | fld := 0; | ||
+ | if (ArgList.Count > 1) then | ||
+ | begin | ||
+ | marr := CreateArr(Argument(0).StrResult); | ||
+ | Result.Kind := ResString; | ||
+ | if (ArgList.Count > 2) and (Argument(2).BooResult = True) then | ||
+ | fld := 1; //Требуется вернуть 2-й элемент из {'Да','Д'} | ||
+ | Result.StrResult := marr[Argument(1).IntResult, fld]; | ||
+ | end | ||
+ | else | ||
+ | Result := ErrorCreate(Format(SqrExpWrongArguments, ['RetItem'])); | ||
+ | end; | ||
+ | |||
= Пример = | = Пример = | ||
RetItem( 'waretype', 0 ) | RetItem( 'waretype', 0 ) |
Текущая версия на 07:53, 10 октября 2024
RetItem - это программа
RetItem(<ArrName>, <NumItem>, [<indItem>])
Возвращает элемент массива по номеру - 1
Если <indItem>=true, то берется вторая часть элемента массива
QrAddFn.pas
type
TQREvRetItem = class(TQREvDbFunction) public function Calculate: TQREvResult; override; end;
function TQREvRetItem.Calculate: TQREvResult; var
marr: TMArrString; fld: byte;
begin
fld := 0; if (ArgList.Count > 1) then begin marr := CreateArr(Argument(0).StrResult); Result.Kind := ResString; if (ArgList.Count > 2) and (Argument(2).BooResult = True) then fld := 1; //Требуется вернуть 2-й элемент из {'Да','Д'} Result.StrResult := marr[Argument(1).IntResult, fld]; end else Result := ErrorCreate(Format(SqrExpWrongArguments, ['RetItem']));
end;
Пример
RetItem( 'waretype', 0 )