Menneisyys
06-24-2005, 08:05 PM
I've continued playing with dyncompdict.dat (the user dictionary that the operating system collects the non-English words entered by the user) and found out the following, testing on both WM2003 (iPAQ 2210) and WM2003SE (PL 720). (Please see this thread (http://www.pocketpcthoughts.com/forums/viewtopic.php?t=39188) for a discussion of the dyncompdict.dat file format and links for other tools.)
- the value of the byte leading each word is its weight. The bigger this value, the more chance that it will be offered first to the user. Its starting value is 3 (it's, therefore, advisable to choose 3 for all words while importing custom textual dictionaries under Windows CE); often-entered words may even have the value 30-40. This value is dynamically updated by the operating system, depending on the frequency of usage.
- the worst news: the system can't make use of dyncompdict.dat files bigger than 7-8 kbytes. (You may have more success with your files though). I've played around with accents, with eliminating words that may be also included in the main dictionary to circumvent this restriction - but in vain. Unfortunately, this seems to be an operating system restriction. It seems I have to re-engineer and, then, shadow the dictionary shipped with Pocket PC some day to fix this problem...
- do not include words that are shorter than 3-4 characters. They will render the entire file ignored. (I've implemented filtering out files like these in my converter.)
- forget the Kaisoft program. It is very slow and an absolutely useless - a very bad bargain for 20 bucks. I've tested it - it clearly shows how a program should NOT be written, optimization-wise.
- also, the Alex Feinman word editor can be ignored if you enter your words in an Enter-separated file and run in through my converter.
Now, for the most important part: if you need to convert your user dictionaries, for example, the standard Office user.dic (in non-English Offices, it's named other; for example, in the Finnish Office, it's called oma.dic), use my tool. Here's the source (http://www.winmobiletech.com/062005CustomWordList/GenerateCustomDictWordList.java) for my dyncompdict.dat generator. Just pass it the name of the import file and it will create a dyncompdict.dat for you. I've also compiled it (http://www.winmobiletech.com/062005CustomWordList/GenerateCustomDictWordList.jar) and even tested under the major Pocket PC JVM's. It works flawlessly.
On your desktop computer, you only need to issue the
java -jar GenerateCustomDictWordList.jar <input dictionary name>
command (assuming you've installed a JDK or a JRE).
The batch files to run the utility right on your PPC are as follows. The generated dyncompdict.dat file will be created in the root (\) directory. I've created batch files (and tested them) for NetFront 3.1+, CrEme, Jeode and IBM J9 PJava. Please read this thread (http://www.pocketpcthoughts.com/index.php?action=expand,40880) for more information on getting them if you don't have any of them (not even the Java-enabled Netfront - perhaps this is the best solution because you may already have it on your Pocket PC, which makes it unnecessary to install another JVM).
To run the converter on the PDA, make a directory on it with the name, say, \conv. Copy the JAR file and one of the following batch files (I've also listed their contents here).
NetFront jvlite (tested with NF 3.1): (http://www.winmobiletech.com/062005CustomWordList/NF.bat)
"\Program Files\NetFront3\jvlite.exe" -classpath \conv\GenerateCustomDictWordList.jar GenerateCustomDictWordList %1
CrEme 3.x/4.x (tested with 3.26): (http://www.winmobiletech.com/062005CustomWordList/CrEme.bat)
"\SD-MMCard\creme\bin\CrEme.exe" -Ob -classpath \conv\GenerateCustomDictWordList.jar GenerateCustomDictWordList %1
Jeode (tested with 1.7.3): (http://www.winmobiletech.com/062005CustomWordList/Jeode.bat)
\SD-MMCard\jeode\evm.exe -Djeode.evm.console.local.keep=true -cp \conv\GenerateCustomDictWordList.jar GenerateCustomDictWordList %1
IBM J9 PJ (tested with 5.7.2): (http://www.winmobiletech.com/062005CustomWordList/J9.bat)
"\SD-MMCard\IBM PPRO10\bin\J9.exe" "-jcl:ppro10" -cp \conv\GenerateCustomDictWordList.jar GenerateCustomDictWordList %1
Please modify the path (the beginning of the batch files) to the executable according to the path your JVM/NetFront is installed to!
The next step is installing PPC Command Shell - please see my post on doing this here (http://www.pocketpcthoughts.com/index.php?action=expand,40880) (second page, third post) - to provide a console to run batch files to avoid the need for editing and running link files with wired-in filenames (yes, icon-only operating systems have their own letdowns).
After installing it, fire up the console and go to \conv. Assuming you've already copied here the .BAT batch file(s) you want to invoke your JVM('s) with, GenerateCustomDictWordList.jar and the source dictionary, you can start working right away by issuing the <batchname> \conv\<user dictionary name> command. (Note that you need to supply the full directory path, here, \conv to the JVM so that it finds the input file.)
An example screenshot:
http://www.winmobiletech.com/062005CustomWordList/ConvertInConsole.gif
I may rewrite/repackage this app using the CF framework some day (but not in the very near future!) so that it can be run without any JVM and can have a GUI.
- the value of the byte leading each word is its weight. The bigger this value, the more chance that it will be offered first to the user. Its starting value is 3 (it's, therefore, advisable to choose 3 for all words while importing custom textual dictionaries under Windows CE); often-entered words may even have the value 30-40. This value is dynamically updated by the operating system, depending on the frequency of usage.
- the worst news: the system can't make use of dyncompdict.dat files bigger than 7-8 kbytes. (You may have more success with your files though). I've played around with accents, with eliminating words that may be also included in the main dictionary to circumvent this restriction - but in vain. Unfortunately, this seems to be an operating system restriction. It seems I have to re-engineer and, then, shadow the dictionary shipped with Pocket PC some day to fix this problem...
- do not include words that are shorter than 3-4 characters. They will render the entire file ignored. (I've implemented filtering out files like these in my converter.)
- forget the Kaisoft program. It is very slow and an absolutely useless - a very bad bargain for 20 bucks. I've tested it - it clearly shows how a program should NOT be written, optimization-wise.
- also, the Alex Feinman word editor can be ignored if you enter your words in an Enter-separated file and run in through my converter.
Now, for the most important part: if you need to convert your user dictionaries, for example, the standard Office user.dic (in non-English Offices, it's named other; for example, in the Finnish Office, it's called oma.dic), use my tool. Here's the source (http://www.winmobiletech.com/062005CustomWordList/GenerateCustomDictWordList.java) for my dyncompdict.dat generator. Just pass it the name of the import file and it will create a dyncompdict.dat for you. I've also compiled it (http://www.winmobiletech.com/062005CustomWordList/GenerateCustomDictWordList.jar) and even tested under the major Pocket PC JVM's. It works flawlessly.
On your desktop computer, you only need to issue the
java -jar GenerateCustomDictWordList.jar <input dictionary name>
command (assuming you've installed a JDK or a JRE).
The batch files to run the utility right on your PPC are as follows. The generated dyncompdict.dat file will be created in the root (\) directory. I've created batch files (and tested them) for NetFront 3.1+, CrEme, Jeode and IBM J9 PJava. Please read this thread (http://www.pocketpcthoughts.com/index.php?action=expand,40880) for more information on getting them if you don't have any of them (not even the Java-enabled Netfront - perhaps this is the best solution because you may already have it on your Pocket PC, which makes it unnecessary to install another JVM).
To run the converter on the PDA, make a directory on it with the name, say, \conv. Copy the JAR file and one of the following batch files (I've also listed their contents here).
NetFront jvlite (tested with NF 3.1): (http://www.winmobiletech.com/062005CustomWordList/NF.bat)
"\Program Files\NetFront3\jvlite.exe" -classpath \conv\GenerateCustomDictWordList.jar GenerateCustomDictWordList %1
CrEme 3.x/4.x (tested with 3.26): (http://www.winmobiletech.com/062005CustomWordList/CrEme.bat)
"\SD-MMCard\creme\bin\CrEme.exe" -Ob -classpath \conv\GenerateCustomDictWordList.jar GenerateCustomDictWordList %1
Jeode (tested with 1.7.3): (http://www.winmobiletech.com/062005CustomWordList/Jeode.bat)
\SD-MMCard\jeode\evm.exe -Djeode.evm.console.local.keep=true -cp \conv\GenerateCustomDictWordList.jar GenerateCustomDictWordList %1
IBM J9 PJ (tested with 5.7.2): (http://www.winmobiletech.com/062005CustomWordList/J9.bat)
"\SD-MMCard\IBM PPRO10\bin\J9.exe" "-jcl:ppro10" -cp \conv\GenerateCustomDictWordList.jar GenerateCustomDictWordList %1
Please modify the path (the beginning of the batch files) to the executable according to the path your JVM/NetFront is installed to!
The next step is installing PPC Command Shell - please see my post on doing this here (http://www.pocketpcthoughts.com/index.php?action=expand,40880) (second page, third post) - to provide a console to run batch files to avoid the need for editing and running link files with wired-in filenames (yes, icon-only operating systems have their own letdowns).
After installing it, fire up the console and go to \conv. Assuming you've already copied here the .BAT batch file(s) you want to invoke your JVM('s) with, GenerateCustomDictWordList.jar and the source dictionary, you can start working right away by issuing the <batchname> \conv\<user dictionary name> command. (Note that you need to supply the full directory path, here, \conv to the JVM so that it finds the input file.)
An example screenshot:
http://www.winmobiletech.com/062005CustomWordList/ConvertInConsole.gif
I may rewrite/repackage this app using the CF framework some day (but not in the very near future!) so that it can be run without any JVM and can have a GUI.