Описание функции


Assign

Присваивает данные переменной с указанным именем.

Assign('varname','data'[,flag=0])

Параметры

varname Имя переменной.
  Имя может содержать символы латинского алфавита, цифр и знака подчёркивания.
  Имя прописывается без знака "$".
  Нельзя использовать в качестве имени элемент массива, т.е. переменная не будет создана/изменена, если имя содержит символ "[".
  Повторный запуск функции с тем же именем перезаписывает данные.

Важно для командной строки TCIMG!
  Имя переменной не должно быть менее 5 символов!
data Данные для присвоения.
flag [необязательный] Меняет поведение функции (сложите значения используемых опций):
0 = (по умолчанию) создаёт переменную, если необходимо
1 = принудительно создаёт в локальной области видимости
2 = принудительно создаёт в глобальной области видимости (актуально для командной строки TCIMG)
4 = не создавать переменную, если она не существует

Возвращаемое значение

Успех:Возвращает 1.
Ошибка:Возвращает 0, если невозможно создать/присвоить данные переменной.

Примечания

Если есть необходимость в использовании Assign() для создания или присвоения значения переменной, то, в таких ситуациях, Eval() используется для чтения значения переменной, а IsDeclared() используется для проверки её существования.

Функцию можно подключить через команду exect

См. также

Eval, IsDeclared, Execute

Примеры:
 Как создать кнопку?


exect=Assign('var_s','привет',2)||_ViewValues('$var_s') ;; пример присваивания данных переменной с указанным именем

exect=$var_0=Assign('STRUCT_1',DllStructCreate('dword~~Size;hwnd~~hWndOwnder;handle~~hInstance;dword~~rgbResult;ptr~~CustColors;dword~~Flags;lparam~~lCustData;ptr~~lpfnHook;ptr~~lpTemplateName'),2)+Assign('STRUCT_2',DllStructCreate('dword[16]'),2)+DllStructSetData($STRUCT_1,'Size',DllStructGetSize($STRUCT_1))+DllStructSetData($STRUCT_1,'hWndOwnder',GUICreate(0,200,300,-1,-1))+DllStructSetData($STRUCT_1,'rgbResult','0xC5B248')+DllStructSetData($STRUCT_1,'CustColors',DllStructGetPtr($STRUCT_2))+DllStructSetData($STRUCT_1,'Flags',259)||$var_iyn=DllCall('comdlg32.dll','bool','ChooseColor','struct*',$STRUCT_1)[0]||$var_0=$var_iyn=0?_Exit():1||$var_num=DllStructGetData($STRUCT_1,'rgbResult')||$var_ibrg=Hex($var_num,6)||_ViewValues('$var_ibrg','BRG~~Color') ;; создание и запуск окна выбора цвета

exect=Assign('STRUCT_N',DllStructCreate('wchar[256]'),2)||$var_i=IsDllStruct($STRUCT_N)||_ViewValues($var_i) ;; пример проверки переменной типом данных DllStruct

exect=$var_0=Assign('STRUCT_N',DllStructCreate('struct;int~~var1;byte~~var2;uint~~var3;char~~var4[128];endstruct'),2)+DllStructSetData($STRUCT_N,1,-1)+DllStructSetData($STRUCT_N,'var2',255)+DllStructSetData($STRUCT_N,4,'Write-Data')||$var_s='Размер~~структуры:~~'&DllStructGetSize($STRUCT_N)&@CRLF&'Указатель~~структуры:~~'&DllStructGetPtr($STRUCT_N)&@CRLF&'Данные:'&@CRLF&DllStructGetData($STRUCT_N,1)&@CRLF&DllStructGetData($STRUCT_N,2)&@CRLF&DllStructGetData($STRUCT_N,3)&@CRLF&DllStructGetData($STRUCT_N,4)||_ViewValues('$var_s') ;; пример создания структуры, установки и получение данных

exect=$var_handle=WinGetHandle('[CLASS:TTOTAL_CMD]')||$var_0=Assign('STRUCT_RECT',DllStructCreate(':tagRECT:'),2)+DllCall('user32.dll','bool','GetWindowRect','hwnd',Eval('var_handle'),'struct*',$STRUCT_RECT)||$var_s='Координаты~~углов~~TC:'&@CRLF&'X1:~~'&DllStructGetData($STRUCT_RECT,'Left')&@CRLF&'X2:~~'&DllStructGetData($STRUCT_RECT,'Right')&@CRLF&'Y1:~~'&DllStructGetData($STRUCT_RECT,'Top')&@CRLF&'Y2:~~'&DllStructGetData($STRUCT_RECT,'Bottom')||_ViewValues('$var_s') ;; получение координат окна Total Commander

exect=$var_0=Assign('STRUCT_ICON',DllStructCreate('int'),2)+Assign('STRUCT_STRING',DllStructCreate('wchar[260]'),2)+DllStructSetData($STRUCT_STRING,1,@SystemDir&'\shell32.dll')||$var_iyn=DllCall('shell32.dll','int',62,'hwnd',GUICreate(0,400,400,-1,-1),'struct*',$STRUCT_STRING,'int',DllStructGetSize($STRUCT_STRING)/2,'struct*',$STRUCT_ICON)[0]||$var_0=$var_iyn=0?_Exit():1||$var_s=DllStructGetData($STRUCT_STRING,1)&','&DllStructGetData($STRUCT_ICON,1)||_ViewValues('$var_s','Путь~~и~~номер~~значка') ;; выбор значка в системном диалоге

slist=%WL||^^*||?V|>>|Assign('var_n',Number(<info=i1::>/<info=i2::>),2)||?V|^^|$var_n=2?'равно':($var_n>2?'больше':'меньше') GLOBALSLIST<a> ;; для выделенных изображений добавить в начало пути: 'равно', если ширина в 2 раза больше высоты, если больше, чем в 2 раза, то 'больше', если меньше, чем в 2 раза, то 'меньше'
renms=%WL||$$-cntr<1:6|1|1>-img-||?V|>>|Assign('var_n',:NUMBER:-Floor(:NUMBER:/6)*6,2)||?V|^^|$var_n=0?6:$var_n||upd<1> ;; пример переименования выделенных объектов и получение нескольких счётчиков

sendsslist=$GLOBALSENDS[1]&20||?V|>>|Assign('var_n',StringFormat('%.1f',:NUMBER:/10),2)||§!!$var_n GLOBALSLIST<a> ;; получить счётчик вида 0.1, 0.2, ..., 1.0, 1.1

exect=$var_0=Assign('STRUCT_1',DllStructCreate('wchar[256]'),2)+DllCall('Kernel32.dll','uint','GetTempFileNameW','wstr',@TempDir,'wstr','__','uint',0,'ptr',DllStructGetPtr($STRUCT_1))||$var_path=DllStructGetData($STRUCT_1,1)||_ViewValues('$var_path','temp_file') ;; получить временный файл


© Аверин Андрей для Total Commander Image  Averin-And@yandex.ru