RetItem — различия между версиями
Материал из Фабиус wiki
Hisava (обсуждение | вклад) м |
Hisava (обсуждение | вклад) м (→QrAddFn.pas) |
||
| Строка 5: | Строка 5: | ||
Если <indItem>=true, то берется вторая часть элемента массива | Если <indItem>=true, то берется вторая часть элемента массива | ||
= [[QrAddFn.pas]] = | = [[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 )