GeoGet

Complete geocaching solutions

User Tools

Site Tools


user:skripty:functions

Předdefinované funkce

Tyto funkce lze použít ve skriptech GeoGetu. Proměnné programu naleznete zde.

Obecné funkce

function RunExec(Value: string): integer;
  • Zavolá externí program a vrací jeho návratový kód.
function RunExecNoWait(Value: string): boolean;
  • Zavolá externí program, ale nečeká na jeho ukončení. Spustí jej v novém vlákně. 2.4.0
procedure RunShell(Value: string);
  • Zavolá obsah přes shell operačního systému. Například pokud je Value URL adresa webové stránky, bude otevřena ve výchozím internetovém prohlížeči.
function BrowseURL(const URL: string): boolean
  • Otevře odkaz v prohlížeči definovaném v nastavení GeoGetu.2.5.15
procedure Sleep(Value: integer);
  • Počká definovaný počet milisekund.
function GetTick: longword;
  • Vrací hodnotu interního čítače systému. Pokud ale systém umožňuje precizní měření času, funguje s přesností na jednotky milisekund! Rozdíl dvou hodnot se dá použít na měření uplynulého času. 2.4.0
function HttpAsk(const Method, Url, UploadType, Upload: string; var Download: string): boolean;
  • Provede HTTP/HTTPS dotaz na nějakou webovou stránku. Method je název HTTP metody, například 'GET', nebo 'POST'. Url je požadované URL. Může obsahovat i HTTP autorizační údaje. UploadType je případný MIME-type pro uploadovaná data. Pokud jej nechcete použít, použijte prázdný string. Upload obsahuje uploadovaná data. A Download obsahuje stáhnutá data. Funkce vrací True, pokud komunikace proběhla v pořádku.
function HttpAskUA(const Method, Url, UploadType, Upload, UserAgent: string; var Download: string): boolean;
  • Provede HTTP/HTTPS dotaz na webovou stránku. Na rozdíl od HttpAsk() umožňuje nastavit hodnotu User Agent
  • Hack: funkci lze využít k zadávání i jiných parametrů než je User Agent do hlavičky HTTP/HTTPS požadavku
    • za hodnotu User Agent přidejte CRLF a pak další parametr, který má být v hlavičce. Může jich být i několik, odělovačem je vždy CRLF
    • pokud nechcete User Agent zadávat, bude na začátku rovnou CRLF
    • tento postup pravděpodobně nebude účinný u parametrů, které GeoGet posílá automaticky
    • jako příklad muže být odeslání přihlašovacích údajů
//běžně by se použilo
   Url:=https://uživatel:heslo@server.com/...;
//ale je také možné použít běžné Url a nastavit
   UserAgent:=CRLF+'Authorization uživatel heslo';
  • :!: pokud volání webové stránky vrátí chybovou hodnotu, funkce se vrátí hodnotu false, do návratové proměnné Download nepřepíše vrácený text a nebude možné zjisti podrobnosti o chybě ani její číslo (do verze 2.11.5), od verze 2.11.6 je výsledný dokument vrácen vždy, pokud bylo něco posláno, i když funkce skončí chybou
HttpResultCode():integerl
  • funkce vrací návratovou hodnotu z předchozího volání HttpAsk() nebo HttpAskUA() 2.11.6
HttpResultHeaders():string;
  • funkce vrací http hlavičku z předchozího volání HttpAsk() nebo HttpAskUA() 2.11.6
function UDPAsk(target, port, value: AnsiString; timeout:integer): AnsiString;
  • provede UPD dotaz a čeká timeout milisekund na odpověď, pokud nepřijde, vrací prázdný string 2.9.13
  • funguje to jak na obecné UDP, tak i na multicasty
  • lze pouzit IPv4 i IPv6
  • target je string s IP adresou, nebo doménovým jménem
  • port je symbolický název portu nebo jeho číslo (proto je to string)
  • value jsou data, která budou odeslána
  • timeout je čas v milisekundách, který funkce čeká na odpověď
function FormatFloat(const Format: string; Value: extended): string;
function FlToStr(Value: extended): string;
  • Převede floating-point číslo do textové podoby. Výsledek vždy obsahuje desetinnou tečku, lhostejno na nastavení systému.
function StrToFl(Value: string): extended;
  • Převede floating-point číslo v textové podobě. Je jedno, jestli vstup obsahuje desetinou tečku nebo čárku.
function DateToInt(Value: TDateTime): string;
  • Převede datum do formátu yyyymmdd.
function IntToDate(Value: string): TDateTime;
  • Převede řetězec ve formátu yyyymmdd na datum.
function SrtmElevation(x, y: extended; srtmpath: string): integer;
  • Pokusí se zjistit výšku bodu pomocí SRTM souborů v zadané cestě (musí končit zpětným lomítkem!). Pokud nelze zjistit výšku bodu, je vrácena výška -32768.
 ParseWgsStr(const Value: string; var X, Y: extended): boolean;
  • Převede souřadnice z Value na desetinný formát. Zvládá velké množství formátů souřadnic jako funkce CoordEdit().
procedure WGStoUTM(Lat, Lon: extended; Force33u: boolean; out Northing, Easting: extended; out Zone: integer; out ZoneChar: char);
  • Převod souřadnic z WGS-84 do UTM.
procedure UTMtoWGS(Northing, Easting: extended; Zone: integer; Zonechar: char; out Lat, Lon: extended);
  • Převod souřadnic z UTM do WGS-84. 2.5.10
procedure UTMtoMCZ(Northing, Easting: extended; out North, East: string);
  • Převod UTM souřadnic s vynucenou zónou U33 na souřadnicový systém používaný na serveru mapy.cz.
function FormatCoordNum(X, Y: extended): string;
  • Převede souřadnice do textové podoby určené ke čtení člověkem (N50°12.345' E015°12.345'). Výstup je kódován v ANSI. Pozor na význam Ansi!
function zCompress(const Value: string): string;
  • Zkomprimovat předaná data pomocí knihovny zlib. Vhodné pro přímé zasahování do databáze GeoGetu (pro sloupce, které jsou tímto způsobem komprimovány). 2.2.1
function zDecompress(const Value: string): string;
  • Dekomprimovat data pomocí knihovny zlib. Vhodné pro přímé čtení dat z databáze GeoGetu. 2.2.1
function ExpandEnvir(Value: string): string;
  • Ve stringu Value nahrazuje sekvence %nazev_promenne% jejich hodnotami. 2.5.7
function GetEnvir(Name: string): string;
  • Dostává jen jméno proměnné a vrací její hodnotu. 2.5.7
procedure ConsoleInfo(Value: string);
  • Slouží na psaní do chybové konzole. 2.3.7
procedure ConsoleError(Value: string);
  • Slouží na psaní do chybové konzole. 2.3.7
function PostMessage(hWnd: integer; Msg: integer; wParam: integer; lParam: integer): longbool;
  • Obsluha systémových zpráv Windows. Funkce umožní skriptu obsluhovat libovolnou systémovou zprávu. :!: Použití této funkce vyžaduje znalosti na úrovni programování Windows API. 2.2.6
function SendMessage(hWnd: integer; Msg: integer; wParam: integer; lParam: integer): integer;
  • Odeslání zprávy do fronty systémových zpráv k obsluze systémem Windows. To umožňuje např. manipulaci s okny aplikací, nastavování vlastností ovládacím prvkům tam, kde k tomu není k dispozici odpovídající funkce v GeoGetím API. :!: Použití této funkce vyžaduje znalosti na úrovni programování Windows API. 2.2.6
procedure GeoSetFilteredSearch(value: integer);
  • Ovládání filtrovaného hledání (hodnota 1 jej zapíná, 0 jej vypíná). S tím souvisí proměnná Geoget_FilteredSearch.2.9.1
GetListing(const value: TStrings; prefix: string);
  • Metoda TGeo vygeneruje HTML listing a ještě u obrázků přepíše prefix.
SQLiteRegisterUDF(const value: TSQLiteDatabase);
  • funkce pro SQL příkazy nad zadanou databází registruje funkce, které nejsou standardně použitelné, ale Geoget je používá
  • pro databázi otvíranou přímo Geogetem není volání potřeba, jen pro použití databáze jen v pluginu, pokud jsou takové funkce potřeba
  • jedná se např. o funkce:
    • komprese, dekomprese (zlib)
    • REGEXP v SQL

Funkce GC.Live

Od verze 2.10 již GeoGet funkce GC.Live nepodporuje, proto některé byly převedeny a vnitřně používají GC.API a některé byly zrušeny. Převedené funkce mohou mít funkčnost mírně pozměněnou v závislosti na možnostech GC.API.

function GcLiveGetLogs(const ID: string; Numlogs: integer; StopOnFound, Refine: boolean): integer;
  • Stažení logů k bodu s ID.2.6.2
procedure GcLiveUpdateStatus(const IDs: string)
  • Aktualizovat stav. ID je jeden GC kód, IDs může být více kódů najednou, oddělené odřádkováním.2.6.2
procedure GcLiveUpdateListing(const IDs: string; Lite: boolean)
  • Aktualizovat listing. ID je jeden GC kód, IDs může být více kódů najednou, oddělené odřádkováním.2.6.2
procedure GcLiveUpdateListing2(const IDs: string; mode:integer)
  • Aktualizovat listing. ID je jeden GC kód, IDs může být více kódů najednou, oddělené odřádkováním.2.9.4
  • mode definuje režim získámí dat (0=FULL, 1=LITE, 2=SUMMARY)
procedure GCLiveGetListing(par: TGCLSearch)
  TGCLSearch = record
    cx: double;            //souřadnice středu kruhu (Latitude), v kterém budou keše vyhledávány
    cy: double;            //(Lognitude)
    cr: double;            //poloměr kruhu v km, hledani podle souradnic se vypne cr=0.
    islite: boolean;       //plný (false) nebo lite (true) listing !! od verze 2.9.2 nahrazeno položkou mode
    cachetypes: string;    //seznam typů keší (plné stringy používané na GC, oddělovač ''CRLF'')
    cachesizes: string;    //seznam požadovaných velikostí (plné stringy používané na GC, oddělovač ''CRLF'')
    available: integer;    //0=jen neaktivní, 1=jen aktivní, 2=aktivní i neaktivní
    archived: integer;     //0=jen nearchivované, 1=jen archivované, 2=archivované i nearchivované
    pmo: integer;          //0=jen nePMO, 1=jen PMO, 2=PMO i nePMO
    ignorelist: boolean;   //true=aplikovat nastavený ignorelist
    notfoundby: string;    //seznam nicků, které keš nesmějí mít nalezenou (oddělovačem je ''CRLF'')
    hiddenby: string;      //seznam nicků ownerů keší (oddělovačem je ''CRLF'')
    nothiddenby: string;   //seznam nicků, kteří nesmějí být ownery keší (oddělovačem je ''CRLF'')
    //od verze 2.9.2+:
    mode: integer;         //0=full, 1=lite, 2=summary
    country: string;       //seznam jmen států (oddělovačem je ''CRLF'')
    state: string;         //seznam jmen krajů (oddělovačem je ''CRLF'') 
  end;
  • Stáhne listingy keší, které odpovídají obsahu vstupní struktury. Nové keše (ty, které ještě nejsou v databázi) jsou do databáze doplněny, ostatní aktulizovány.2.6.4 - 2.9
function GCLiveGetUserLogs(const value: string): integer
  • Stáhne všechny logy zadaného uživatele. Jméno uživatele musí být v UTF-8. 2.6.4
function GCLiveUpdateUserLogs(const value: string): integer
  • Aktualizuje logy zadaného uživatele. Pokud je zadaný uživatel shodný s uživatelem přihlášeným ke GC.Live, funkce akutalizuje jeho logy. To znamená, že stáhne logy, které jsou na serveru z doby pozdější než kdy byly naposledy načteny nebo aktualizovány. Pokud je zadaný uživatel jiný, je funkce shodná s GCLiveGetUserLogs. Jméno uživatele musí být v UTF-8. 2.7.9
function GCLiveSelectBookmark: string
  • Vyvolá dialog na výběr bookmarku a pokud bude nějaký vybrán, je vrácen jeho GUID.2.7.2
function GCLiveAddToBookmark(const ids: string; guid: string)
  • Přidá seznam GC kódů (oddělené odřádkováním) do bookmarku.2.7.2
procedure GCLiveLoadBookmark(guid: string)
  • Zobrazí keše bookmarku do seznamu zobrazených keší. Keše musí být v databázi.2.7.2
procedure GCLiveImportBookmark(guid: string)
  • Importuje keše z bookmarku do databáze. Keše, které již v databázi jsou, nejsou znovu importovány.2.7.2
function GCLiveGetBookmark(guid: string): string
  • Vrací GC kódy obsažené v bookmarku, jednotlivé GC kódy jsou oddělené pomocí CRLF.2.7.3

:?: Zobrazit nepodporované funkce GC.Live

Skrýt nepodporované funkce GC.Live

function GCliveCall(DataFormat: integer; ApiFunction, ApiUrlParam, ApiData: string; var ApiResponse: string): integer
  • Při volání se nikde neuvádí AccessToken! Ani v URL parametrech, ani v ApiData! Ten si GeoGet doplní sám. Pokud Token není, GeoGet sám vyvolá přihlášení. Při chybě sám ukáže chybový dialog, pro vybrané chybové kódy sám nabízí opakování operace, atd. prostě tak, jak to znáte z funkcí GeoGetu.
    • DataFormat: 0-XML, 1-JSON
    • ApiFunction: název APi funkce. Třeba GetAPILimits
    • ApiUrlParam: URL parametry pro volání (pro GET požadavky)
    • ApiData: Odesílaný dokument. (pro POST) Musí být kódovaný dle DataFormat!
    • ApiResponse: odpověď serveru, bude opět kódovaná v DataFormat.
    • Result: z odpovědi vytáhnutý stavový kód odpovědi. 0=OK.
  • Priklad:
    var
      r: string;
      x: integer;
    begin
      x := GCliveCall(0, 'GetAPILimits', '', '', r);
      showmessage(inttostr(x));  
      stringtofile(r, 'gclive.txt');
    end;
procedure GCLiveDoSearch(const value: string; mode: integer);
  • vyhledání keší pomocí GC.Live a jejich import do Geogetu ID.2.9.7 - 2.9
  • value je JSON string s API dotazem pro SearchForGeocaches() (funkce GC.LIve API) vcetne IsLite parametru (i kdyz je to jeste v parametru mode!). Geoget před voláním doplní do stringu token
  • mode je 0=full, 1=lite, 2=summary
  • funkce sama načítá všechny stránky s kešemi voláním GetMoreGeocaches() (funkce GC.LIve API) a keše importuje do databáze

<html></html>

Funkce API GC

Pro volání jsou třeba parametry:

  • ApiMethod - HTTP metoda volání. Používá se GET, PUT, POST, DELETE.
  • ApiUri - část URL se specifikací volané funkce. Z bezpečnostních důvodů si Geoget sám doplňuje adresu serveru a první lomítko. tedy například “v1/users”.
  • ApiData - Odesílaná data mimo URL.
  • ApiDataMime - označení druhu odesílaných dat podle standardu MIME.
  • Apiresponse - odpověď serveru
function GCliveRest(ApiMethod, ApiUri, ApiData, ApiDataMime: string; var ApiResponse: string): integer;
  • vyvolání funkce API, vrací odpověď a hodnotu chybového stavu2.10
function GCliveRestPaged(ApiMethod, ApiUri, ApiData, ApiDataMime: string; PageSize: integer; var ApiResponse: string): integer;
  • vyvolání funkce API, vrací odpověď a hodnotu chybového stavu2.10
  • automaticky stránkuje, všechny odpovědi vrací najednou
function GCLImportCachePaged(const value: string): integer;
  • vyhledávání keší podle vlastních kritérií2.10
  • Volá funkci “v1/geocaches/search”, vstupní hodnota jsou vyhledávací parametry, které se přidají na konec URL. (Nepoužívat parametry take a skip!)
  • importuje postupně každou vrácenou stránku s vyhledanými kešemi samostatně (ne najednou všechny stránky)

Parsování JSON odpovědi z API GC

S API se komunikuje výhradně ve formátu JSON. Pro zpracování odpovědí existuje v GeoGetu parser, po jeho vložení

uses simplejson;

je k dispozici objekt:

type
  TSimpleJSon = class(TObject)
  public
    constructor create;
    procedure Free;
    function ParseString(value: AnsiString): Boolean;
    function AsString(path: string): String;
    function AsInteger(path: string): int64;
    function AsDouble(path: string): double;
    function AsArraySize(path: string): integer;
  end;
 

Funkce asBoolean neexistuje, lze ji nahradit konstrukcí:

  b:boolean;
  json:TSimpleJSON;
  ...
  b:=(json.AsInteger(path)=1);

K jednotlivým prvkům v objektu je pak přístup přes path, např.:

foo      // objekt
foo.list // vlastnost objektu
foo[123] // prvek pole objektu. Indexováno od nuly, počet prvků pole by mělo vrátit volání metody AsArraySize.

Pro jednodužší zpracování vrácených polí je rozumné vrácenému poli předřadit fiktivní jméno prvku a na něj se pak odkazovat.

uses simplejson;
...
var rJson:TSimpleJSon;
...
if(GcLiveRest('GET',sRequest,'','',sJson)=200) then begin
  //predpokladejme, ze je vraceno pole '[{..},{..},...]', udelame z nej pole prvku 'root'
  sJson:='{root:'+sJson+'}';
  rJson:=TSimpleJson.Create();
  try
    if(rJson.ParseString(sJson)) then begin
      nLogs:=rJSon.AsArraySize('root');
      for i:=0 to nLogs-1 do begin //zpracujeme vsechny logy
        //odkazujeme se na prislusne pole prvku 'root[i]' a jeho vnorenou hodnotu 'geocacheCode'
        sGcId:=rJson.asString('root['+IntToStr(i)+'].geocacheCode');
        ...
      end;  
    end;
  finally
    rJson.Free();
  end;
end;

Převody data a času

function UTCtoLocal(Value: TDateTime): TDateTime;
  • Konverze času z UTC do lokálního časového pásma počítače. Výpočet bere ohled na letní čas v aktuálním nastavení počítače.
function LocalToUTC(Value: TDateTime): TDateTime;
  • Konverze času z lokálního časového pásma počítače do UTC. Výpočet bere ohled na letní čas v aktuálním nastavení počítače.
function UTCtoTimezone(Value: TDateTime; Timezone: string): TDateTime;
  • Konverze času z UTC do časové zóny. Výpočet bere ohled na letní čas v zadané hodnotě Value. 2.7.4
function TimezoneToUTC(Value: TDateTime; Timezone: string): TDateTime;
  • Konverze časové zóny do UTC. Výpočet bere ohled na letní čas v zadané hodnotě Value. 2.7.4
function GetTimeZoneByCoord(x, y: extended): string;
  • Volá službu od Googlu (limit 2500 dotazů za den), která vrátí časovou zónu podle předaných souřadnic 2.7.4

Práce s řetězci

Převody kódování

String

  • Od verze 2.8 je proměnná string kodovaná v UNICODE (UTF-16) a pro převod z/do kódování UTF-8 se používá funkce AnsiToUtf() nebo UtfToAnsi(). Ansi je ve jménech funkcí zachováno pro zpětnou kompatibilitu s předchozími verzemi GeoGetu.
  • Ansi ve jméně funkcí tedy znamená spíš string v nativním Geogetím kódování (UNICODE) než string v nativním Windows kódování.
  • Utf ve jméně funkcí tedy znamená UTF-8 a ne UNICODE nebo UTF-16
function UtfToAscii(Value: string): string;
  • Provede odstranění diakritiky.
function UtfToGps(Value: string): string;
  • Odstraní diakritiku, převede řetězec na velká písmena a propustí jen vybranou množinu speciálních symbolů tak, aby výsledný řetězec byl kompatibilní s nejúspornějším šestibitovým kódováním u GPS Garmin.
function UtfToAnsi(Value: string): string;
function AnsiToOem(const Value: string): string;
function UtfToCharset(const Value, Charset: string): string;
  • Převod z UTF-8 kódování do libovolného jiného.
function CharsetToUtf(const Value, Charset: string): string;
  • Převod z libovolného kódování do UTF-8. 2.2.2
function UnicodeBOM(const Charset: string): string;
  • Vrací Byte Order Mark pro zvolené kódování. Pokud zvolené kódování nepoužívá BOM, je vrácen prázdný string.
function AnsiToUtf(const Value: string): string;
function IsUtf(const Value: AnsiString): boolean
  • Testuje, zda je vstupní string kódován v UTF-8 kódování. 2.7.7

Práce s texty

function IsValidID(Value: string): boolean;
  • Testuje, jestli řetězec může být kód kešky/waypointu.
function IsValidGC(Value: string): boolean;
  • Testuje, jestli řetězec může být kód kešky (GCxxxx).
function IsValidWM(Value: string): boolean;
  • Testuje, jestli řetězec může být kód waymarku (WMxxxx).
function IsGuid(Value: string): boolean;
  • Testuje, jestli řetězec je GUID.
function ReplaceString(Value, Search, Replace: string): string;
  • Nahradí v řetězci všechny výskyty jednoto řetězce za druhý.
function Fetch(var Value: string; const Delimiter: string): string;
  • Ukousne ze začátku Value kus řetězce až po nejbližší Delimiter. Po ukousnutí je zbytek Value ještě zbaven koncových a počátečních bílých znaků (Trim).
function FetchBin(var Value: string; const Delimiter: string): string;
  • Ukousne ze začátku Value kus řetězce až po nejbližší Delimiter. Zbytek Value není zbaven počátečních a koncových bílých znaků (Trim). Vhodné pro zpracování binárních dat.
function SeparateLeft(const Value, Delimiter: string): string;
  • Vrací část řetězce Value vlevo od zadaného separátoru (Delimiter).
function SeparateRight(const Value, Delimiter: string): string;
  • Vrací část řetězce Value vpravo od zadaného separátoru (Delimiter).
function Rot13(Value: string): string;
  • Provede ROT13 kódování.
function Reverse(Value: string): string;
  • Obrátí obsah Value pozpátku.
function CData(Value: string): string;
  • Používá se na zakódování dat pro XML element.
function QuoteStr(const Value: string; Quote: char): string;
  • Zabalí řetězec do udaného znaku, a pokud se uvnitř ten znak vyskytuje, zdvojí jej.
function DecodeBase64(const Value: string): string;
  • Dekóduje data v kódování BASE64.
function EncodeBase64(const Value: string): string;
  • Zakóduje data do kódování BASE64.
function HtmlImg2Link(const Value: string): string;
  • Nahradí všechny vložené HTML obrázky na odkazy.
function Html2Text(const Value: string): string;
  • Převede HTML na prostý text.
function EncodeUrlElement(const Value: string): string;
  • Zakóduje hodnotu tak, aby byla použitelná jako hodnota parametru v URL.
function CompareVer(ValueAsk, ValueCur: string): boolean;
  • Metoda pro porovnávání verzí. Jako verze je předáván řetězec čísel oddělených tečkou, např. “2.1.4.1124”. Metoda vrací True, pokud je ValueAsk > ValueCur.

Převody entit

function HtmlEntityDecode(const Value: string): string;
  • Dekóduje HTML entity na nativní znaky.
function HtmlEntityEncode(const Value: string): string;
  • Zakóduje ne-ASCII znaky do HTML entit.
function HtmlEntityEncodeAll(const Value: string): string;
  • Zakóduje ne-ASCII znaky a kritické znaky do HTML entit.
function XMLEntityDecode(const Value: string): string;
  • Dekóduje XML entity na nativní znaky.
function XMLEntityEncode(const Value: string): string;
  • Zakóduje kritické XML znaky na entity.
function MDtoHTML(value: string): string;
  • Převede text zakódovaný v Markdown na HTML.2.9.5
function JSEntityDecode(const value: ansistring): ansistring;
  • Dekóduje text zakódovaný do entit ve formátu \xxxx (unicode, css/javascript).2.9.9
function JSEntityEncode(const value: ansistring): ansistring;
  • Zakóduje text do entit do formátu \xxxx (unicode, css/javascript).2.9.9

Práce s regulárním výrazy

Regulární výrazy používají syntaxi podobnou Perlu.

function RegexFind(const ARegExpr, AInputStr: string): boolean;
  • Zjišťuje, jestli zadaný string odpovídá předané ARegExpr masce.
function RegexExtract(const ARegExpr, AInputStr: string): string;
  • Vrátí části řetězce, které odpovídají předané ARegExpr masce. 2.2.4
function RegexReplace(const ARegExpr, AInputStr, AReplaceStr: string; AUseSubstitution: boolean): string;
  • Vše co odpovídá RegExpr bude nahrazeno ReplaceStr. Pokud je zapnuta substituce, pak ReplaceStr obsahuje masku pro nahrazení.
function RegexQuote(const AStr: string): string;
  • Zakóduje speciální znaky v řetězci tak, aby nemohly kolidovat s regulárními výrazy.
function RegExSubstitute(const Expr, Value, Template: string): string;
  • Funkce na získání konkrétního subexpression. 2.4.2
  • Příklad:
    s:=RegexSubstitute('(?i)<a\s*href="(.*?)">(.*?)</a>','Text pred tagem<a href="url_adresa">jmeno odkazu</a> text za tagem','$2');

    vrátí “jmeno odkazu”.

function RegExSplit(const Expr, Value: string): string;
  • Rozřádkuje Value podle regulárního výrazu. 2.4.2

Práce se soubory

function RenameFile(const OldName, NewName: string): boolean;
  • Přejmenuje soubor.
function CopyFile(const OldName, NewName: string): boolean;
  • Zkopíruje soubor.
procedure shCopyFile(FromDir, ToDir: string);
  • Zkopíruje soubory pomocí příkazu shellu. Kopírování by tedy mělo být úspěšné i na zařízení, která se nechovají úplně jako disky (např. připojený HTC telefon a Android 4.1+) 2.7.7
procedure CopyTree(FromDir, ToDir: string);
  • Zkopíruje složku včetně všech podsložek. 2.5.0
function DeleteFile(const FileName: string): boolean;
  • Vymaže soubor.
procedure DeleteFiles(Value: string);
  • Vymaže soubory podle předané masky.
function FileExists(const FileName: string): boolean;
  • Testuje zda soubor existuje.
function DirectoryExists(const Directory: string): boolean;
  • Testuje zda adresář existuje.
function ForceDirectories(Dir: string): boolean;
  • Vytvoří adresář.
function DelTree(const Path: string): boolean;
  • Smaže všechny podsložky a soubory v daném adresáři. 2.3.4
procedure StringToFile(Value, FileName: string);
  • Uloží obsah řetězce do souboru.
function FileToString(filename: string): string;
  • Načte obsah souboru do řetězce.
procedure FileList(Dir: string; const Value: TStrings);
  • Naplní StringList seznamem souborů v adresáři. Jména podadresářů končí zpětným lomítkem.
function GetFileSize(Value: string): integer;
  • Vrátí velikost souboru.
function GetFileTime(Value: string): TDateTime;
  • Vrátí čas poslední modifikace souboru.
function FtpGetFile(const IP, Port, FileName, LocalFile, User, Pass: string): boolean;
  • Stažení souboru z FTP (v pasivním režimu). 2.5.0
function FtpPutFile(const IP, Port, FileName, LocalFile, User, Pass: string): boolean;
  • Nahrání souboru na FTP (v pasivním režimu). 2.5.0

Práce s disky

function DiskInDrive(Drive: char): boolean;
  • Testuje zda je v jednotce Drive momentálně přítomen disk? Vhodné např. pro čtečky SD karet a podobně. 2.3.4
function GetDriveTypeStr(const Drive: char): string;
  • Vrátí typ dané jednotky. Možné hodnoty jsou: “Unknown drive type”, “Removable Drive”, “Hard Disk”, “Remote Drive”, “CD-ROM”, “RAM-Disk”. 2.3.4
DiskName(Drive: Char): string;
  • Vrátí jméno svazku (jméno partition)

Práce s databázemi

procedure GeoDBNames(const Value: TStrings);
  • Naplní StringList seznamem všech databází (včetně záložních). 2.2.5
procedure GeoDBSelect(Value: string);
  • Zavře aktuální databázi a otevře databázi s udaným jménem. Pokud databáze neexistuje, vyrobí se nová. Stávající databáze ale nesmí mít spuštěnu transakci, jinak bude vyvolána výjimka a běh skriptu se zastaví! 2.2.5
  • dojde k vymazání obsahu Busy dialogu

Práce s atributy

function AttributeToIcon(Value: string): string;
  • Převede popisný text atributu (z PQ, z webu) na jméno ikony. thorns!thorn-yes. 2.2.3
function AttributeIDToIcon(Value: string): string;
  • Převede ID atributu (z PQ) na jméno ikony. 41stroller-yes. 2.2.3
function IconToAttributePQ(Value: string): string;
  • Převede jméno ikony do jména atributu v PQ. Pokud je atribut “neobsažen”, výsledek začíná znakem “-”. stroller-no-stroller accessible. 2.2.3
function IconToAttributeWEB(Value: string): string;
  • Převede jméno ikony do jména atributu na webu. stroller-nonot stroller accessible. 2.2.3
function IconToAttributeID(Value: string): string;
  • Převede jméno ikony do ID v PQ. Pokud je atribut “neobsažen”, výsledek začíná znakem “-”. stroller-no-41. 2.2.3

Práce s instalačními balíčky

function GeoInstallScriptFile(const FileName: string): string;
  • Nainstalovat skript z předaného *.gip balíčku. 2.5.0
function GeoInstallScriptURL(const Url: string): string;
  • Nainstalovat skript z dané URL. Soubor *.gip bude nejprve stažen a poté nainstalován. 2.5.0
  • Není třeba dělat ručně v instalačním skriptu pro případné závislé skripty. GeoGet se o doinstalování závislostí postará sám (pokud je odkaz ke stažení v patřičném meta souboru definován).
function GeoGetPackages: string;
  • Vrací pomocí CRLF oddělený seznam nainstalovaných balíčků (plné cesty k meta souborům). 2.5.0
function GeoGetPackageVersion(PackageMeta: string): string;
  • Vrací verzi nainstalovaného balíčku. Parametr PackageMeta je plná cesta k meta souboru. 2.5.0
function GeoGetPackagePreviousVersion(PackageMeta: string): string;
  • Vrací předchozí nainstalovanou verzi balíčku. 2.5.0
  • :!: Tato funkce pracuje správně pouze v případě, že je spouštěna z těla metody InstallWork instalačního skriptu. V opačném případě vrací verzi aktuálně nainstalovanou.
  • Historie verzí balíčků je uchovávána v souboru plver.txt v datovém adresáři GeoGetu.
  • Parametrem PackageMeta může být plná cesta k meta souboru, ale i jen jeho název či název balíčku.
function GeoGetPackageUpdateVersion(PackageMeta: string): string;
  • Vrací aktuální (nejvyšší) dostupnou verzi balíčku. Parametr PackageMeta je plná cesta k meta souboru. 2.5.0
function GeoUpdatePackage(PackageMeta: string): string;
  • Stáhnout a nainstalovat aktuální dostupnou verzi balíčku. Parametr PackageMeta je plná cesta k meta souboru. 2.5.0
function GeoUninstallPackage(PackageMeta: string): boolean;
  • Odinstalovat balíček. Parametr PackageMeta je plná cesta k meta souboru. 2.5.0
procedure GeoReloadPlugins;
  • Znovu načíst nainstalované pluginy (tedy prohledat adresář skript, znovu vykreslit menu a nástrojovou lištu s pluginy). 2.5.0
  • Akce není provedena ihned, ale až po ukončení skriptu a návratu do prostředí GeoGetu.
procedure GeoRefreshHeaders;
  • Znovu načte a uloží aktuální nastavení sloupců. 2.5.12

Práce s menu pluginy a toolbarem plugin

  • Funkce umožňují ze skriptů konfigurovat zařazení pluginů do skupin a na toolbar.
  • Parametr plugin je vždy plná cesta k GGP pluginu.
  • Po použití metod je vhodné vyvolat ještě refresh toolbaru i menu pomocí procedury GeoReloadPlugins.
function GeoGetToolbar(Plugin: string): boolean;
  • Vrací True, pokud je Plugin zařazen na toolbar.
procedure GeoSetToolbar(Plugin: string; Value: boolean);
  • Zařadí či odstraní Plugin z toolbaru.
function GeoGetPluginGroup(Plugin: string): string;
  • Vrátí skupinu menu, do které je Plugin zařazen.
function GeoGetDefaultGroup: string;
  • Vrátí jméno výchozí skupiny, do které jsou automaticky zařazovány nově nainstalované pluginy.
procedure GeoSetPluginGroup(Plugin, Value: string);
  • Zařadí Plugin do skupiny Value.
function GeoListPluginGroups: string;
  • Vrací pomocí CRLF oddělený seznam existujících skupin pluginů.
function GeoGetPopupMenu(plugin: string): boolean;
  • Vrací True, pokud je Plugin zařazen do popup menu. 2.8.8
procedure GeoSetPopupMenu(plugin: string; value: boolean;
  • Zařadí Plugin do položky Value popup menu. 2.8.8

Práce s tagy

procedure GeoTagDelCategory(Value: string);
  • Odstraní z databáze celou kategorii tagů.

TagCategories, TagHaveCategory, TagValues, TagAdd, TagReplace, TagReplaceList, TagDel, TagClear metody třídy TGeo.

Práce s body

Všechny funkce této skupiny počítají hodnoty na elipsoidu WGS84.

procedure PointProject(const Px, Py, Angle, Distance: extended; out Nx, Ny: extended);
  • Projektovat bod Nx, Ny, který je od zadaného výchozího bodu Px, Py vzdálen Distance (v kilometrech) v azimutu Angle (ve stupních). 2.2.3
function PointDistanceEx(X1, Y1, X2, Y2: extended; var Azimut: extended): extended;
  • Vrátí vzdálenost (v kilometrech) mezi dvěma body. V proměnné Azimut bude uložen azimut dvou bodů (ve stupních). 2.2.3
function PointDistance(X1, Y1, X2, Y2: extended): extended;
  • Vrátí vzdálenost dvou bodů v kilometrech.
function PointAzimuth(X1, Y1, X2, Y2: extended): extended;
  • Vrátí azimut dvou bodů ve stupních.

Práce s registry

Možnost použití tříd TRegistry, TRegIniFile a TRegistryIniFile. Pro třídu RootKey se používají tyto hodnoty: (např. reg.RootKey := $80000001;) 2.4.3

HKEY_CLASSES_ROOT     = $80000000;
HKEY_CURRENT_USER     = $80000001;
HKEY_LOCAL_MACHINE    = $80000002;
HKEY_USERS            = $80000003;
HKEY_PERFORMANCE_DATA = $80000004;
HKEY_CURRENT_CONFIG   = $80000005;
HKEY_DYN_DATA         = $80000006;
 
KEY_READ              = 131097;
  • RootKey klíčů v registru. 2.5.0

Pro zápis do HKEY_LOCAL_MACHINE jsou běžně potřeba administrátorská práva. Pokud potřebujete z HKLM pouze číst, pak stačí objektu třídy TRegistry nastavit property Access na KEY_READ. V opačném případě nelze z HKLM jako běžný uživatel ani číst.

Práce s obrázky

:!: Všechny následující funkce pro manipulaci s obrázky pracují s jejich textovou interpretací (string) na místo objektů třídy TImage nebo TBitmap. Automaticky je rozpoznáno a podporováno mnoho grafických bitmapových formátů.

function ImageResize(const Value: string; Width, Height: integer; FixAspect, HiQuality: boolean): string;
  • Změní velikost obrázku. Width a Height nové rozměry. Parametry FixAspect a HiQuality určují, zda má být při změně velikosti zachován poměr stran a zda má být použito kvalitnějšího (a pomalejšího a časově náročnějšího) módu konverze. Návratová hodnota je stringová reprezentace upraveného obrázku. 2.4.0
function ImageRotate(const Value: string; Angle: double): string;
  • Otočí obrázek o daný úhel. 2.4.0
function ImageConvert(const Value: string; FileName: string): string;
  • Převede obrázek do jiného formátu. Formát je zvolen automaticky dle předané přípony. 2.4.0
procedure ImageInfo(const Value: string; out ImageType: string; out Width, Height, BPP: integer);
  • ImageType vrací název druhu obrázku třeba JPEG. Width a Height je snad jasné. BPP je BitsPerPixel. 2.5.6
procedure ImageGPSRead(const Value: string; out X, Y: extended);
  • Do proměnných X a Y načte GPS souřadnice z EXIF v obrázku. (X - Lat, Y - Lon). 2.5.6
function ImageGPSWrite(const Value: string; X, Y: extended): string;
  • Z proměnných X a Y zapíše GPS souřadnice do EXIF v obrázku. (X - Lat, Y - Lon). 2.5.6
function ImageMerge(const background, foreground: string; x, y: integer): string;
  • Funkce spojí dva obrázky do jednoho. Do obrázku background (libovolného podporovaného typu) je na pozici [x,y] přenesen obrázek foregroung. Výsledný obrázek je ve stejném formátu jako background. Funkce má následující podmínky:
    • background nesmí mít nastavenou průhlednost v alfakanálu (PNG) ani v paletě (GIF)
    • background musí mít minimálně stejnou barevnou hloubku jako foreground
    • foreground je není možné použít BMP truecolor (24bit). Je třeba použít formát s paletou (BMP 8bit, GIF, …)nebo s alfakanálem (PNG, …)
    • foregroung může mít průhlednost definovanou v alfakanálu (PNG), v paletě (GIF) nebo pokud není průhlednost definovaná a je použita paleta (BMP), pak se za průhlednou považuje barva FF00FF, kterou interpretují GPS Garmin jako průhlednou.
  • 2.7.3

Práce se schránkou

function ClipboardReadText: string;
  • Vrací obsah schránky. (Pracuje s nativními unicode stringy. Pro převod načteného textu do UTF-8 je nutno použít UtfToAnsi(). Pozor na význam Ansi! 2.8.3
procedure ClipboardWriteText(value: string);
  • Vloží obsah value do schránky. Pracuje s nativními unicode stringy. Pokud je třeba do schránky zkopírovat UTF-8 string, musí se string napřed převést na na “falešný ansistring” funkcí UtfToAnsi() (viz význam Ansi!) 2.8.3
function ClipboardHasText: boolean;
  • Vrací true pokud schránka obsahuje text. 2.8.3

Ovládání referenčního bodu

procedure RefPointNames(const Value: TStrings);
  • Naplní StringList seznamem uložených referenčních bodů.
function RefPointSet(Value: string; X, Y: extended): boolean;
  • Uloží nový (nebo přepíše existující) referenční bod. Pokud funkce vrátí True, pak bod již existoval a byl přepsán.
function RefPointGet(Value: string; var X, Y: extended): boolean;
  • Načte souřadnice referenčního bodu.
function RefPointDel(Value: string): boolean;
  • Smaže uložený referenční bod.
function RefPointSelect(Value: string): boolean;
  • Vybere uložený referenční bod.
function RefPointSelectTemp(Value: string; X, Y: extended): boolean;
  • Vybere jako referenční bod požadované souřadnice a název, aniž by bylo nutné bod ukládat.
function ReferencePointCoord(Name: string, var: X, Y: extended): boolean;
  • Do proměnných X' a Y' dosadí souřadnice referenčního bodu se jménem Name. Pokud se dosazení povede, vrátí true. 2.2.1
function AddReferencePoint(Name: string; X, Y: extended): boolean;
  • Přidá do seznamu referenčních bodů nový bod se jménem Name a souřadnicemi X' a Y. Pokud se přidání povede, vrátí true. 2.2.1
function LoadReferencePoint(Name: string): boolean;
  • Nastaví jako aktuální referenční bod v GeoGetu právě tento. Pokud se nastavení povede, vrátí true. 2.2.1
function EditReferencePoint(Name: string; NewX, NewY: extended): boolean;
  • Upraví referenčnímu bodu s předaným jménem souřadnice na newX a newY. Pokud se to povede, vrátí true. 2.2.1
function RemoveReferencePoint(Name: string): boolean;
  • Odebere referenční bod. Pokud se to povede, vrátí true. 2.2.1

Dialogy

procedure ShowMessage(const Msg: string);
  • Zobrazí uživateli zprávu.
procedure ShowLongMessage(const Caption: string; const Msg: string);
  • Zobrazí uživateli dlouhou zprávu s posuvníkem. 2.5.0
procedure ShowHTMLMessage(const Caption: string; const Msg: string);
  • Zobrazí uživateli dlouhou zprávu s posuvníkem ale narozdíl od ShowLongMessage obsahuje jednoduchý HTML renderer, stejný, v jakém se zobrazují listingy. Takže řetězec může obsahovat HTML tagy.
procedure ShowHTMLMessageSize(const title, value: string; width, height: integer);
  • Zobrazí uživateli dlouhou zprávu s posuvníkem ale narozdíl od ShowLongMessage obsahuje jednoduchý HTML renderer, stejný, v jakém se zobrazují listingy. Takže řetězec může obsahovat HTML tagy. width a height definuje velikost okna se zobrazenou zprávou. 2.9.4
function InputBox(const ACaption, APrompt, ADefault: string): string;
  • Zobrazí uživateli zprávu a vyzve uživatele k zadání řetězce. Pokud uživatel dialog stornuje, vrátí se ADefault.
function SaveDlg(Title, InitialDir, Options, Filter: string; var FileName: string):boolean;
  • Vyvolá standardní SaveDialog.
function OpenDlg(Title, InitialDir, Options, Filter: string; var FileName: string):boolean;
  • Vyvolá standardní OpenDialog.
function SelectDir(InitialDir, Caption: string): string;
  • Vyvolá standardní dialog na výběr složky. Pokud nebude složka vybrána, je vrácen prázdný řetězec.
function MessBox(Text, Caption: string; Flags: integer): integer;
  • Vyvolá MessageBox. Konstantou ve Flags se určuje, jaká tlačítka budou použita: 0 = OK, 1 = OK+Cancel, 2 = Abort+Retry+Ignore, 3 = Yes+No+Cancel, 4 = Yes+No, 5 = Retry+Cancel. Návratová hodnota určuje, jaké tlačítko bylo zmáčknuto: 1 = OK, 2 = Cancel, 3 = Abort, 4 = Retry, 5 = Ignore, 6 = Yes, 7 = No.
function CoordEdit(const Title, Caption: string; var X, Y: extended): boolean;
  • Vyvolá dialog na editaci souřadnic.

Obsluha "busy" dialogu

procedure GeoBusyStart;
  • Zobrazí “busy” dialog. Po skončení skriptu bude automaticky schován.
procedure GeoBusyCaption(Value: string);
  • Nastaví nadpis “busy” dialogu.
procedure GeoBusyKind(Value: string);
  • Nastaví účel “busy” dialogu.
procedure GeoBusyValue(Value: string);
  • Nastaví hodnotu “busy” dialogu místo progressbaru.
procedure GeoBusyProgress(Value, Max: integer);
  • Nastaví místo hodnoty progressbar.
function GeoBusyTest: boolean;
  • Testuje, jestli uživatel stiskl tlačítko Cancel.
  • pokud je plugin realizován modálním formulářem, je tlačítko v Busy dialogu neaktivní (i když se tak netváří) a ani skrytí formuláře jej nezaktivuje. Kliknutí na něj jen vyvolá chybové pípnutí, ale právě probíhající činnost pluginu nijak neovlivní
  • pokud je plugin realizován modálním formulářem a obsahuje funkci, která by měla být přerušitelná, je třeba
    • zacyklit zobrazení formuláře funkcí ShowModal()
    • formulářový prvek, kterým aktivujete přerušitelnou funkci, musí mít nastavenou nenulovou hodnotu ModalResult, tím dojde po volbě funkce k ukončení formuláře
    • návratovou hodnotu z funkce ShowModal() obsloužit spuštěním příslušné funkce a v ní testovat GeoBusyTest()
    • (návratová hodnota 2 znamená uzavření formuláře uživatelem kliknutím na křížek v titulkovém pruhu formuláře)
    • znovu funkcí ShowModal() zobrazit formulář

Lokalizace

function _(const SzMsgId: string): string;
  • Přeloží předaný string do právě používaného jazyka. Pomocí této funkce je třeba obalit jakýkoliv text v kódu makra, který chcete překládat.
procedure TextDomain(const SzDomain: string);
  • Nastavit jinou doménu (výchozí je pojmenována default, jde v podstatě o jméno *.mo souboru s překladem).
function GetCurrentTextDomain: string;
  • Vrátí právě používanou doménu (jméno *.mo souboru s překladem).
procedure BindTextDomain(const SzDomain: string; const SzDirectory: string);
  • Přidat další možnou textovou doménu a určit složku (obvykle Locale), ve které se mají hledat další složky (CS, … - podle jazyka) se soubory překladu *.mo.
procedure UseLanguage(LanguageCode: string);
  • Změnit používaný jazyk na jiný. Jazykové kódy jsou například cs nebo en.
function GetCurrentLanguage: string;
  • Zjistit právě používaný jazyk. Výsledkem je jazykový kód, například cs, en, nebo cs_CZ.
  • :!: protože vrácená hodnota se může na různých systémech trochu lišit, je vhodné použít jen první 2 znaky
procedure RetranslateComponent(AnObject: TComponent; const TextDomain:string);
  • Opětovně přeložit komponentu formuláře. Lze předat i celý formulář.
function GetTranslatorNameAndEmail: widestring;
  • Vrátí informace o překladateli - jméno a email.

Ovládání činností

procedure GeoStopWork;
  • Nasimuluje stisk klávesy Cancel, tedy PluginWork již nebude voláno. 2.2.1
procedure GeoAbort;
  • Ukončí běh skriptu. 2.2.1
procedure GeoImportFile(Value: string);
  • Importuje data ze souboru do databáze. Umí importovat i archivy (ZIP, 7Z, ARJ, RAR). Funguje tak, že když narazí na archiv, tak si vygeneruje svůj podadresář v adresáři temp, kam archiv rozbalí. Mělo by to pracovat i s archivy v archivech.
procedure GeoImportDir(Value: string);
  • Importuje soubory ze složky do databáze. Jméno složky musí končit znakem “\”! Jde soubor po souboru a na každý volá ImportFile. Pokud je soubor archiv, tak viz. výše, rozbalí se do temp a obsah se naimportuje.
procedure GeoImportBegin;
  • FIXME vynuluje statistiky o importu.
procedure GeoImportEnd;
  • FIXME zobrazí okno s výsledkem importu. Pokud se funkce nepoužije, okno se nezobrazí.
procedure GeoImportPQ;
  • Importuje GPX PQ v podadresari PQ.
procedure GeoDownImportPQ;
  • Stáhne z e-mailu a posléze importuje GPX PQ.
procedure GeoExport(Exporter, FileName: string);
  • Exportuje výpis za pomoci exportního skriptu Exporter do souboru FileName.
procedure GeoListUpdateID(value: string);
  • Aktualizace řádku v načteném seznamu. 2.5.8
procedure GeoListUpdateAll;
  • Refresh celého seznamu. 2.5.8
procedure GeoListClear;
  • Vymaže celý výpis.
procedure GeoListLoad;
  • Naplní výpis podle právě platného filtru.
procedure GeoListLoadAdd;
  • Přidá do výpisu záznamy podle právě platného filtru.
procedure GeoListLoadSub;
  • Odebere z výpisu záznamy podle právě platného filtru.
procedure GeoFilterLoadFile(Value: string);
  • Nahraje sadu filtrů ze souboru.
procedure GeoListFileAdd(Value: string);
  • Přidá do výpisu záznamy podle uložené sady.
procedure GeoListFileSub(Value: string);
  • Odebere z výpisu záznamy podle uložené sady.
procedure GeoListSave(Value: string);
  • Uloží aktuální výpis jako sadu do souboru.
procedure GeoListByFileAdd(Value: string);
  • Přidá do výpisu záznamy podle obsahu GPX nebo LOC souboru.
procedure GeoListByFileSub(Value: string);
  • Odebere z výpisu záznamy podle obsahu GPX nebo LOC souboru.

Volání skriptu ze skriptu

procedure GeoCallGGP(FileName: string);
  • Zavolá jiné makro typu GGP.
procedure GeoCallGGC(FileName: string; const Geo: TGeo);
  • Zavolá GGC makro pro předanou geocache.
procedure GeoExport(Exporter, FileName: string);
  • Exportuje výpis za pomoci exportního skriptu Exporter (GGE) do souboru FileName.

Databáze států

function GetCountryID(Value: string): integer;
  • Přeloží název státu na CountryID číslo. 2.2.1
function GetCountryName(Value: string): string;
  • Převede zkratku na název státu. 2.2.3
function GetCountryAbbr(Value: string): string;
  • Převede název státu na zkratku. 2.2.3
function GetStateID(Value: string): integer;
  • Přeloží název území StateID číslo. 2.2.1
procedure GetCountryList(const List: TStrings);
  • Naplní StringList seznamem známých států.
procedure GetStateList(Value: string; const List: TStrings);
  • Naplní StringList seznamem známých území pro požadovaný stát.
procedure GetDBCountryList(const List: TStrings);
  • Naplní StringList seznamem států vyskytujících se v databázi kešek.
procedure GetDBStateList(Value: string; const List: TStrings);
  • Naplní StringList seznamem známých území pro požadovaný stát, podle výskytu v databázi kešek.

Řízení výjimek

Druhy výjimek jsou definovány následujícím výčtovým typem:

TIFException = (ErNoError, ErCannotImport, ErInvalidType, ErInternalError,
  ErInvalidHeader, ErInvalidOpcode, ErInvalidOpcodeParameter, ErNoMainProc,
  ErOutOfGlobalVarsRange, ErOutOfProcRange, ErOutOfRange, ErOutOfStackRange,
  ErTypeMismatch, ErUnexpectedEof, ErVersionError, ErDivideByZero, ErMathError,
  ErCouldNotCallProc, ErOutofRecordRange, ErOutOfMemory, ErException,
  ErNullPointerException, ErNullVariantError, ErInterfaceNotSupported, ErCustomError);

Výjimky lze v kódu skriptu odchytit pomocí konstrukce:

try
  //kód, který chceme chránit
except
  //zde budeme jen když nastala výjimka
end;

Vyvolávání výjimek

procedure RaiseLastException;
  • Znovu vyvolá poslední výjimku. Například když jsme ji odchytili a usoudili jsme, ze výjimku chceme skutečně vyvolat.
procedure RaiseException(Ex: TIFException; Param: string);
  • Uměle vyvolá požadovanou výjimku.

Informace o výjimce

function ExceptionType: TIFException;
  • Vrací druh výjimky.
function ExceptionParam: string;
  • Vrací parametry výjimky.
function ExceptionToString(er: TIFException; Param: string): string;
  • Vygeneruje textovou chybovou hlášku z informací o výjimce.

Hashovací funkce

function Crc32(const Value: AnsiString): integer;
  • Vrátí CRC32 součet předané hodnoty. 2.5.6
function MD5(const Value: AnsiString): AnsiString;
  • Vrátí MD5 předané hodnoty. 2.5.6
function SHA1(const Value: AnsiString): AnsiString;
  • Vrátí SHA1 předané hodnoty. 2.5.6
function MurmurHash(const Value: string): cardinal;
  • Vrátí MurmurHash předané hodnoty. 2.5.6
function StrToHex(const Value: Ansistring): string;
  • Převádí binární string lezoucí z MD5 nebo SHA1 do hexadecimální podoby. 2.5.6

Matematické funkce

function ArcTan2(const Y, X: extended): extended;
  • Calculates the arctangent angle and quadrant of a given number.
  • ArcTan2 calculates ArcTan(Y/X), and returns an angle in the correct quadrant. The values of X and Y must be between –2^64 and 2^64. In addition, the value of X can’t be 0. The return value will fall in the range from -Pi to Pi radians.
function Tan(const X: extended): extended;
  • Returns the tangent of X.
  • Tan returns the tangent of X. Tan(X) = Sin(X) / Cos(X).
function Cotan(const X: extended): extended;
  • Call Cotan to obtain the cotangent of X. The cotangent is calculated using the formula 1 / Tan(X).
  • Do not call Cotan with X = 0.
function Cot(const X: extended): extended;
  • Calculates the cotangent of an angle.
  • Call Cot to obtain the cotangent of X. The cotangent is calculated using the formula 1 / Tan(X).
function TanH(const X: extended): extended;
  • Returns the hyperbolic tangent of X.
  • TanH calculates the hyperbolic tangent of X.
function CotH(const X: extended): extended;
  • Calculates the hyperbolic cotangent of an angle.
  • Call CotH to obtain the hyperbolic cotangent of X, where X is an angle in Radians.

Standardní funkce

function IntToStr(I: longint): string;
function StrToInt(S: string): longint;
function StrToIntDef(S: string; Def: longint): longint;
function copy(S: string; IFrom, ICount: longint): string;
function pos(SubStr, S: string): longint;
procedure delete(var S: string; IFrom, ICount: longint);
procedure insert(S: string; var S2: string; IPos: longint);
function StrGet(var S: string; I: integer): char;
function StrGet2(S: string; I: integer): char;
procedure StrSet(C: char; I: integer; var S: string);
function AnsiUppercase(S: string): string;
function AnsiLowercase(S: string): string;
function Uppercase(S: string): string;
function Lowercase(S: string): string;
function Trim(S: string): string;
function Length(S: string): longint;
procedure SetLength(var S: string; L: longint);
function Sin(E: extended): extended;
function Cos(E: extended): extended;
function Tan(E: extended): extended;
function Cot(E: extended): extended;
function Sinh(E: extended): extended;
function Cosh(E: extended): extended;
function Tanh(E: extended): extended;
function Coth(E: extended): extended;
function ArcSin(E: extended): extended;
function ArcCos(E: extended): extended;
function ArcTan2(x, y: extended): extended;  //ArcTan2 calculates ArcTan(Y/X)
function ArcCot(E: extended): extended;
function ArcSinh(E: extended): extended;
function ArcCosh(E: extended): extended;
function ArcTanh(E: extended): extended;
function ArcCoth(E: extended): extended;
function Power(x, y: extended): extended;  //mocnina x^y
function Sqrt(E: extended): extended;
function Round(E: extended): longint;
function Trunc(E: extended): longint;
function Int(E: extended): extended;
function Frac(const X: extended): extended;
function Pi: extended;
function Abs(E: extended): extended;
function StrToFloat(S: string): extended;
function FloatToStr(E: extended): string;
function Padl(S: string; I: longInt): string;
function Padr(S: string; I: longInt): string;
function Padz(S: string; I: longInt): string;
function Replicate(C: char; I: longInt): string;
function StringOfChar(C: char; I: longInt): string;
function StrToInt64(S: string): int64;
function Int64ToStr(I: int64): string;
function EncodeDate(Year, Month, Day: word): TDateTime; //pro převod String -> Word je možno použít funkci ''StrToInt''
function EncodeTime(Hour, Min, Sec, MSec: word): TDateTime; //pro převod String -> Word je možno použít funkci ''StrToInt''
function TryEncodeDate(Year, Month, Day: word; var Date: TDateTime): boolean; //pro převod String -> Word je možno použít funkci ''StrToInt''
function TryEncodeTime(Hour, Min, Sec, MSec: word; var Time: TDateTime): boolean; //pro převod String -> Word je možno použít funkci ''StrToInt''
procedure DecodeDate(const DateTime: TDateTime; var Year, Month, Day: word); //pro převod String -> Word je možno použít funkci ''StrToInt''
procedure DecodeTime(const DateTime: TDateTime; var Hour, Min, Sec, MSec: word); //pro převod String -> Word je možno použít funkci ''StrToInt''
function DayOfWeek(const DateTime: TDateTime): word;
function Date: TDateTime;
function Time: TDateTime;
function Now: TDateTime;
function DateTimeToUnix(D: TDateTime): int64;
function UnixToDateTime(U: int64): TDateTime;
function DateToStr(D: TDateTime): string;
function StrToDate(const S: string): TDateTime;
function FormatDateTime(const FMT: string; D: TDateTime): string;
user/skripty/functions.txt · Last modified: 2022/06/02 12:43 by geby