Posts

Showing posts from August, 2007

Our App on Vista

What's different about Vista, for an application written for Windows XP?
We write a config file in our application directory. When the user changes preferences, they are written to the config file. On XP, this file is located at C:/Program Files/DeltaSphere/bin/SceneVision-3D.cfg. Vista pretends that the file is still located there, but silently redirects it to C:/Users/username/AppData/Local/VirtualStore/Program Files/DeltaSphere/bin/SceneVision-3D.cfg. Got it?We need to update some drivers to Vista specific ones.
We use the installer from VS2005 standard, and that seems to work fineWe even use visual-basic scripts in the installer, and those still work. I bet Norton will still complain, though, just like on XP.
We have a splash-screen app that auto-runs from our install CD, and Vista complains that it is unsigned.
That's about it. Not too bad. I was prepared for much worse. Of course, we aren't really following the standards for where to locate our data and such, but we won&…

Perl regexp, one liners

The command
perl -pe
lets you do a line-by-line perl command on piped input and output. I discovered today that that means you can't use it on regexp that are supposed to match multiple lines.

Keyboard Macros in Emacs

A very useful tool in Emacs is the keyboard macro. Every so often I need to perform a repetitive task that is slightly different each time. This time, I was changing casts again, in C++. I had a series of casts, that looked like this:
(MeasureLine *)(annot->newCopy());
and I needed to replace them with this:
dynamic_cast<MeasureLine *>(annot->newCopy());
So I defined a keyboard macro, where I first selected 'MeasureLine *', and the macro would cut that text, type in 'dynamic_cast<', paste, then type '>'
The keyboard macro is started by the keystroke 'Ctrl-x (', and ended with 'Ctrl-x )'. It is run by 'Ctrl-x e'

When I found another spot in my code that looked like this:
(ConstraintPlane*)(annot->newCopy());
I could drag over 'ConstraintPlane*' with my mouse, and hit 'Ctrl-x e', and it turned into:
dynamic_cast<'ConstraintPlane*>(annot->newCopy());
Done. Another trick is that 'Ctrl-u' follow…