• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Änderung im Dateiformat

greiol

Geoguru
wenn ich mir die beträge der letzen tage so anschaue, sieht es für mich so aus, als seinen gc.com gpx import, gc.com spider und oc import wieder im lot. manuell im programm angelegte wegpunkte sollten auch keine anzeigefehler mehr verursachen (auch wenn die eine oder andere implementierung im detail noch optimierungspotential bietet :D )

falls niemand sonst seltsame phänomene beim einlesen beobachtet, könnten wir das tatsächlich wieder rund haben. das wäre ausgesprochen erfreulich.

die diversen exporter sind dann die nächste baustelle ;)
 

biraconda

Geocacher
Engywuck schrieb:
Für die Freaks, die mit eigenen Programmen die CacheWolf-Daten lesen: Hier sind dann Anpassungsarbeiten notwendig....
Huzzel schrieb:
Bekenne mich als so ein Freak :mumie3: :D .

Um mir das umstricken zu erleichtern, fände ich es super, wenn Du mal eine Beispieldatei hier als code einstellen könntest, damit man sehen kann, wie man umstricken muss.
greiol schrieb:
parallel empfehle ich das studium des sourcecodes, denn was die einzelnen felder der neuen version bedeuten und wie sie aufgebaut sind, erschliesst sich mit dem code fast besser als mit einem prosatext.

Ich hab mir heute mal das neue Datenformat angesehen und gebe hier die für "Freaks" wichtigen Änderungen als "Prosatext" wieder:

Sowohl in der index.xml, als auch in den cache.xml-Dateien findet man anstelle der Variablen type="2" dif="1.5" terrain="1" archived="false" has_bug="false" usw. zwei neue Werte:
boolFields="" und
byteFields=""

In boolFields steht eine 14-Bit-Zahl (als Dezimalzahl), bei der die Bits folgende Bedeutung haben:
Code:
                   bool2BitMask(!this.isVisible(), 1)      
		             bool2BitMask(this.is_available(), 2)   
		             bool2BitMask(this.is_archived(), 3)    
		             bool2BitMask(this.has_bugs(), 4)
       
		             bool2BitMask(this.is_black(), 5)       
		             bool2BitMask(this.is_owned(), 6)       
		             bool2BitMask(this.is_found(), 7)       
		             bool2BitMask(this.is_new(), 8)
         
		             bool2BitMask(this.is_log_updated(), 9) 
		             bool2BitMask(this.is_updated(), 10)    
		             bool2BitMask(this.is_HTML(), 11)       
		             bool2BitMask(this.is_incomplete(), 12)
 
		             bool2BitMask(this.hasNote(), 13)       
		             bool2BitMask(this.hasSolver(), 14);

In byteFields steht eine (max.) 34-Bit-Zahl (als Dezimalzahl), bei der die Bytes folgende Bedeutung haben:
Beispiel: Tradi, Mikro, D1,0/T1,5 + 1DNF (byteFields="4328656650")

Code:
  DNF   Size     Type     Terr     Diff
	01 00000010 00000010 00001111 00001010

Die Bedeutung der Bytes im Einzelnen:
Diff: 00001010...00110010 (10...50)
Terr: 00001010...00110010 (10...50)

Type:
/** custom waypoint */ = 0;
/** traditional cache (GC,OC) */ = 2;
/** multi cache (GC,OC) */ = 3;
/** virtual cache (GC) */ = 4;
/** letterbox cache (GC) */ = 5;
/** event cache (OC,GC) */ = 6;
/** quiz cache (OC) */ = 7;
/** unknown cache (mystery) (GC) */ = 8;
/** math cache (OC) */ = 108;
/** moving cache (OC) */ = 9;
/** drive in cache (OC) */ = 10;
/** webcam cache (GC,OC) */ = 11;
/** locationless cache (GC) */ = 12;
/** CITO cache (GC,OC)*/ = 13;
/** Additional Waypoint Parking (GC) */ = 50;
/** Additional Waypoint Stage of a Multi (GC) */ = 51;
/** Additional Waypoint Question to answer (GC) */ = 52;
/** Additional Waypoint Final (GC) */ = 53;
/** Additional Waypoint Trailhead (GC) */ = 54;
/** Additional Waypoint Reference (GC) */ = 55;
/** Mega Event Cache (GC) */ = 100;
/** WhereIGo Cache (GC) */ = 101;
/** Project Ape cache (GC)*/ = 102;
/** Adenture Maze Exhibit (GC)*/ = 103;
/** Earth Cache (GC) */ = 104;
/** unrecognized cache type or missing information, should throw IllegalArgumentExceptions when found */ = -1;


Size:
/** container size not chosen */ = 0;
/** container size other */ = 1;
/** container size micro */ = 2;
/* container size small */ = 3;
/** container size regular */ = 4;
/** container size large */ = 5;
/** container size very large */ = 6;
/** container size none */ = 7;
/** container size virtual */ = 8;
/** unparsable size or missing size information should throw IllegalArgumentExceptions when found */ -1;


DNF: Anzahl der letzten DNF

Hab ich noch was vergessen ?
 

huzzel

Geowizard
biraconda schrieb:
Size: 00 - None (Webcam, Virtual)
10 - u
11 - s
100 - R
101 - L
Hat sich da noch mal was geändert?
Ich habe folgendes:
Code:
if (Bytes[3]==0) {memcpy(Ausgabe[8], "Not Chosen\0",11);}		//size
				else if (Bytes[3]==1) {memcpy(Ausgabe[8], "Other\0",6);}
				else if (Bytes[3]==2) {memcpy(Ausgabe[8], "Micro\0",6);}
				else if (Bytes[3]==3) {memcpy(Ausgabe[8], "Small\0",6);}
				else if (Bytes[3]==4) {memcpy(Ausgabe[8], "Regular\0",8);}
				else if (Bytes[3]==5) {memcpy(Ausgabe[8], "Large\0",6);}
				else if (Bytes[3]==6) {memcpy(Ausgabe[8], "Very Large\0",11);}
				else if (Bytes[3]==7) {memcpy(Ausgabe[8], "None\0",5);}
				else if (Bytes[3]==8) {memcpy(Ausgabe[8], "VIRTUAL\0",8);}
War jetzt zu faul die Daten aus dem C-Code rauszuschreiben :D
 

huzzel

Geowizard
bzw direkt aus dem Cachewolfcode
Code:
/** container size not chosen */
	public static final byte CW_SIZE_NOTCHOSEN = 0;
	/** container size other */
	public static final byte CW_SIZE_OTHER = 1;
	/** container size micro */
	public static final byte CW_SIZE_MICRO = 2;
	/* container size small */
	public static final byte CW_SIZE_SMALL = 3;
	/** container size regular */
	public static final byte CW_SIZE_REGULAR = 4;
	/** container size large */
	public static final byte CW_SIZE_LARGE = 5;
	/** container size very large */
	public static final byte CW_SIZE_VERYLARGE = 6;
	/** container size none */
	public static final byte CW_SIZE_NONE = 7;
	/** container size virtual */
	public static final byte CW_SIZE_VIRTUAL = 8;
	/** unparsable size or missing size information should throw IllegalArgumentExceptions when found */
	public static final byte CW_SIZE_ERROR = -1;
 
Oben