<?xml version="1.0" encoding="UTF-8" ?> <sect1 id="specials"> <sect1info> <title >Особливі змінні і вбудовані загальні змінні</title> <authorgroup> <author ><firstname ></firstname > <surname ></surname > <affiliation ><address > <email ></email> </address ></affiliation> </author> <othercredit role="translator" ><firstname >Юрій</firstname ><surname >Чорноіван</surname ><affiliation ><address ><email >yurchor@ukr.net</email ></address ></affiliation ><contrib >Переклад українською</contrib ></othercredit > </authorgroup> </sect1info> <title >Особливі змінні і вбудовані загальні змінні</title> <para >Особливі функції — це функції, які обробляються &kommander;. Вам слід пам’ятати, що до того часу, доки у &kommander; не буде повного інструменту обробки, всі спеціальні функції &kommander; буде виконано спочатку, а вже потім буде виконано скрипт. У більшості випадків це не є проблемою, але іноді проблеми виникають. </para> <variablelist> <varlistentry> <term ><function >@dcop(<parameter >ідентифікатор програми</parameter >, <parameter >об’єкт</parameter >, <parameter >функція</parameter >, <parameter >параметри</parameter >)</function ></term> <listitem> <para >Виконати виклик &DCOP;. @dcop(<quote >kmail</quote >, <quote >KMailIface</quote >, <quote >checkMail()</quote >, <quote ></quote >) </para> </listitem> </varlistentry> <varlistentry> <term ><function >@dcopid</function ></term> <listitem> <para >Ідентифікатор &DCOP; процесу. (kmdr-executor-@pid) </para> </listitem> </varlistentry> <varlistentry> <term ><function >@dialog(<parameter >діалогове вікно</parameter >[,<parameter >параметри</parameter >])</function ></term> <listitem> <para >Відкриває вказане діалогове вікно Kommander. Пошук діалогового вікна буде виконано у каталозі діалогових вікон, а потім у поточному каталозі, — саме у такому порядку. Цей пошук передує виклику інструменту виконання і встановлює значення типового каталогу у значення адреси каталогу, де знаходиться Kommander. Параметри може бути передано у звичайний для Unix спосіб або передано як іменовані параметри на зразок <quote >змінна=значення</quote >. Передані параметри потім можна знайти у глобальній динамічно розподіленій області. Функція @global(змінна) поверне <quote >значення</quote >. </para> </listitem> </varlistentry> <varlistentry> <term ><function >@env(<parameter >змінна середовища</parameter >)</function ></term> <listitem> <para >Виводить повну назву вказаної змінної середовища. @env(PWD) виводить $PWD. Пам’ятайте, що <quote >$</quote > є частиною оболонок, цю частину використовувати не слід. </para> </listitem> </varlistentry> <varlistentry> <term ><function >@exec(<parameter >команда</parameter >)</function ></term> <listitem> <para >повертає дані, виведенні під час виконання вказаною командою. @exec(ls -l). </para> </listitem> </varlistentry> <varlistentry> <term ><function >@execBegin ... @execEnd</function ></term> <listitem> <para >те саме, що і <function >@exec</function >, але з підтримкою послідовності символів «#!» і багаторядкових скриптів. Ця послідовність слугує для запису команд скриптових мов програмування шляхом декларування або за посередництва послідовності початку скрипту, «#!». </para> <itemizedlist> <listitem ><para ><function >@execBegin(php)</function ></para ></listitem> <listitem ><para ><function >@execBegin</function >#!/usr/bin/php</para ></listitem> </itemizedlist> <para >У першому з прикладів використано назву виконуваного файла <acronym >PHP</acronym >. &kommander; шукатиме за змінною PATH програму <application >php</application >, і якщо його не буде знайдено шукатиме, чи не зареєстровано &kommander; за адресою поза вказаними у змінній PATH. Якщо файл все ж не буде знайдено, програма повідомить про це користувачеві. У другому з прикладів використовується класична послідовність початку скрипту («#!»), і це може дати певні переваги, а також призвести до проблем. Наприклад, якщо у вашій системі встановлено бета-копію <acronym >PHP5</acronym > у каталог <filename >/usr/local/bin</filename >, який не буде знайдено, оскільки пошук проводитиметься у каталозі <filename >/usr/bin</filename >, цей спосіб буде корисним. Якщо ж ви надасте створене діалогове вікно комусь, у кого <acronym >PHP</acronym > встановлено до <filename >/usr/local/bin</filename >, потрібну програму буде знайдено, якщо ви скористаєтеся варіантом з «#!». Отже вам слід уникати використання «#!» і використовувати назву виконуваного файла програми, якщо ви маєте намір поширювати файли скриптів.</para> </listitem> </varlistentry> <varlistentry> <term ><function >@global(<parameter >змінна</parameter >)</function ></term> <listitem> <para >показує значення вказаної загальної змінної. </para> </listitem> </varlistentry> <varlistentry> <term ><function >@null</function ></term> <listitem> <para >Повертає null. За використання цієї функції, під час перевірки Kommander того, чи порожнє значення widgetText, під час виконання повідомлення про неіснуючі помилки буде придушено у випадку невизначеного стану віджета.</para> </listitem> </varlistentry> <varlistentry> <term ><function >@parentPid</function ></term> <listitem> <para >Ідентифікатор батьківського процесу. </para> </listitem> </varlistentry> <varlistentry> <term ><function >@pid</function ></term> <listitem> <para >Ідентифікатор процесу. </para> </listitem> </varlistentry> <varlistentry> <term ><function >@readSetting(<parameter >ключ</parameter >, <parameter >типове значення</parameter >)</function ></term> <listitem> <para >читає значення з <filename >kommanderrc</filename > </para> </listitem> </varlistentry> <varlistentry> <term ><function >@selectedWidgetText</function ></term> <listitem> <para >виділений вміст у віджеті, який може мати декілька значень, наприклад, у віджетах списків </para> </listitem> </varlistentry> <varlistentry> <term ><function >@setGlobal(<parameter >змінна</parameter >, <parameter >значення</parameter >)</function ></term> <listitem> <para >Встановлює для загальної змінної вказане значення. </para> </listitem> </varlistentry> <varlistentry> <term ><function >@widgetText</function ></term> <listitem> <para >вміст віджета </para> </listitem> </varlistentry> <varlistentry> <term ><function >@writeSetting(<parameter >ключ</parameter >, <parameter >значення</parameter >)</function ></term> <listitem> <para >записує значення до <filename >kommanderrc</filename > </para> </listitem> </varlistentry> </variablelist> <sect2 id="arrays"> <title >Група функцій роботи з масивами</title> <variablelist> <varlistentry> <term ><function >@Array.values(<parameter >масив</parameter >)</function ></term> <listitem> <para >Повертає відокремлений символами кінця рядка список всіх значень масиву. Отриманий результат можна використати для перегляду масиву.</para> </listitem> </varlistentry> <varlistentry> <term ><function >@Array.keys(<parameter >масив</parameter >)</function ></term> <listitem> <para >Повертає список всіх ключів масиву, розділених між собою EOL (знаком кінця рядка).</para> </listitem> </varlistentry> <varlistentry> <term ><function >@Array.setValue(<parameter >масив</parameter >, <parameter >ключ</parameter >, <parameter >значення</parameter >)</function ></term> <listitem> <para >Встановлює ключ і значення елемента масиву. Якщо масиву ще не існує, його буде створено.</para> </listitem> </varlistentry> <varlistentry> <term ><function >@Array.clear(<parameter >масив</parameter >)</function ></term> <listitem> <para >Вилучає всі елементи з масиву.</para> </listitem> </varlistentry> <varlistentry> <term ><function >@Array.count(<parameter >масив</parameter >)</function ></term> <listitem> <para >Повертає кількість елементів у масиві.</para> </listitem> </varlistentry> <varlistentry> <term ><function >@Array.value(<parameter >масив</parameter >,<parameter >ключ</parameter >)</function ></term> <listitem> <para >Повертає значення, пов’язане з вказаним ключем.</para> </listitem> </varlistentry> <varlistentry> <term ><function >@Array.remove(<parameter >масив</parameter >,<parameter >ключ</parameter >)</function ></term> <listitem> <para >Вилучити елемент з вказаним ключем з масиву.</para> </listitem> </varlistentry> <varlistentry> <term ><function >@Array.fromString(<parameter >масив</parameter >,<parameter >рядок</parameter >)</function ></term> <listitem> <para >Додає всі елементи у рядку до масиву. Рядок має бути вказано у форматі <emphasis >key\tvalue\n</emphasis > format.</para> </listitem> </varlistentry> <varlistentry> <term ><function >@Array.toString(<parameter >масив</parameter >,<parameter >рядок</parameter >)</function ></term> <listitem> <para >Повертає всі елементи у масиві у форматі <emphasis >key\tvalue\n</emphasis >.</para> </listitem> </varlistentry> </variablelist> </sect2> <sect2 id="files"> <title >Група функцій, пов’язаних з роботою з файлами</title> <variablelist> <varlistentry> <term ><function >@File.read(<parameter >файл</parameter >)</function ></term> <listitem> <para >Повертає вміст вказаного файла.</para> </listitem> </varlistentry> <varlistentry> <term ><function >@File.write(<parameter >файл</parameter ><parameter >рядок</parameter >)</function ></term> <listitem> <para >Записує вказаний рядок до файла.</para> </listitem> </varlistentry> <varlistentry> <term ><function >@File.append(<parameter >файл</parameter ><parameter >рядок</parameter >)</function ></term> <listitem> <para >Додає вказаний рядок в кінець вказаного файла.</para> </listitem> </varlistentry> </variablelist> </sect2> <sect2 id="strings"> <title >Група функцій, пов’язаних з роботою з рядками</title> <variablelist> <varlistentry> <term ><function >@String.length(<parameter >рядок</parameter >)</function ></term> <listitem> <para >Повертає кількість символів у рядку.</para> </listitem> </varlistentry> <varlistentry> <term ><function >@String.contains(<parameter >рядок</parameter >,<parameter >підрядок</parameter >)</function ></term> <listitem> <para >Перевіряє, чи міститься у рядку заданий підрядок.</para> </listitem> </varlistentry> <varlistentry> <term ><function >@String.find(<parameter >рядок</parameter >)</function ></term> <listitem> <para >Повертає позицію підрядка у рядку, або -1, якщо підрядок не буде знайдено.</para> <note ><para >Ця функція має додатковий цілочисельний параметр для наступного знайденого входження підрядка і використовується у Alpha 6.</para ></note> </listitem> </varlistentry> <varlistentry> <term ><function >@String.left(<parameter >рядок</parameter >, <parameter >ціле число</parameter >)</function ></term> <listitem> <para >Повертає перші «ціле число» символів рядка.</para> </listitem> </varlistentry> <varlistentry> <term ><function >@String.right(<parameter >рядок</parameter >, <parameter >ціле число</parameter >)</function ></term> <listitem> <para >Повертає останні «ціле число» символів рядка.</para> </listitem> </varlistentry> <varlistentry> <term ><function >@String.mid(<parameter >рядок</parameter >, <parameter >початок (ціле число)</parameter >, <parameter >кінець (ціле число)</parameter >)</function ></term> <listitem> <para >Повертає підрядок рядка, починаючи з вказаної позиції.</para> </listitem> </varlistentry> <varlistentry> <term ><function >@String.remove(<parameter >рядок</parameter >, <parameter >підрядок</parameter >)</function ></term> <listitem> <para >Вилучає всі елементи, які збігаються з вказаним підрядком.</para> </listitem> </varlistentry> <varlistentry> <term ><function >@String.replace(<parameter >рядок</parameter >, <parameter >підрядок для пошуку</parameter >, <parameter >підрядок для заміни</parameter >)</function ></term> <listitem> <para >Замінює всі елементи, що збігаються з вказаним підрядком, на вказаний рядок-замінник.</para> </listitem> </varlistentry> <varlistentry> <term ><function >@String.upper(<parameter >рядок</parameter >)</function ></term> <listitem> <para >Перетворює символи рядка на символи верхнього регістру.</para> </listitem> </varlistentry> <varlistentry> <term ><function >@String.lower(<parameter >рядок</parameter >)</function ></term> <listitem> <para >Перетворює символи рядка на символи нижнього регістру.</para> </listitem> </varlistentry> <varlistentry> <term ><function >@String.compare(<parameter >рядок</parameter >, <parameter >рядок</parameter >)</function ></term> <listitem> <para >Порівнює два рядки. Повертає 0, якщо рядки рівні, -1, якщо перший з рядків менший, і 1, якщо перший з рядків більший.</para> </listitem> </varlistentry> <varlistentry> <term ><function >@String.isEmpty(<parameter >рядок</parameter >)</function ></term> <listitem> <para >Перевіряє, чи є рядок порожнім.</para> </listitem> </varlistentry> <varlistentry> <term ><function >@String.isNumber(<parameter >рядок</parameter >)</function ></term> <listitem> <para >Перевіряє, чи є рядок коректним записом числа.</para> </listitem> </varlistentry> </variablelist> </sect2> <sect2 id="builtins"> <title >Вбудовані загальні змінні</title> <para >Доступ до вбудованих загальних змінних можна здійснити так само, як для звичайних загальних змінних, за допомогою <function >@global</function >.</para> <variablelist> <varlistentry> <term ><function >@global(_KDDIR)</function ></term> <listitem> <para >Каталог, у якому знаходиться поточне діалогове вікно.</para> </listitem> </varlistentry> <varlistentry> <term ><function >@global(_NAME)</function ></term> <listitem ><para >Назва діалогового вікна.</para ></listitem> </varlistentry> </variablelist> </sect2> </sect1>