Vielleicht ganz gut passend - auch auf die letzten Fragen
zur regfree Benutzung des RC4 und dessen Deployment - hier
eine aktuelle RC4-Demo, welche "mal a bisserl was Sinnvolles
macht" und das TestGUI als "XCopy-regfree App" bereitstellt ...
Im "dotnetPro-Journal" (Nachfolger der "basicPro") werden
von Zeit zu Zeit Contests ausgeschrieben, die zwar inzwischen
nur noch "managed Code-Einsendungen" erlauben (früher waren da
auch noch C++ und VB6-Einsendungen erlaubt) - aber von Zeit
zu Zeit versucht man sich dann halt doch an einer VB6-Variante,
um mal zu schauen wo man im Vergleich "inzwischen so steht"... ;-)
Hier also eine VB6-Implementierung, die im Vergleich so
schlecht nicht aussieht (war ein Speed-orientierter Contest,
der ein 1Mio PI-Digits enthaltendes File als zu analysierende
Datenbasis bereitstellte).
Wer sich selbst mal daran versuchen will, sollte vielleicht
zunächst nicht in den VB6-Quellcode meines \Src\Dll\-Ordners
schauen (modParse.bas) ...
eine nahe dem Optimum liegende Implementierung sollte jedoch so
(native kompiliert, alle Optionen eingecheckt) unter 10msec liegen.
Eingabe ist wie gesagt das 1MB große PI-TextFile - Ausgabe soll dann
in 3 Collections erfolgen, die am Ende folgenden Inhalt aufweisen:
1. die aufsummierte Anzahl des Vorkommens aller Digits (also alle 0en,
1en usw. - inkl. des nur einmal vorkommenden Dezimal-Punkts)
2. die Anzahl des Vorkommens von elf verschiedenen Zeichenfolgen,
wie z.B. "01", "012", "0123", ... , "10", "210", "3210", ... usw.
3. die Anzahl sämtlicher Abstände der Ziffer '1' innerhalb des
PI-Streams
Die gewünschten (richtigen) Ergebnisse sind in einem JSON-File
hinterlegt, welches die Inhalte der 3 Collections "serialisiert"
widerspiegelt - man muss solch ein File aber nicht generieren
um den Contest zu lösen - die Collections "als Ausgabe" reichen aus.
Anstelle des "Reinschauens" in das JSON-TextFile kann man
die gewünschten Resultate alternativ auch aus dem GUI des
beiliegenden Binarys entnehmen, hier mal ein ScreenShot:
http://www.datenhaus.de/Downloads/dnpPIContest1.png
Der Contest erforderte kein Test-GUI - hab jedoch wie gesagt
eines gebaut, um bei der Gelegenheit gleich mal zu demonstrieren,
"was inzwischen bereits alles so geht" - (z.B: JSON-Klassen,
cFSO.cStream-Klasse zum Einlesen, modernes Widget-basiertes GUI
und regfree Benutzung des RC4 in einem eigenen \RC4Bin\ Folder).
Eigentlich macht die cConstructor-Klasse (das Dingens hinter
der üblichen globalen Variable 'New_c') hier das Leben inzwischen
ziemlich einfach - ein eigenes Modul für DirectCOM.dll ist
für so kleine Geschichten eigentlich nicht nötig - in der
Demo hab' ich den API-Call (GetInstanceEx) einfach direkt
im Sub Main() beinhaltenden Modul deklariert.
Man muss halt beim Projekt-Setup dann ein wenig auf korrekte
Pfade achten - und gelegentlich auch eine 'InIDE'-Weiche
einbauen, falls man seine eigenen Dlls (im Beispiel ist
das die dnpPIParsing.dll) zusammen mit dem GUI-Projekt
debuggen möchte innerhalb einer Projektgruppe.
http://www.datenhaus.de/Downloads/PIParsing.7z
(ca. 2MB - inkl. Binaries, VB6-Sourcecode, PI-File u. JSON-ResultFile)
Das vielleicht mal so ganz grob als Anregung für das Aufsetzen
eines "regfree-Projekt-Gerüsts" - der RC4 darf und soll hierbei
also weiterhin an einem zentralen Ort auf der Entwickler-
Maschine registriert sein (z.B. C:\RC4\...) - das eigentliche
Projekt enthält dann aber wie in der Demo zu sehen, einen
zusätzlichen \RC4Bin\ Folder mit entsprechenden (unregistrierten)
Kopien:
\AppFolder\
App.Exe
Eigene.Dll
\RC4Bin\
vbRichClient4.dll
vbWidgets.dll
vb_cairo_sqlite.dll
DirectCOM.dll
Olaf