Diky, uz jsem vyzkousel navratove hodnoty z GC.API, zatim jsem si problemu nevsiml. Vsimas si, jak jsem to pekne zaobalil? ;) Vsak oni nas s nimi urcite nekde prekvapi.
Díky moc za ten nový instalátor. Možnost instalovat GG jako uživatel je přesně to, co jsem potřeboval, jen jsem se to neopovážil navrhnout. Kopírovat při každé aktualizaci program do notebooku z jiného stroje byla dost otrava. :-) Díky.
Díky moc za ten nový instalátor. Možnost instalovat GG jako uživatel je přesně to, co jsem potřeboval, jen jsem se to neopovážil navrhnout.
Nevím, čeho ses bál? Nic horšího, než že tě pošlu do háje, se ti přece nemohlo stát!
Ale vážně, ta nová verze instalátoru je novinka loňského roku, chtělo to trochu času na dětské nemoci. A taky je to o zahození podpory pro starší Windows. Zkrátka, uzrál čas.
Něco se v nové verzi pokazilo. Mám plugin, který načte nejstarších 16100 kešek a poté je zaktualizuje.
aList:=TStringList.Create();
Geoget_DB.GetTableStrings('SELECT geocache.id FROM geocache INNER JOIN geolist ON geocache.id = geolist.id LEFT JOIN retract ON geocache.id = retract.id WHERE retract.id IS NULL ORDER BY geocache.dtupdate2 LIMIT 16100', aList);
for i:=0 to aList.Count-1 do
s:=s+aList[i]+CRLF;
GcLiveUpdateListing2(s, 0); // 0...FULL
aList.Free;
Hmm, tak problém je asi v tom, že pro mě z neznámého důvodu mi z limitu zbývá jen 31 kešek a to GeoGet neumí stáhnout jen těch zbývajících 31 kešek, on se pokusí stáhnout 50 kešek a to dostane chybovou hlášku, že to nejde, že je překročený limit. A proč nemám plný limit 16000 kešek je pro mě v tuto chvíli záhadou.
Nova verze GG ma trochu prepracovanou obsluhu chybovych kodu. Radu kodu ted vraci volajicimu pluginu a ten by si to mel osetrit sam. Je to proto, ze rada navratovych kodu ma (nelogicky) nekolik rozdilnych vyznamu a ne vzdy musi nutne jit o chybu. Napr. navratova hodnota 403 muze byt:
- prekroceny limit stahovani kesi
dozadujes se informace, ktere uzivatel nechce sdilet
na kesi neni overovatko
Zdaleka to neni vzdy jednoznacne. Proto to ted Haluma udella tak, ze obsluhuje (asi) jen zakladni chyby a zbytek nechava na pluginu. A to je treba si nejak vyzkouset a korektne obslouzit.
Hmm, tak problém je asi v tom, že pro mě z neznámého důvodu mi z limitu zbývá jen 31 kešek a to GeoGet neumí stáhnout jen těch zbývajících 31 kešek, on se pokusí stáhnout 50 kešek a to dostane chybovou hlášku, že to nejde, že je překročený limit. A proč nemám plný limit 16000 kešek je pro mě v tuto chvíli záhadou.
Geoget sam asi nemuze pri kazdem pozadavku hlidat prekroceni limitu. To by znamenalo dvojnasobnou komunikaci.
Je veci, jak s tim pozadavkem zachazi GS. Zjevne, kdyz pocet pozadavku v poslane zadosti prekracuje limit, povazuje celou zadost za limit prekracujici. Nepripada mi to uplne spatne. Umim si predsatvit, ze testuji odpoved na pocet vracenych kesi, a pokud jich bude mene nez je pozadovano, budu si myslet, ze uz jsem obdrzel vsechny kese, ktere se zadosti tykaly. V tom pripade by takova kontrola davala spatne vysledky - vycerpani limitu by se chovalo jako spravne a ukoncene zpracovani.
Tam je problem v tom, ze pro skripty je ta GcLiveUpdateListing2 deklarovana jako procedura, takze nema navratovou hodnotu, kterou by se signalizoval uspech/neuspech. Budu to muset predelat na funkce.
Ja odpovidal trochu obecneji (aniz bych na to upozornil, moje chyba), nemel jsem na mysli konkretne tuto funkci - tu jsem snad jeste nikdy nepouzil, aktualizace listingu nechavam na GG - ale spis obecne volani GcLiveRest/GcLiveRestPaged.
Ano, obecne volani chybovy kod vrati vzdycky, lhostejno jestli byla nebo nebyla uzivateli zobrazena chybova hlaska. Volajici program si musi vzdycky hlidat, jestli funkce vrati ocekavanou navratovou hodnotu.
Tak, to hlidaji i ty nadstavbove funkce, pri problemu prerusi svoji cinnost. Jen to ted jaksi neumi sdelit volajicimu programu.
Teď jsem si všimnul další problematické "nefunkčnosti". Mám v listu označený seznam 30 keší a dám si pravým tlačítkem "Aktualizovat kešky" a vyberu "Plný listing" a potvrdím "OK" a ono to nic neudělá a vrátí to prázdný výsledek plný nul místo toho, aby to nahlásilo chybu překročený limit a nabídlo to nabídku s tlačítkem "Znovu".
A podle ceho ma poznat, ze ti limit nabehne za par vterin a ne par hodin?
Nicmene asi by bylo rozumne, kdyby zrovna tuto chybu nejak oznail. Ale ja se k tomu limitu nikdy nedostal, takze to chovani neznam a nemohu ho ani potvrdit ani vyvratit a nevim, jak se to chovalo se starsi verzi GG.
do minulé verze se to chovalo tak, že když byl vyčerpaný limit,, tak se objevilo okno, kde bylo tlačítko znovu a storno a tak člověk buď tlačítkem storno celou akci zrušil, nebo tlačítkem znovu mohl zkusit, jestli už naběhl nový limit a začalo se normálně stahovat. No a já mám poznamenané časy, kdy mi limit začíná a tak v danou dobu pustím stahování, ale ono se to každý den o pár vteřin posune, takže jsem tlačítko znovu mačkal několikrát za sebou, až se začalo stahovat a zase jsem si poznamenal ten posunutý čas, abych ho věděl na další den.