Argg, after a few + hours of playing in the OrdonFaron Forest Temple I’m stuck….
Five minutes of soul destroying Walkthrough reading, and I see the point I stalled at. Hmmm now to find the apparent spider bomb, to blow the door….
Argg, after a few + hours of playing in the OrdonFaron Forest Temple I’m stuck….
Five minutes of soul destroying Walkthrough reading, and I see the point I stalled at. Hmmm now to find the apparent spider bomb, to blow the door….
Last night went to the Windows Mobile/Windows Embedded Christchurch Update, held at the Christchurch Convention Center.
First observation was that it felt like half the people there were from Trimble. Seconds observation was that we were told the flight was delay, after being there 30 minutes, yet being a 3 hour flight they would have known this well in truly before I left work early, thus an email would have allowed me to keep working… So instead I eat nibbles and drank beer/wine, and talked to a lot of Trimble people….
Due to the hour plus delay, the Microsoft guys were in speed mode, and at times I wanted them to breath. But they were talking good stuff.
My main interest was in hearing about embedded XP, due to our next platform being a eXP, but it was main about eXP.next and then eVista. Scary part of eVista was the minimum core footprint. I did get the information I was after, via the features that will be in eXP.next implying the current feature set in eXP.
So I’m pretty thankful to MS for bringing these guys here, it’s nice to see/hear people talk about what they are doing.
I have just found (oh thank you Google and the Oracle forums) the solution to my PL/SQL error
CA_ADD_DESIGN_1 (28,5): PL/SQL: ORA-01747: invalid user.table.column, table.column, or column specification
My first problem was which line does the 28 refer to, as I’m editing one large PL/SQL file, it appears to count from the line before the
CREATE OR REPLACE
PROCEDURE ca_add_design_1(
But the real problem was what did the error mean.
The third Google result had a Oracle forum post, so I should have gone there first, but I didn’t. The first two sites are just AdSense whore sites, in fact 6 of the first 10 results are AdSense whores. It makes me sad that these sites are there, as the information contain was worthless, and been top Google results means they will get a lot of hits. GRRR and for bonus points these results were from google.co.nz, using google.com the useful answer is in 5th place.
Anyway the Oracle forum answer said “you have an extra comma after your lass SET clause before the WHERE” and low and behold I did.
UPDATE ca_p_design
SET design_type_id=NVL(pDesignType,design_type_id),
session_id=NVL(SessionID,session_id),
time_end=NVL(pTimeEnd,time_end)**, **
WHERE design_id=ID;
So now my Update looks like:
UPDATE ca_p_design
SET design_type_id=NVL(pDesignType,design_type_id),
session_id=NVL(SessionID,session_id),
time_end=NVL(pTimeEnd,time_end)
WHERE design_id=ID;
and it works! I had spent ages triple checking each of my column names, and it turned out to be the column I “didn’t mention” that was upsetting it.
Well, because I downloaded the DirectX SDK (April 2005) and went over my monthly traffic limit,
I have been running uTorrent just because I can,
because of this, Xtra has squashed my bandwidth down to 6KB down 8KB up, so the WWW is slow,
So I have been connected to work via the VPN (to sync the codebase via svn), and remote desktopped onto the build machine and my machine to build the software and test my current bug.
Surprisingly, things (the UI experience) are manageable.
So I’m posting this from work (but at home) because I can (and the VPN blocks all Internet access while connected).
That seems to be the justification for a lot of geeky things.
….Builds done!
After installing DirectX SDK (April 2007) I have lost my keyboard mappings in Visual Studio. Del and Delete, Arrows Enter all don’t work.
I have done a repair on Visual Studio (only took an hour) and that didn’t fix it.
So it now looks like I get uninstall the DirectX SDK (knew I should stick to OpenGL), and uninstall/install Visual Studio again.
Failing that it might be repave time. And here I was just wanting todo some work….
Update: ARRRRRGGGGGG, Uninstalled DirectX SDK (April 2007 and December 2005) didn’t work!
Uninstalled Visual Studio 2005, and reinstalled, still doesn’t work! In fact it’s like it didn’t actually uninstall.
I’m SOOO grumpy at this point.
Update 2: Nothing like, having nothing to lose to help solve the problem. I went and deleted the following directories
Plus the .suo and .ncb of my project and it now working correctly again.
THANK GOODNESS!
Well the bug I was getting bitten by at work is shown by the following code.
class c1
{
public:
int a;
int b;
};
class c2
{
public:
int c;
int d;
c2(): c(3){};
};
class c3
{
public:
int e;
c1 f;
};
class c4
{
public:
int g;
c2 h;
};
int main(int argc, char* argv[])
{
c1 v1;
c2 v2;
c3 v3;
c4 v4;
c1* pv1 = new c1();
c2* pv2 = new c2();
c3* pv3 = new c3();
c4* pv4 = new c4();
return 0;
}
With a break point on the return (in debug mode). Inspection shows the 8 variables have the follow values:
v1 {a=0xcccccccc b=0xcccccccc }
v2 {c=0x00000003 d=0xcccccccc }
v3 {e=0xcccccccc f={a=0xcccccccc b=0xcccccccc } }
v4 {g=0xcccccccc h={c=0x00000003 d=0xcccccccc } }
pv1 {a=0x00000000 b=0x00000000 }
pv2 {c=0x00000003 d=0xcdcdcdcd }
pv3 {e=0x00000000 f={a=0x00000000 b=0x00000000 } }
pv4 {g=0xcdcdcdcd h={c=0x00000003 d=0xcdcdcdcd } }
now v1-v4 are what I’d expect, pv1-pv3 are also are what I’d expect, but pv4 is not!
Because to break the default c3 members values just takes adding a constructor to c1, then c3 is broken.
Both Visual Studio 2003 and Visual Studio 2005 behave the same. It just seems very strange that the existence of a non-default constructor for one member field means that this object (class or struct) doesn’t get a default constructor.
Now I understand the best solution is to never have a struct or class without a constructor, but it just seems so fragile.
The makes extra work for me to upgrade our legacy code base from C malloc to C++ new, as not been able to rely of the default constructor to zero the ram, means I need to manually set all members to zero for all objects.
*GRRR*
Well he arrived on the 18 of April, but I had no picture and he had no name. So it felt like empty news. Well I now have a picture!
The toy is called Lux, but the boy is taking his time!
Well done Aman and Angela
I was just posting a comment on my blog via IE, and realized that I didn’t trust my spelling. In fact where was the red line!
So I went to the start menu (Window XP machine) and didn’t see Word icon in the quick select list. It’s always been there before. But it’s been demoted to some sub level menu. Firefox is the reason, ever since they added in-line spell checking I have had no reason to cut’n’paste to Word to check all my spelling. Nor do I use Gmail’s spell checker any more.
So because I couldn’t see Word quickly, I went to my open Gmail thread and just pasted into the reply box of the current thread, to get the Firefox checker, then cut the corrected sentence, and discarded the reply.
Moral, use Firefox to look at your blog, so commenting is easier!
p.s. It even seems backwards that LiveWriter doesn’t do as you type spell checking. It’s like using Word Prefect 5.1 again (ie a great program, just retro).
Our code base is very old C in places, but compiled as C++. One of my bug bears has been the use of a malloc wrapper. The issue that push me over the edge was turning on heap debugging to find all memory been allocated by this function (well two: malloc and realloc).
So when I commented them out via some large Ctrl-K-C action and add some wrapper #define’s, the program broke, because the custom malloc’s zeroed the RAM, and the standard malloc set every thing to 0xCDCDCDCD.
new on the other hand does zero ram (via the constructor), and not trash vtables, etc, so with the help of global search and replace (Ctrl-Shift-H
) and some regex \(:b*{:i}:b*\*:b*\):b*mem_alloc:b*\(:b*sizeof\(:b*:i:b*\):b*\)
and replace with new \1()
I have removed most of the evil, and can now hand check the rest.
thus
typeA *var = ( typeA *)mem_alloc( sizeof(typeA) ) ;
becomes
typeA *var = new typeA() ;
which is much better. Not having back tracking means you have to do each replace by hand as the following matches.
(typeA *)mem_alloc( sizeof( typeB ) ) ;
In this case (in my code) typeB is a local variable that is an array of typeA so this is fine, you just don’t want a new of typeB.
Now I’m getting bitten by a default constructor issue that I will also blog about.
p.s. fear not that I’m doing this in the main trunk. I am using my sandpit branch, and using the lovely merge functionality of subversion (via TortoiseSVN) to keep my trunk up to date.
I upgraded to FeedDemon 2.5 Beta 4 at work, mainly for the cos I can factor, but a little bit for the better embedded video support. But the features that I actually like the most are two UI tweaks.
So just small things, which make it nicer to use. It feels better, just because the UI is cleaner.