hi claudius,
>Du hast noch zu wenige Informationen gegeben... hmm, wenn du meinst ;) >Was willst Du eigentlich zum Schluss haben? Alle Positionen aller >gemeinsamen String oder Anzahl und L�ngen derselben oder die Anzahl der >Zeichen, die die gleichen Bl�cke ausmachen oder was? was ich zum schlu� haben will.. nunja, wo fang ich an. eigentlich ist es etwas, was es schon lange und in vielen formen gibt. eine art patch-programm, welches (beliebige) dateien vergleicht und daraus eine neue datei erstellt, die dann runtergeladen werden kann und mittels einem weiteren programm die neue datei generiert. die anwendungsm�glichkeiten sind sehr umfangfreich(zb update f�r irgendwelche programme). sowas gibts nat. zuhauf. ich wei� dass, und viele andere wohl auch. selbst von ms gibts ein kl. tool, welches patch-dateien erstellt und mittels windows-installer die entsprechenden dateien dann auch patcht. mein prim�res anwendungsgebiet liegt aber in einem (�hnlich gelagerten) anderem punkt. ich will, dass sich verschiedene fachh�ndler bilder downloaden k�nnen. diese bilder sind zum gr��ten teil recht gro� geworden(cmyk, 300dpi, plakatgr��e), so dass die entweder tage brauchen bis die dateien letztendlich da sind, oder jahre, weil die telekom noch kein dsl bereitgestellt hat(von den kosten der gruppe f�r den server mal ganz abgesehen). nun hab ich mir gedacht, dass man eine "alte" datei zum download freigibt, die recht gro�e aber/und immer wiederkehrende bl�cke aus den anderen dateien beinh�llt. selbst wenn die dateien sehr gro� wird, hat der verband gemeint dass sie gerne, wenns denn sein muss, jedem eine cd schicken.. hauptsache sie m�ssen nicht w�chentlich so eine aktion starten. aus diesem grund kann ich auch diff (und auch das tool von ms) nicht wirklich verwenden. sp�testens bei der untersuchung aus mehreren dateien und das feststellen der gr��ten und der am "�ftesten" auftretenden gemeinsamen bl�cke wird damit unm�glich. ganz abgesehen von weiteren optimierungsm�glichkeiten, die mir da so einfallen. naja. damit hab ich mal vorgestellt, was ich �berhaupt will. in meiner jetztigen testphase bin ich erst noch bei textdateien.. das ganze umzustellen auf bin�rdaten sollte kein problem darstellen. >Suchst Du nur 10er-Bl�cke oder sollten die Bl�cke m�glichst maximale L�nge haben? die 10 war nur ein beispiel. es sollten m�glichst lange bl�cke gefunden werden. die mindestblockgr��e wird als option einstellbar sein(von 10 bis 1000 oder so, je nachdem, was sinnvoll erscheint) oder, wenns wirklich schnell wird, je nach datei automatisch selbst gesetzt. aber das "finden" gleicher bl�cke ist leider gar kein problem. dies funktioniert und ist sogar schnell (und da wei� ich sogar, wie ichs noch mehr optimieren kann*g*) mein problem ist das finden der unterschiede, die mein user sp�ter downloaden muss(nicht die offsets der alten datei). die routine, die ich hier gepostet hab springt an, sobald ich einen gr��tm�glichen block habe, und ein unterschied aufgetreten ist. es sucht mir das n�chste auftreten eines blockes, der mindestens der mindestblockgr��e(10) entspricht. alles was davor(!) kam muss als�"klartext" (bzw. bin�rdaten) sp�ter mitgegeben werden. bsp.: text1 = "Hallo Welt, das ist ein langer Text" text2 = "Hallo Welt, das war ein langer Text" ergebnis w�re bei diesem beispiel: 0-16,war,19-16 im klartext: offset 0, l�nge 16 aus bestehender datei, "war" einf�gen, offset 10, l�nge 16 aus alter datei. (hab jetzt nicht genau nachgez�hlt, sollte aber stimmen) hier w�re es das finden des offsets 19. ich muss ab "w" byte f�r byte (hier sinds nur 3) durchgehen, bis ich wieder etwas finde. und dieser vorgang ist mir zu langsam. nat�rlich sieht das dateiformat letztendlich etwas anders aus ;). auch hier fallen mir etliche gr�nde ein, um diff nicht zu verwenden. ich will nicht nur die unterschiede, sondern sp�ter auch immer wiederkehrende bl�cke als zahl/offset mitgeben. das kann diff nicht(und wollte es auch nie k�nnen, ist ja was "ganz" anderes *g*) >Gibt es irgendwelche Bedingungen, die man ausnutzen kann? Ist es z.B. >so, dass gleiche Teile immer in der gleichen Reihenfolge vorkommen, das >w�rde z.B. heisen, dass man z.B. wenn man in beiden Texten ungef�hr in >der Mitte eine gleiche Textpassage hat und man sucht jetzt weiter, dann >kann man den ersten Teil der beiden Texte ignorieren.. nein. leider nicht. geh mal davon aus, dass du als "alte" datei beispielsweise die "shell32.dll" vor dir hast, und deine neue datei ein bild von dir ist ;) zu einschr�nkungen komm ich erst sp�ter noch (version der alten datei, version der neuen, berechtigungen usw. soll alles in den dateien stattfinden... aber wie gesagt. eins nach dem anderen). >Ansonsten kannst Du ja mal schauen was VB bringt... Das d�rfte keine >grosse Umstellung darstellen.. > >Ich weiss auch nicht welchen Algorithmus VB(S) f�r Instr verwendet. >Unter Umst�nden lohnt sich eine eigene Implementierung. Siehe >Boyer-Moore: >http://www.google.de/search?q=boyer+moore&hl=de&meta= das ganz ist bis jetzt in vb gehalten. asp war nur die "ausrede" f�r dieses forum ;) boyer-moore hat leider nichts gebracht. habe es gestern erst als vb-klasse entdeckt(und ehrlich gesagt noch nie zuvor davon geh�rt). naja. ich habs eingebaut und es hat nichts gebracht(rein subjektiv wars sogar langsamer. gemessen wars ca. gleich schnell). ich hab mich dann wenigstens etwas eingelesen und kam dann zu einer passage, in der es hie�, dass boyer-moore umso schneller wird, je mehr zeichen f�r den vergleich herhalten m�ssen. diese zeichenanzahl liegt bei mir zwischen 10 und 1000(siehe oben). hohe dynamik ist da nicht zu erwarten. leider. was vb da benutzt, wei� ich auch nicht. aber boyer-moore d�rfte es nicht sein sonst w�re der gestrige tag zur h�lfte vollkomen umsonst verbraten... und das will doch hoffentlich niemand ;) mal sehn, obs diesmal reicht .. wolfgang http://www.vbwelt.de/ | [aspdecoffeehouse] als [email protected] subscribed | http://www.aspgerman.com/archiv/aspdecoffeehouse/ = Listenarchiv | Sie k�nnen sich unter folgender URL an- und abmelden: | http://www.aspgerman.com/aspgerman/listen/anmelden/aspdecoffeehouse.asp
