|
Try using the ios::binary flag. i.e.
ifstream op("file.dat", ios::binary);
Steve
|
|
|
|
|
I have - I am not sure why its doing this!
last night I saved 150 data items and read them fine.. once it hit 151 it crashed . I deleted that file and started again and I entered 6 items and it crashed?
I am lost on what is causing this- I can't tell if its before the save or during. I have tried debuging it I can only think its happening during the saving process?
since it works some of the time..
by the question I trying yo solve is why..
hdr.index++;//could this be the problem?
|
|
|
|
|
I'm not sure. I'd need to see more code.
Steve
|
|
|
|
|
|
I'm not sure, why you have not used c'tor to initialize member variables.
Dosin wrote: class header
{
public:
char version[6];
char title[20];
int index;
header();
virtual ~header();
};
Not sure , whats happening there. But, change datatype of index to long . And initialize all variables in c'tor.
|
|
|
|
|
Well I think I figured it out-it was the nocreate.. for some reason it stopped the file from writing at random.. I changed it to ios::binary - it seems to be working - more testing it needed.. the size int is fine for my program.. I am making a program to hold up to 15000+.. files.. (why you have not used c'tor ) I just needed a data class and used the class instead of a struct.. It works kind of like a bitmap file.. If you read or create a bit map you can use a strut or a class.. if for some reason it fails again I will try that! thanks for all the help!!!
so far 103 entries and no errors! Ya!
|
|
|
|
|
You classes have virtual functions. For one thing, you shouldn't "twiddle bits" is classes that have (virtual functions) in the manner you are. In classes with virtual functions the compiler inserts code in the constructor and destructor to initialise the vtable pointer: your code will stomp of the compilers good work if the vtable is located at a different address (either because of a rebuild or code in a DLL being relocated). This is a classic example of what can happen when low level constructs such as "bit twiddling" are mixed with high level ones such as virtual functions.
Steve
|
|
|
|
|
I am testing the release version so far so good.. I do have one more question if you don't mind...
In a CListView/Ctrl MFC APP .. what would be the best way to update the data in the view after the dialog box is closed?
Thanks again for all the help!
|
|
|
|
|
I'm not sure with your app. Normally the document would exposed the functions to update the data. By the way, as I mention earlier, it is wrong and dangerous to do what you're doing to calsses that have virtual functions.
Consider this example program:
#include <string.h>
class CWrongBase
{
public:
CWrongBase() {}
virtual ~CWrongBase() {}
};
class CWrong : public CWrongBase
{
public:
int m_Num;
};
void main()
{
CWrongBase *pBase = new CWrong;
memset(pBase, 0, sizeof(CWrong));
delete pBase;
}
Steve
|
|
|
|
|
virtual ~header(); was just left in and will be removed - it is not needed or being used in this app... The class wizzard puts this code in on generation..in c style code they used structures instead of classes.. make a (class test) and a (struct test) in a .h file and save them - they are the same size.. so I create an array of the class for storing data.. It works like a data base or will once its complete..I guess it depends on the app- and if it works with no errors and no bugs since I removed that ios::nocreate- so far its working..
thanks again!
|
|
|
|
|
Hello,
I cant get my checkbox to work. Here is my problem.
I need to do this.
If the checkbox is check when I check it I need to uncheck the checkbox and if it uncheck when I press it I need to bring up a new dialog window. I cant get this to work.
|
|
|
|
|
Are you using MFC?
"Approved Workmen Are Not Ashamed" - 2 Timothy 2:15
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
|
Via ClassWizard (Ctrl+W), provide a handler for the BN_CLICKED notification message. In it, call the button's GetCheck() method to get the checked state of the button.
"Approved Workmen Are Not Ashamed" - 2 Timothy 2:15
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
Larsson wrote: if it uncheck when I press it I need to bring up a new dialog window
Do you want it to be checked also? If so set the style to BS_AUTOCHECKBOX when you create it. Handle the BN_CLICKED command and use GetCheck() to see if the button was checked or unchecked.
You may be right I may be crazy -- Billy Joel --
Within you lies the power for good, use it!!!
|
|
|
|
|
Can you give me an exemple? And yes I want it to be checked.
|
|
|
|
|
Use ClassWizard to add a BOOL for the checkbox named m_bCheck . Double-click on the checkbox to add a handler. Populate the handler with code like the following:
void CMFCDialogDlg::OnCheck1()
{
UpdateData(TRUE);
if (m_bCheck)
{
AfxMessageBox(_T("Dialog goes here..."));
}
}
Steve
|
|
|
|
|
|
Hi
I have a dll with exported functions, which I protect with AFX_MANAGE_STATE(AfxGetStaticModuleState()) . Fine. Now, to those functions I send a callback function as a param. This callback function is in the exe. Is there a corresponding way to restore the module state when I get back into the exe, or do I need to roll up my sleves for this one?
It's a requirement that the writer of the dll shouldn't be bothered with restoring the state before calling the callbacks, but just setting his own state correctly using the AFX_MANAGE_STATE macro.
tia
Niklas
|
|
|
|
|
Do you really need to do this? Are you accessing resources in the dll and the callback?
Mark
|
|
|
|
|
Yes.
The dlls may supply dialogs, as well as calling one of the callbacks to invoke the exes dialogs (along with other things)
|
|
|
|
|
I would think you'd just need AFX_MANAGE_STATE(AfxGetStaticModuleState()) at the top of the
callback function.
As long as the module handle is set properly so MFC can find and load resources when it needs to.
This can also be overriden by loading the resources yourself if you need to.
Mark
|
|
|
|
|
I already tried that. AfxGetStaticModuleState() only seems to work in dlls. It returns null for resource and instance handles.
|
|
|
|
|
After some investigation I found that
AFX_MODULE_STATE* pPrevModuleState = AfxSetModuleState(NULL);
on entry, and
AfxSetModuleState(pPrevModuleState);
on exit seems to work. This will allow me to load the correct resources and also use AfxGetApp() and its compadres.
(though I'm not entirely convinced yet)
thanks for your time.
Niklas
|
|
|
|
|