hi hank.
i just updated your program to see how you implemented the string replace routine and here i've got two things you may fix:
1. you have "?";"(blank)" allready preset, which is a good choice i would say! but the user is still able to delete this entry, so you may set it to be not removable
2. you left out a invalid file name character (at least in windows) which the user still can enter (at least with copy'n'paste): the tabulator [char(0x09)]
and here another question: do you replace invalid characters automatically with a "(blank)"? it would be the easiest way to solve some problems. you could also solve the first problem with this method
. oh, and please do not forget to document which characters you replace (so at least in your readme/help file/menu but you may also want to add a [?] button in the renaming menu if you think it's a good thing
).
so, again a few things i complained about, but i also have to say: thnx for the replace string stuff and thnx for all of your updates! nice to see your program being constantly improved
.
cheers
mrshl
edit: just saw another thing: you did not give the option to alter a replace-with entry. you may also add a button so one could alter his/her settings instead of removing first and then adding it again with the altered replacement string.
edit2:another one: if you enter a ' [char(0x39)] is in the replacement string and then restart rominator and open the settings it will crash. this will also happen if you enter |$| as one of the strings. this is caused by the way you store your settings (sql lite format) i would say, so here is my quick and easy suggestion: don't store these settings as plain text! just encode them with what ever you want (i.e. hex-values in plain text or base64 or whatever; you know know what i mean
).
For Windows users, yes, it automatically adds in the first entry (replacing the question mark with a blank entry). I prefer to leave it as deletable as some people might have "modified" windows that will allow the question mark. No other characters are replaced unless specified by the string replacer. Only characters are restricted, that is all. The restricted characters are the ones that are not allowed in file names (try typing one of them in a file name through windows, you'll see them
) -- I'll have those documented though.
Ah yes, the dreaded copy and paste. You're not supposed to bypass the key checks!
Why would you want to enter |$| as the replacement string anyways?? It's my delimiter, and not used in any filename, which is the exact reason why I chose it.
I'd prefer to not encrypt it as I've got nothing to hide
If you muck around with it, that's your own fault
Naturally, you shouldn't be able to enter the | character in Windows, but it is allowed in Mac and Linux... I might disable it across the board, as well as disable copy and paste into that field. In the event that you bypass that, I'll add in *extra* protection to protect those fields
Believe me, I was thinking about Base64 Encryption, but that just makes strings double their size, and like I said, I've got nothing to hide, and really someone who doesn't know what they're doing shouldn't muck around with the settings files
For the next release, you can modify the string replacements by doubleclicking on them... Which reminds me, forgot to mention that you can modify list names by double clicking on the list
Whoops, forgot to check if you're entering in an apostraphe! If you use an apostraphe, to write it to SQL you have to double it up, because SQL Strings are as such: SQLExecute("UPDATE settings SET replaceWith='(blank)' WHERE rowid=1") -- Since the string definer is enclosed in '' (two apostraphes), adding in a 3rd apostraphe in the middle would cause an SQLError and not write it, so I just need to replace all apostraphes (') with two apostraphes together ('') -- I'll update this for 3.2.1 as well as the other things mentioned for tonight.
What I *might* do though, is start encrypting the databases, so it'll need a username and password as the decryption seed in order to read the database. This way I can just encrypt the whole database, rather than the individual strings. Sound kosher?
Regards.