<?xml version="1.0" encoding="UTF-8" ?>
<sect1 id="specials">
<sect1info>
<title>Specielle og indbyggede globale variable</title>
<authorgroup>
<author><firstname></firstname> <surname></surname> <affiliation><address> <email></email>
</address></affiliation>
</author>
&rune.laursen.role;
</authorgroup>
</sect1info>
<title>Specielle og indbyggede globale variable</title>
<para>Specielle er funktioner der behandles af &kommander;. Du skal være opmærksom på at indtil &kommander; har en fuldstændig fortolker, vil alle specielle eksekveres først og derefter eksekveres scriptet. I de fleste tilfælde er dette ikke et problem, men somme tider opstår der problemer. </para>
<variablelist>
<varlistentry>
<term><function>@dcop(<parameter>appId</parameter>, <parameter>objekt</parameter>, <parameter>funktion</parameter>, <parameter>argumenter</parameter>)</function></term>
<listitem>
<para>Lav et &DCOP;-kald. @DCOP(<quote>kmail</quote>, <quote>KMailIface</quote>, <quote>checkMail()</quote>, <quote></quote>) </para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@dcopid</function></term>
<listitem>
<para>Processens &DCOP;-ID (kmdr-executor-@pid) </para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@dialog(<parameter>dialog</parameter>[,<parameter>parametre</parameter>])</function></term>
<listitem>
<para>Starter den givne kommander-dialog. Dialogen søges i dialogkataloget og i det aktuelle katalog, i den rækkefølge. Dette kommer før kaldet til executoren og sætter standardkataloget til den Kommander-programmet findes i. Parametre kan overføres i sædvanlig UNIX-stil eller overføres som <quote>variabel=værdi</quote>. Du kan derefter finde overførte parametre i den globale samling. @global(variable) ville returnere <quote>værdi</quote>. </para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@env(<parameter>miljøVariabel</parameter>)</function></term>
<listitem>
<para>Udvides til den givne miljøvariabel. @env(PWD) udvides til $PWD. Husk at <quote>$</quote> er en del af skallen og ikke må bruges. </para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@exec(<parameter>kommando</parameter>)</function></term>
<listitem>
<para>returnerer uddata ved eksekveringen af den givne kommando @exec(ls -l). </para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@execBegin ... @execEnd</function></term>
<listitem>
<para>ligesom <function>@exec</function>, men understøtter shebang og multilinje scripter. Dette servicerer forskellige scriptsprog, enten ved at erklære dem eller ved at bruge en shebang. </para>
<itemizedlist>
<listitem><para><function>@execBegin(php)</function></para></listitem>
<listitem><para><function>@execBegin</function>#!/usr/bin/php</para></listitem>
</itemizedlist>
<para>Den første bruger navnet på <acronym>PHP</acronym>-kørbare. &kommander; søger i PATH efter <application>php</application> og ser efter et sted uden din sti, om den er registreret i &kommander; hvis ikke den findes. Hvis ikke før den brugeren opmærksom på at den ikke blev fundet. Det andet eksempel bruger den klassiske <quote>shebang</quote> som kan have nogle fordele og problemer. Hvis du har en betaudgave af <acronym>PHP5</acronym> i f.eks. <filename>/usr/local/bin</filename> som ikke ville blive fundet fordi der søges i <filename>/usr/bin</filename> er dette brugbart. Hvis du derimod distribuerer dialogen til en som kun har <acronym>PHP</acronym> i <filename>/usr/local/bin</filename> ville den ikke blive fundet når der bruges en shebang. Så at bruge shebang skal tages med forbehold og det anbefales at bruge den eksekverbare hvis du deler filer.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@global(<parameter>variabel</parameter>)</function></term>
<listitem>
<para>udvides til værdien af den givne globale variabel. </para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@null</function></term>
<listitem>
<para>Returnerer null. Nu da Kommander undersøger for tom widgetText på kørselstidspunktet, forebygger dette, fejlagtige fejl hvis en kontrol har en tilstand der ikke er sat.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@parentPid</function></term>
<listitem>
<para>Forældreprocessens &PID;. </para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@pid</function></term>
<listitem>
<para>Processens &PID;. </para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@readSetting(<parameter>nøgle</parameter>, <parameter>standardVærdi</parameter>)</function></term>
<listitem>
<para>læser en værdi fra <filename>kommanderrc</filename> </para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@selectedWidgetText</function></term>
<listitem>
<para>det markerede indhold i en kontrol som kan vise mere end en værdi, som listekontroller </para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@setGlobal(<parameter>variabel</parameter>, <parameter>værdi</parameter>)</function></term>
<listitem>
<para>Sætter den globale variabel til den givne værdi. </para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@widgetText</function></term>
<listitem>
<para>en kontrols indhold </para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@writeSetting(<parameter>nøgle</parameter>, <parameter>værdi</parameter>)</function></term>
<listitem>
<para>skriv værdi til <filename>kommanderrc</filename> </para>
</listitem>
</varlistentry>
</variablelist>
<sect2 id="arrays">
<title>Array-funktionsgruppe</title>
<variablelist>
<varlistentry>
<term><function>@Array.values(<parameter>array</parameter>)</function></term>
<listitem>
<para>Returnerer EOL-adskilt liste af alle værdier i arrayet. Kan bruges til at gennemgå et array.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@Array.keys(<parameter>array</parameter>)</function></term>
<listitem>
<para>Returnerer en EOL-adskilt liste af alle nøgler i arrayet.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@Array.setValue(<parameter>array</parameter>, <parameter>nøgle</parameter>, <parameter>værdi</parameter>)</function></term>
<listitem>
<para>Sætter en nøgle og en værdi til et element i et array. Eksisterer der ikke et array i forvejen, oprettes der et.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@Array.clear(<parameter>array</parameter>)</function></term>
<listitem>
<para>Fjerner alle elementer i et array.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@Array.count(<parameter>array</parameter>)</function></term>
<listitem>
<para>Returnerer antallet af elementer i arrayet.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@Array.value(<parameter>array</parameter>,<parameter>nøgle</parameter>)</function></term>
<listitem>
<para>Returnerer værdie associeret med den givne nøgle.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@Array.remove(<parameter>array</parameter>,<parameter>nøgle</parameter>)</function></term>
<listitem>
<para>Fjern element med given nøgle fra arrayet.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@Array.fromString(<parameter>array</parameter>,<parameter>streng</parameter>)</function></term>
<listitem>
<para>Tilføjer alle elementer i strengen til arrayet. Strengen skal have formatet:<emphasis>nøgle\tværdi\n</emphasis>."</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@Array.toString(<parameter>array</parameter>,<parameter>streng</parameter>)</function></term>
<listitem>
<para>"Returnerer alle elementer i array i <emphasis>nøgle\tværdi\n</emphasis> format."</para>
</listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 id="files">
<title>Filfunktionsgruppe</title>
<variablelist>
<varlistentry>
<term><function>@File.read(<parameter>fil</parameter>)</function></term>
<listitem>
<para>Returnerer indhold af den givne fil.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@File.write(<parameter>fil</parameter><parameter>streng</parameter>)</function></term>
<listitem>
<para>Skriv given streng til en fil.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@File.append(<parameter>fil</parameter><parameter>streng</parameter>)</function></term>
<listitem>
<para>Tilføj given streng til slutningen af en fil.</para>
</listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 id="strings">
<title>Strengfunktionsgruppe</title>
<variablelist>
<varlistentry>
<term><function>@String.length(<parameter>streng</parameter>)</function></term>
<listitem>
<para>Returnerer antal tegn i strengen.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@String.contains(<parameter>streng</parameter>,<parameter>understreng</parameter>)</function></term>
<listitem>
<para>Undersøger om strengen indeholder den givne understreng.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@String.find(<parameter>streng</parameter>)</function></term>
<listitem>
<para>Returnerer en understrengs position i strengen eller -1 hvis den ikke findes."</para>
<note><para>Dette får en valgfri startposition angivet med et heltal til søgning efter næste, i alfa 6.</para></note>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@String.left(<parameter>streng</parameter>, <parameter>heltalt</parameter>)</function></term>
<listitem>
<para>Returnerer første n tegn i strengen.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@String.right(<parameter>streng</parameter>, <parameter>heltal</parameter>)</function></term>
<listitem>
<para>Returnerer sidste n tegn i strengen.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@String.mid(<parameter>streng</parameter>, <parameter>heltal startposition</parameter>, <parameter>heltal slutposition</parameter>)</function></term>
<listitem>
<para>Returnerer strengens understreng, begynder fra given position.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@String.remove(<parameter>streng</parameter>, <parameter>understreng</parameter>)</function></term>
<listitem>
<para>Fjerner alle forekomster af den givne understreng.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@String.replace(<parameter>streng</parameter>, <parameter>understreng find</parameter>, <parameter>understreng erstat</parameter>)</function></term>
<listitem>
<para>Erstatter alle forekomster af en given understreng med den givne erstatningsstreng.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@String.upper(<parameter>streng</parameter>)</function></term>
<listitem>
<para>Konverterer strengen til store bogstaver.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@String.lower(<parameter>streng</parameter>)</function></term>
<listitem>
<para>Konverterer strengen til små bogstaver.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@String.compare(<parameter>streng</parameter>, <parameter>streng</parameter>)</function></term>
<listitem>
<para>Sammenligner to strenge. Returnerer 0, hvis de er ens, -1 hvis den første er mindst, 1 hvis den første er størst.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@String.isEmpty(<parameter>streng</parameter>)</function></term>
<listitem>
<para>Undersøger om strengen er tom.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@String.isNumber(<parameter>streng</parameter>)</function></term>
<listitem>
<para>Undersøger om strengen er et gyldigt tal.</para>
</listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 id="builtins">
<title>Indbyggede globale</title>
<para>Indbyggede globale tilgås ligesom almindelige globale variable med <function>@global</function>.</para>
<variablelist>
<varlistentry>
<term><function>@global(_KDDIR)</function></term>
<listitem>
<para>Katalogen den aktuelle dialog er i.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@global(_NAME)</function></term>
<listitem><para>Navnet på dialogen</para></listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>