<?xml version="1.0"  encoding="UTF-8" ?>

<sect1 id="specials">
<sect1info>
<title
>Specialvärden och inbyggda globala variabler</title>
</sect1info>

<title
>Specialvärden och inbyggda globala variabler</title>

<para
>Specialvärden är funktioner som behandlas av &kommander;. Du bör vara medveten om att när den gamla tolken används, utförs alla &kommander; specialvärden först och därefter körs skriptet. I det flesta fall är det inte något problem, men i några enstaka fall (särskilt i snurror och villkor) kan det vara det. </para>
<note
><para
>Listan nedan kan vara något föråldrad. Du rekommenderas att använda <guilabel
>funktionsbläddraren</guilabel
> för att få hjälp om tillgängliga funktioner. <guilabel
>Funktionsbläddraren</guilabel
> kan nås inne i editorn <guilabel
>Kommander Text</guilabel
>, genom att klicka på knappen <guilabel
>Funktion...</guilabel
>. </para>
</note>

<variablelist>
<varlistentry>
<term
><function
>@dcop(<parameter
>pgmId</parameter
>, <parameter
>objekt</parameter
>, <parameter
>funktion</parameter
>, <parameter
>argument</parameter
>)</function
></term>
<listitem>
<para
>Gör ett &DCOP;-anrop, @dcop(<quote
>kmail</quote
>, <quote
>KMailIface</quote
>, <quote
>checkMail()</quote
>, <quote
></quote
>) </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@dcopid</function
></term>
<listitem>
<para
>&DCOP;-id för processen (kmdr-executor-@pid) </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@dialog(<parameter
>dialogruta</parameter
>[,<parameter
>parametrar</parameter
>])</function
></term>
<listitem>
<para
>Startar angiven Kommander dialogruta. Dialogrutan letas efter i katalogen med dialogrutor och i arbetskatalogen, i den ordningen. Det här lägger till anropet till Executor i början och ändrar standardkatalog till den som Kommander programmet finns i. Parametrar kan skickas som vanligt i Unix, eller så kan namngivna parametrar som <quote
>variabel=värde</quote
> skickas. Därefter hittar du skickade parametrar i den globala uppsättningen. @global(variabel) skulle returnera <quote
>värde</quote
>. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@env(<parameter
>miljövariabel</parameter
>)</function
></term>
<listitem>
<para
>Ersätts med den angivna miljövariabeln. @env(PWD) ersätts med $PWD. Kom ihåg att <quote
>$</quote
> ingår i skalet, och ska inte användas. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@exec(<parameter
>kommando</parameter
>)</function
></term>
<listitem>
<para
>Returnerar utmatningen från körningen av det angivna kommandot. @exec(ls -l). </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@execBegin ... @execEnd</function
></term>
<listitem>
<para
>Samma som <function
>@exec</function
>, men stöder inledning med "#!" och skript med flera rader. Det fungerar med diverse skriptspråk antingen genom att deklarera dem eller genom att använda "#!". </para>
<itemizedlist>
<listitem
><para
><function
>@execBegin(php)</function
></para
></listitem>
<listitem
><para
><function
>@execBegin</function
>(#!/usr/bin/php)</para
></listitem>
</itemizedlist>
<para
>Det första exemplet använder namnet på det körbara programmet <acronym
>PHP</acronym
>. &kommander; söker i PATH efter <application
>php</application
> och om det inte hittas kontrollerar om det är registrerat i &kommander; på en plats som inte finns i sökvägen. Om inte får användaren reda på att det inte kan hittas. Det andra exemplet använder den klassiska inledningen <quote
>!#</quote
>, som både kan ha fördelar men också problem. Om du till exempel har en betaversion av <acronym
>PHP5</acronym
> i <filename
>/usr/local/bin</filename
> hittas den inte eftersom en annan hittas i <filename
>/usr/bin</filename
>, är det användbart. Om du dock distribuerar dialogrutan till någon som bara har <acronym
>PHP</acronym
> i <filename
>/usr/local/bin</filename
> hittas den inte med inledningen som används. Alltså varnas för att använda en inledning, och det rekommenderas att använda det körbara namnet om du delar filer.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@global(<parameter
>variabel</parameter
>)</function
></term>
<listitem>
<para
>Ersätts med värdet på den angivna globala variabeln. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@null</function
></term>
<listitem>
<para
>Returnerar null. Nu när Kommander kontrollerar om widgetText är tom vid körning, förhindrar detta felaktiga fel med fallet då en grafisk komponent har ett tillstånd som inte är angivet.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@parentPid</function
></term>
<listitem>
<para
>Process-id för överliggande process. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@pid</function
></term>
<listitem>
<para
>Process-id för processen. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@readSetting(<parameter
>nyckel</parameter
>, <parameter
>förvalt värde</parameter
>)</function
></term>
<listitem>
<para
>Läser ett värde från <filename
>kommanderrc</filename
>. Se också @writeSetting. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@selectedWidgetText</function
></term>
<listitem>
<para
>Det markerade innehållet i en grafisk komponent som kan visa mer än ett värde, som listkomponenter. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@setGlobal(<parameter
>variabel</parameter
>, <parameter
>värde</parameter
>)</function
></term>
<listitem>
<para
>Tilldelar den globala variabeln det angivna värdet. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@widgetText</function
></term>
<listitem>
<para
>Innehållet i en grafisk komponent. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@writeSetting(<parameter
>nyckel</parameter
>, <parameter
>värde</parameter
>)</function
></term>
<listitem>
<para
>Skriv värde till <filename
>kommanderrc</filename
>. Alla &kommander;-dialogrutor delar samma kommanderrc-fil, och var och en har sin egen sektion i den. </para>
</listitem>
</varlistentry>
</variablelist>

<sect2 id="arrays">
<title
>Fältfunktionsgruppen</title>

<variablelist>
<varlistentry>
<term
><function
>@Array.values(<parameter
>fält</parameter
>)</function
></term>
<listitem>
<para
>Returnerar en lista åtskild med nyrader med alla värden i fältet. Kan användas för att gå igenom ett fält.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.keys(<parameter
>fält</parameter
>)</function
></term>
<listitem>
<para
>Returnerar en lista med alla nycklar i fältet åtskilda med nyrader.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.setValue(<parameter
>fält</parameter
>, <parameter
>nyckel</parameter
>, <parameter
>värde</parameter
>)</function
></term>
<listitem>
<para
>Anger en nyckel och värde för ett element i ett fält. Om fältet inte finns, skapas det.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.clear(<parameter
>fält</parameter
>)</function
></term>
<listitem>
<para
>Ta bort alla element från fältet.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.count(<parameter
>fält</parameter
>)</function
></term>
<listitem>
<para
>Returnera antal element i fältet.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.value(<parameter
>fält</parameter
>,<parameter
>nyckel</parameter
>)</function
></term>
<listitem>
<para
>Returnera värdet som hör ihop med den givna nyckeln.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.remove(<parameter
>fält</parameter
>,<parameter
>nyckel</parameter
>)</function
></term>
<listitem>
<para
>Ta bort elementet med den givna nyckeln från fältet.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.fromString(<parameter
>fält</parameter
>,<parameter
>sträng</parameter
>)</function
></term>
<listitem>
<para
>Lägger till alla element i strängen till fältet. Strängen ska har formatet <emphasis
>nyckel\tvärde\n</emphasis
>.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.toString(<parameter
>fält</parameter
>,<parameter
>sträng</parameter
>)</function
></term>
<listitem>
<para
>Returnerar alla element i fältet på formatet <emphasis
>nyckel\tvärde\n</emphasis
>.</para>
</listitem>
</varlistentry>

</variablelist>
</sect2>

<sect2 id="files">
<title
>Filfunktionsgruppen</title>
<variablelist>

<varlistentry>
<term
><function
>@File.read(<parameter
>fil</parameter
>)</function
></term>
<listitem>
<para
>Returnera innehållet i den givna filen.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@File.write(<parameter
>fil</parameter
>,<parameter
>sträng</parameter
>)</function
></term>
<listitem>
<para
>Skriv given sträng till en fil.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@File.append(<parameter
>fil</parameter
>,<parameter
>sträng</parameter
>)</function
></term>
<listitem>
<para
>Skriv given sträng i slutet på en fil.</para>
</listitem>
</varlistentry>

</variablelist>
</sect2>

<sect2 id="strings">
<title
>Strängfunktionsgruppen</title>
<variablelist>

<varlistentry>
<term
><function
>@String.length(<parameter
>sträng</parameter
>)</function
></term>
<listitem>
<para
>Returnera antalet tecken i strängen.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.contains(<parameter
>sträng</parameter
>,<parameter
>delsträng</parameter
>)</function
></term>
<listitem>
<para
>Kontrollera om strängen innehåller en given delsträng.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.find(<parameter
>sträng</parameter
>)</function
></term>
<listitem>
<para
>Returnera en delsträngs position i strängen, eller -1 om den inte hittas.</para>
<note
><para
>Det här kommer att ha ett valfritt heltal med startposition, för användning för att söka igen i version alfa 6.</para
></note>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.left(<parameter
>sträng</parameter
>, <parameter
>heltal</parameter
>)</function
></term>
<listitem>
<para
>Returnerar de första n tecknen i strängen.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.right(<parameter
>sträng</parameter
>, <parameter
>heltal</parameter
>)</function
></term>
<listitem>
<para
>Returnerar de sista n tecknen i strängen.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.mid(<parameter
>sträng</parameter
>, <parameter
>heltal start</parameter
>, <parameter
>heltal slut</parameter
>)</function
></term>
<listitem>
<para
>Returnerar en delsträng av strängen, med början på angiven position.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.remove(<parameter
>sträng</parameter
>, <parameter
>delsträng</parameter
>)</function
></term>
<listitem>
<para
>Ta bort alla förekomster av en given delsträng.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.replace(<parameter
>sträng</parameter
>, <parameter
>delsträng sök</parameter
>, <parameter
>delsträng ersätt</parameter
>)</function
></term>
<listitem>
<para
>Ersätt alla förekomster av en given delsträng med en given ersättning.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.upper(<parameter
>sträng</parameter
>)</function
></term>
<listitem>
<para
>Konvertera strängen till stora bokstäver.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.lower(<parameter
>sträng</parameter
>)</function
></term>
<listitem>
<para
>Konvertera strängen till små bokstäver.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.compare(<parameter
>sträng</parameter
>, <parameter
>sträng</parameter
>)</function
></term>
<listitem>
<para
>Jämför två strängar. Returnera 0 om de är lika, -1 om den första är tidigare, 1 om den första är senare.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.isEmpty(<parameter
>sträng</parameter
>)</function
></term>
<listitem>
<para
>Kontrollera om strängen är tom.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.isNumber(<parameter
>sträng</parameter
>)</function
></term>
<listitem>
<para
>Kontrollera om strängen är ett giltigt tal.</para>
</listitem>
</varlistentry>

</variablelist>
</sect2>

<sect2 id="builtins">
<title
>Inbyggda globala variabler</title>
<para
>Inbyggda globala variabler kan kommas åt precis som vanliga globala variabler med <function
>@global</function
>.</para>
<variablelist>
<varlistentry>
<term
><function
>@global(_KDDIR)</function
></term>
<listitem>
<para
>Katalogen den nuvarande dialogrutan är i.</para>
</listitem>
</varlistentry>
<varlistentry>
<term
><function
>@global(_NAME)</function
></term>
<listitem
><para
>Dialogrutans namn</para
></listitem>
</varlistentry>
</variablelist>
</sect2>

</sect1>
