|
I have come across what is, I think, a bug with Visual C++ running under Windows NT4.
Compiler : Visual C++ 6.0 SP5.
Operating System : Windows NT4 Service Pack 6a.
My code has the following structure:
#include statements
using namespace std;
int main()
{
A lot of computations, input & output operations using streams..............
CString file = "c:\\results.txt";
int history = 20;
const int calcPeriodHalfhours = 6;
ofstream outFile1;
outFile1.open(file);
for (calcPeriod = 1; calcPeriod < calcPeriodHalfhours + 1; calcPeriod++)
{
outFile1 << history + calcPeriod; // this is the line that causes the grief.
outFile1 << endl;
}
outFile1.close();
outFile1.clear();
return 0;
}
If I run the Debug Version of this code, everything is works, and the program exits normally.
Under the Release Version (compiled with /O2 /Ob0), the code runs to the end, producing the correct output, but then comes up with
the Application Error "The instruction at "0x00418698" referenced memory at "0x0000000b". The memory could not be "read". This is an unhandled
Access Violation. Memory is not released to the operating system.
If I disable the optimisations (/Od), the code runs fine.
If I change the line:
outFile1 << history + calcPeriod; // this is the line that causes the grief.
to
outFile1 << history; // this is the line that causes the grief.
or to
outFile1 << calcPeriod; // this is the line that causes the grief.
the code runs fine as Release Version (compiled with /O2 /Ob0).
If I declare the "ofstream outFile1" in the global space instead of in the function space, the code runs fine as Release Version (compiled with /O2 /Ob0).
If I run the original code as Release Version (compiled with /O2 /Ob0) under Windows 2000 SP1, the code runs fine.
Has anyone come across somethding like this problem before?
Please let me know.
Thank-you
Doug Murray
Doug
|
|
|
|
|
Your EXE's base address is 0x00400000, so something in the EXE is likely dereferencing a null pointer (since the error is coming from an attempted read of address 0xB). Step into the operator<< call and see what happens.
--Mike--
http://home.inreach.com/mdunn/
The preferred snack of 4 out of 5 Lounge readers.
|
|
|
|
|
I've got a dialog based MFC application I've been working on. It's an MFC app that uses an ATL COM component. The main dialog gathers a decent amount of data for display through the COM object.
Anyway, depending on whether certain data was available for display I either populated (at the time) a Microsoft FlexGrid control or put up a static box that basically said there was no data to view. The way I did this to begin with was by creating both the flexgrid control and static box exactly the same size and shape and overlapping them in the dialog editor and using controling variables to Hide/Show each depending on whether there was data available. This seemed to work fine at first. However, I started having problem with Visual C++ doing compiles and working with SourceSafe. Eventually it got so bad I determined that SourceSafe must have nuked a file. The biggest problem appeared to be with resources so I went to my project directory and took a look at my resource file... and then took a second look. It was 68 MB! I opened and closed it a couple more times and it ballooned to 276 MB!
Something had gone squirrely with DevStudio or something. I actually had to recreate the project resource file from scratch. I don't know exactly how, but adding in that main dialog simply caused the problem to happen again so I imported all the other bitmaps, icons, dialogs, toolbars, etc and redid the main dialog from scratch. Now my resource file is a nice 22KB. Weird. I tracked through Sourcesafe and watched the file size practically double between each checkin and checkout after adding the static box I described earlier on top of the existing grid control.
Any ideas what could have happened there? Visual Studio 6.0, SP5.
Matt Philmon
|
|
|
|
|
No precise answer, but here we fight a running battle with Sourcesafe ( across multiple service packs ) as far as resources are concerned. Things lost, things doubled up, ID's conflicting, we run a post build step now that tells us conflicting ID's so we can go in and fix them.
Christian
The content of this post is not necessarily the opinion of my yadda yadda yadda.
To understand recursion, we must first understand recursion.
|
|
|
|
|
Me too ran into problems some time back with the source safe... particularly with resource files. It was too bad that we had to do the updations manually during checking in because it simply wouldnt update itself from the local . Also, it did screwed some part of the resource from nowhere...
Kannan
|
|
|
|
|
What is the easiest way to read and to write Variables to an ACCESS database??
|
|
|
|
|
Try to use OLE DB provider with ADO connection - it`s simpliest, but not fastest
...
|
|
|
|
|
Hello, the codegurus around the world.;)
The easiest way to work Access is to use Access Basic.
However, we can't create the stand alone execute file.
So, the next way is to use Visual Basic with ADO since we can create exe files.
If you don't like Visual Basic like me, now try to use Visual C++.
ADO expands the approach since we can use the same code to Oracle and SQL server.
However, we can't get the benefit of Access database.
So, sometimes we had better use CDaoDatabase, CDaoRecordSet, and the other useful classes
to deal with the benefit of Access database.
If you have a time, try to create the application by the above methods.
So, you can understand which way is best for your requirement.
Last, Access Database can't deal with concurrent access from the users. (not thread safe)
So, we had better use SQL server or Oracle when the many users access the database at the same time like the web based database.
Have a nice day!
-Masaaki Onishi-
|
|
|
|
|
Hello,
I tried to run one of my programs on a computer however I got the following error message:
Error Starting Program
The WINSCHEDULER.EXE file is
linked to missing export SHELL32.DLL:SHGetSpecialFolderPathA.
The computer has Windows 95 (4.00.950 b) and Internet Explorer 5.5 (5.50.4134.0600)
Is there anybody who knows or guesses the source of the error?
Thank you for any helps in advance.
Regards.
Mustafa Demirhan
|
|
|
|
|
I think you've got a SHELL32.DLL version earlier than 4.71.
Internet Explorer 5.5 doesn't update the SHELL32.DLL. It's updated only on Windows 95 or NT4 when you you install Internet Explorer 4 with the integrated shell option (aka desktop update).
A clean way of fixing it is to un-install IE 5.5, install IE 4.01 with desktop update and then re-install IE 5.5.
-------------------------
Benoit Devigne
http://www.bdevigne.com
contact@bdevigne.com
|
|
|
|
|
Thank you very much!
Mustafa Demirhan
|
|
|
|
|
WhenI declare variables for my Edit box and for my spin :
CSpinButtonCtrl m_Spin;
CEdit m_Edit1;
My program work ok, but when I quit the program I always get a message like:
>>
MYPROGRAM a causé une défaillance de page dans
le module KERNEL32.DLL à 0167:bff76840.
Registres :
EAX=005501d0 CS=0167 EIP=bff76840 EFLGS=00010246
EBX=005501d0 SS=016f ESP=00550000 EBP=00550014
ECX=00550098 DS=016f ESI=8196c340 FS=5eef
EDX=bff76855 ES=016f EDI=005500c0 GS=0000
Octets à CS : EIP :
ff 75 0c ff 75 08 ff 55 18 83 c4 10 64 8f 05 00
>>
How can use a Edit box with a spin without having that error????
|
|
|
|
|
Does anybody know how to easily convert a string from one charset to another.
Thanks in advance. Bill
|
|
|
|
|
Hi Bill,
MultiByteToWideChar converts character set to Unicode.
WideCharToMultiByte converts Unicode to arbitrarily character sets.
Hope this helps
Juergen
|
|
|
|
|
How fast you want to do it?
|
|
|
|
|
Does anyone have an example how to run JavaScript (or other ActiveScript as VBScript, etc.) from VC++? There is a lot of things that should be worked out to do this (the general problem is passing parameters). I need it ASAP and that's why I'm trying to find already working sample.
Any help will be appreciated.
Thanks!
|
|
|
|
|
Have a look to the MSSCRIPT.OCX ActiveX control. There're some sparse example in the MSDN Library.
I hope this control can help you.
-------------------------
Benoit Devigne
http://www.bdevigne.com
contact@bdevigne.com
|
|
|
|
|
I've been searching everywhere for a list of valid arguments to pass into a template class, and I can't find anything. I know that you can use "class" and any basic type, such as int, char, bool, etc., but I don't know how to pass in a string, for example.
I would like my template to be defined something like:
template<class t,="" string="" s=""> MyTemplate...
I've tried using "char *", "VARIANT", and "BSTR", but the compiler won't accept any of them.
Any help is greatly appreciated!
Thanks,
Jason
|
|
|
|
|
Hello,
I make my propertypages with the resource editor Visual Studio V6.
I create the propertysheet on the stack and I add the property pages.
The font from the property pages Arial 8 pt is however different than the one I have put with the resource editor Courier New 10 Pt. I tried the SetFont(&MyFont) function but my system make assertion failure.
My question is how can I change the font in my property sheets and -pages ? Any hel will be appreciated.
|
|
|
|
|
Is there a way for a syntactical equivalent for the (Java-) finally statement?
What is the most elegant way to simulate it without a subroutine?
Regards,
Juergen
|
|
|
|
|
Hi
there is
__finally
(2 underlines) but it is Microsoft specific - but as we are in the Visual C++ forum
Kurt
|
|
|
|
|
Hi
there is
__finally
(2 underlines) but it is Microsoft specific - but as we are in the Visual C++ forum
Kurt
|
|
|
|
|
Hi Kurt,
thanks for the reply.
But I want to be portable and can't use SEH.
I'm searching for some elegant solution without
subroutines.
What is the reason for no finally in standard C++?
Is there some better/exacter substitute than:
void finally() {
removecode;
}
try {
code;
} catch (Exception e) {
finally();
throw e; //if e shoudn't be chatched here
}
finally();
Juergen
|
|
|
|
|
Hello.
I'm making an ISAPI DLL - server extension.
I want to access an Access database (.mdb) throw ODBC in my code. When i call a DLL function from a browser code i want this function to make an ODBC calls.
When there is no any ODBC calls in the function code, the DLL works OK: returns HTML code and so on.
When i put only this 3 rows in the function code:
CMyRecordset rs;
rs.Open();
rs.Close();
and i browse (i call the function throw the browser) IIS gives me an error in installation or something...
I put my database .mdb file in a directori which is seen by IIS. ODBC is correctly set up and above code works when it is called from an ordinary application i tested it.
So i can not understand where is the problem. One told me that there is a special settings which must be made for an ODBC driver. I don't know yet...
Can anyone help me....
|
|
|
|
|
put try catch and see where is error.
Good luck,
Dror
|
|
|
|