Ještě bych chtěl poprosit o radu, jak přidat final waypoint ke kešce

Koukám do popisu class u kešy a waypointu a nějak z toho nejsem moudrý, jak přidat final waypoint. Může mě někdo nasměrovat, jakou metodou se waypoint přidává?

Jsi v sekci Geoget. Tak ti jde o přidání Final waypointu k tebou založené keši na webu, nebo o přidání vypočteného Final waypointu do tvé lokální databáze v Geogetu?

Myslíš něco takového:

procedure CreateWpt(ZCACHECODE,
                    ZCOORDLAT, 
                    ZCOORDLON, 
                    ZNAME,
                    ZCOMMENT,
                    ZDATECREATED,
                    PrefixID,
                    ZTYPElong,
                    ZDESC: string
                   );
var
    wpt: TWpt;
begin
    wpt := TWpt.Create();
    wpt.ParentID :=  ZCACHECODE;
    wpt.LatNum := StrToFl(ZCOORDLAT);
    wpt.LonNum := StrToFl(ZCOORDLON);
    wpt.Name := ZNAME;
    wpt.Updated := StrToDate(ZDATECREATED);
    wpt.PrefixID := PrefixID;
    wpt.WptType := ZTYPElong;
    wpt.Description := ZDESC;
    wpt.Flags := 0;
    wpt.Save();
    
    TestGeoGetDbVersion();
    GEOGET_DB.ParamsClear();
    GEOGET_DB.AddParamInt(':key', wpt.Key);
    GEOGET_DB.AddParamText(':text', ZCOMMENT);
    GEOGET_DB.ExecSQL('UPDATE waypoint SET comment=:text WHERE key=:key');
end;

Souřadnice se musí zadávat přes LatNum. Použiješ-li textovou variantu, tak si naběhneš jako já kdysi. Posledních 5 řádků je jen kvůli zapsání komentáře.

Těch posledních pět řádků může3 vesele nahradit voláním:

wpt.updatecomment(ZCOMMENT);

Mockrát děkuji za vzorový příklad, se já chci odvolávat na class ze seznamu GC, tak to se mi snad podaří modifikovat.

Ale ještě bych potřeboval další radu, našel jsem funkci FormatCoordNum ale já bych potřeboval funkci k ní inverzní - tedy z lidského tvaru na lat a lon, které se do waypointu zapisuje a v seznamu funkcí jsem nic vhodného nenašel.

ParseWgsStr

Děkuji, to jsem nějak přehlédnul

Mockrát děkuji všem za rady, už mi to funguje, jen nevím, jestli mám skript zveřejnit - vypočítá GPS souřadnice reverzního wheriga a buď najde ty tři šestimístné kódy v listingu, nebo když je nenajde tam, tak se koukne do poznámky kešky, jestli tam nejsou náhodou spočítané, když je to složitější wherigo, kde ty šestimístné kódy nejsou přímo v listingu ale nějak se počítají

Asi bych to nezveřejňoval. Jeden takový je zveřejněný už hodně dlouho

A ještě bych chtěl poprosit o radu s regulárním výrazem.

U kešky https://www.geocaching.com/geocache/GC62AVW_reverse-cache-budapest-edition mi to vrátí seznam viz přiložený obrázek a není mi jasné, kde k těm dalším šestimístným číslům přišel.

Mám tam tento kód:

       begin
         Kod:=RegexExtract('\d{6}.*\s*.*\d{6}.*\s*.*\d{6}', GC.LongDescription);
         if Kod > '' then
             begin
               Kod1:=RegExSubstitute('(\d{6}).*\s*.*\d{6}.*\s*.*\d{6}', Kod, '$1');
               Kod2:=RegExSubstitute('\d{6}.*\s*.*(\d{6}).*\s*.*\d{6}', Kod, '$1');
               Kod3:=RegExSubstitute('\d{6}.*\s*.*\d{6}.*\s*.*(\d{6})', Kod, '$1');
               Kod:=Kod1+CRLF+Kod2+CRLF+Kod3;
               MessBox(Kod, 'Nalezeno', 0);
               vyresit(Kod);
             end
           else
             MessBox('Nenalezeno', 'ERR', 0);
       end      
 

Tak přišel k nim v listingu... Dělá to přesně to, co sis napsal. Šestimístné číslo přeci nemusí být jen kód, ale třeba i (část) odkaz(u). A to je přesně tenhle případ.

To že v listingu jsou i jiná šestimístná čísla vím, ale nějak mi nesedí to jejich pořadí a navíc ten regulární výraz by měl ukázat jen první tři, tak proč jich je tam šest nebo třeba i devět, to mi na ton nějak nesedí.

regularni prikazy muzes testovat treba na https://regex101.com/ nebo https://regexr.com/ (podobnych stranek najdes urcite vic).

Tam uvidis, co presne je v tom textu vybrane a proc. A muzes ten regularni vyraz uypravovat a hned koukat, co se zmenilo ve vysledku.

no mě tu chybí (nebo nevím jak použít) toto https://www.php.net/manual/en/reference.pcre.pattern.modifiers.php je tam U které způsobí, že regulární výraz vyhodnotí ty nejblizší hodnoty, které mu vyhovují, standardně vyhledává ten největší rozsah, který mu vyhovuje

jinak odkazované stránky na testování regulárních výrazů mě neuspokojili - ta první, když jsem do ní zadal listing a můj regulární výraz, tak mi oznámila toto: Catastrophic backtracking has been detected and the execution of your expression has been halted. To find out more and what this is, please read the following article: Runaway Regular Expressions a ta druhá mi jako \d{6} vybrala toto:

005197</strong></p>
<p><strong>415505</strong></p>
<p><strong>020351
čemuž vůbec nerozumím, když by to mělo být jen šest číslic a nic jiného

Pouzij trochu upraveny regularni vyraz (do prvniho odkazu, co jsem psal vyse):

\s*(\d{6})\s*.*?(\d{6})\s*.*?(\d{6})\s*.*?

a uvidis, co ti to dava. Ja myslim, ze takto jednoduse ta cisla neziskas. Invence autoru, jak je napsat, je bezbreha. Nemas sanci to takto snadno postihnout.

EDIT: Jo a mimochodem, tohle:

Kod1:=RegExSubstitute('(\d{6}).*\s*.*\d{6}.*\s*.*\d{6}', Kod, '$1');
Kod2:=RegExSubstitute('\d{6}.*\s*.*(\d{6}).*\s*.*\d{6}', Kod, '$1');
Kod3:=RegExSubstitute('\d{6}.*\s*.*\d{6}.*\s*.*(\d{6})', Kod, '$1');
Kod:=Kod1+CRLF+Kod2+CRLF+Kod3;

lze napsat i rozumneji:

Kod:=RegExSubstitute('(\d{6}).*\s*.*(\d{6}).*\s*.*(\d{6})', Kod, '$1'+CRLF+'$2'+CRLF+'$3');