Hi We use Metakit to store miscellaneous information for our programe. It works on windows, macosx and linux. It happens that when the database is created on the windows network, we have some problem with the windows application (we use metakit-2.4.9.6).
Below you will find a program that creates a file, adds rows, and retrieves information. The Find function doesn't return anything and a manuel search also gives no result. In our main program, the Find() function remains in an infinite loop. It works fine with other plateform combinations : from windows client to simple windows sharing, from macosx client to windows file server and from macosx client to macosx apple share file server. Thanks for any suggestion about this. PS: our windows file server is a macosx with Samba. we compile with visual studio 2005 #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <string.h> #include <mk4.h> void main(int argc, char **argv) { char dbpath[100]=""; printf("Choose a db destination :\n\n"); printf("1 - Local\n"); printf("2 - Network : Windows file server\n"); printf("3 - Network : Windows sharing\n\n"); switch (getche()) { case '1': strcpy(dbpath,"c:\\zdrop\\metakit_tutorial.db"); break; case '2': strcpy(dbpath,"\\\\Noe\\Developpement\\metakit_tutorial.db"); break; case '3': strcpy(dbpath,"\\\\Ordiludovic\\partageArticque\\metakit_tutorial.db"); break; default: break; } printf("\n"); if (strlen(dbpath)>0) { fflush(stdin); FILE *fp=NULL; // remove if present if ((fp=fopen(dbpath,"r"))!=NULL) { fclose(fp); unlink(dbpath); } // create db c4_Storage database(dbpath, true); // add datas c4_View maps=database.GetAs("maps[mid:S,mwidth:I,mheight:I,mpath:S]"); c4_StringProp mid("mid"),mpath("mpath"); c4_IntProp mwidth("mwidth"),mheight("mheight"); c4_Row maprow; mid(maprow)="A"; mwidth(maprow)=10; mheight(maprow)=10; mpath(maprow)="/home/MapA.vxf"; maps.Add(maprow); mid(maprow)="B"; mwidth(maprow)=20; mheight(maprow)=20; mpath(maprow)="/home/MapB.vxf"; maps.Add(maprow); mid(maprow)="C"; mwidth(maprow)=30; mheight(maprow)=30; mpath(maprow)="/home/MapC.vxf"; maps.Add(maprow); // save database.Commit(); // add more datas c4_View datas=database.GetAs("datas[did:S,dmapid:S,dpath:S]"); // add data c4_StringProp did("did"),dmapid("dmapid"),dpath("dpath"); c4_Row datarow; did(datarow)="1"; dmapid(datarow)="A"; dpath(datarow)="/home/A1.txt"; datas.Add(datarow); did(datarow)="2"; dmapid(datarow)="A"; dpath(datarow)="/home/A2.txt"; datas.Add(datarow); did(datarow)="3"; dmapid(datarow)="B"; dpath(datarow)="/home/B1.txt"; datas.Add(datarow); did(datarow)="4"; dmapid(datarow)="B"; dpath(datarow)="/home/B2.txt"; datas.Add(datarow); did(datarow)="5"; dmapid(datarow)="C"; dpath(datarow)="/home/C1.txt"; datas.Add(datarow); // save database.Commit(); // Find data long idxsearch=-1; c4_Row findrow; dmapid(findrow)="B"; while(1) { idxsearch=datas.Find(findrow,idxsearch+1); if (idxsearch>=0) printf("DATA %s has dmapid=%s\n", (const char*)dpath(datas[idxsearch]), (const char*)dmapid(datas[idxsearch])); else break; } // manuel search c4_Row strrow; const char*strdata; const char*expr="ome/B"; for (int idx=0;idx<datas.GetSize();idx++) { strdata=(const char*)dpath(datas[idx]); if (strstr(strdata,expr)!=NULL) printf("map %s has the string '%s' in the path\n",strdata,expr); } } printf("Test over\n"); getch(); } -- Florent Lejeune Développeur Articque Moulin des Roches 37230 Fondettes France web = http://www.articque.com tel: +33 02 47 49 90 49 fax: +33 02 47 49 91 49 _____________________________________________ Metakit mailing list - Metakit@equi4.com http://www.equi4.com/mailman/listinfo/metakit