|
i need to be able to read a line from a text file and store what is read in int.
|
|
|
|
|
|
Try this,
CFileException ex;
CFile myfile;<br />
<br />
myfile.Open("c:/b.txt", CFile::modeRead, &ex);<br />
<br />
int z=myfile.GetLength();<br />
char* data=new char[z];<br />
myfile.Read(data,z);<br />
<br />
int* value=new int[z/3];<br />
for(int i=0;i<z;i=i+3)<br />
value[i/3]=atol(&data[i]);
<br />
myfile.Close();
|
|
|
|
|
what header file to i need for this code?
|
|
|
|
|
No header is required. Stdafx.h is sufficient i think. CFile is a class of MFC. Refer to MSDN
|
|
|
|
|
what do you man when you say that you want to store the data in int.
do you want to store the number of bytes you read from a file in int'or do you want to store the data in int(in that case -> ???????)?
regards,
Eli
|
|
|
|
|
i want to store the data in int.
|
|
|
|
|
Assuming that your file has CR/LF at end of each line.
The code below might be easier
<br />
CStdioFile myFile("Sample.txt",CFile::modeRead );<br />
CString myBuffer;<br />
int myInteger = 0;<br />
LPCTSTR pMyBuffer,<br />
pMyBufferEnd;<br />
<br />
myFile.ReadString(myBuffer);<br />
<br />
while(!myBuffer.IsEmpty()){<br />
pMyBuffer = myBuffer;<br />
pMyBufferEnd = pMyBuffer + myBuffer.GetLength();<br />
cout << pMyBuffer << endl;<br />
<br />
for( pMyBuffer;pMyBuffer <= pMyBufferEnd; pMyBuffer++)<br />
{<br />
<br />
if((*pMyBuffer < '0') ||(*pMyBuffer > '9'))<br />
{<br />
cout << myInteger << (LPCTSTR) " ";<br />
myInteger = 0;<br />
}<br />
<br />
else<br />
{<br />
myInteger *= 10;<br />
myInteger += *pMyBuffer - 48;<br />
}<br />
<br />
}<br />
<br />
cout << endl;<br />
<br />
myFile.ReadString(myBuffer);<br />
}<br />
<br />
myFile.Close();<br />
I'll e-mail you a demo. It's a console app (don't worry it supports MFC!)
Good luck, happy programming,
Alton
|
|
|
|
|
Hello,
This is regarding the listview app.
I am able to compile this in debug mode but it does not work when i try to run the executable. Does anyone know why this is?
void CReportCtrlDemoView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
srand((unsigned)time(NULL));
CRASHES HERE: m_wndList.Create(this, 0, NULL, 0);
Please help with this.
thanks,
Lino
this is the link to the code:
http://www.codeproject.com/listctrl/ReportControl.asp?df=100&forumid=29500&select=1048274"
|
|
|
|
|
Hmmm, are you using DDX to create the m_wndList control? If so it already exists by the time you hit the code that causes the crash and the crash is in fact an ASSERT telling you that the list control already exists. This would explain why it works in release (implied in the title) but not in debug.
Rob Manderson
I'm working on a version for Visual Lisp++
My blog http://blogs.wdevs.com/ultramaroon/[^]
|
|
|
|
|
how do i fix it?
if you are referring to:
DDX_Control(pDX, IDC_LIST1, m_wndList);
inside the DoDataExchange() it does not exist.
Let me caution u that i am not an expert in this so if you have the patience be as explicit as possible.
thanks,
Lino
|
|
|
|
|
Hi
The exact issue is in PreSubclassWindow() method of ReportCtrl class.
ASSERT(GetHeaderCtrl() != NULL);
ASSERT macro will work only in debug version and not in Release.
so it wont throw exception in release mode.
comment the above code in your class and try.
thks
Jibesh.V.P
Jibesh.V.P
www.m2India.com
|
|
|
|
|
that was it thank you...
greatly appreciate your help.
Lino
|
|
|
|
|
Hi, I've been creating, a semi-portable thread class.
all of it works fine, but i'm having trouble,
understanding how to pass the address of my structure,
through the void* of beginthreadex, and if then how to,
access the structure again from there.
here's a little code to help better explain my problem:
typedef struct {
char* szReference;
__w64 unsigned uHwnd;
unsigned uReferenceLength,
uIdentity,
uState;
} Thread_barrer;
void CCThread::SetFunction(unsigned(__stdcall *uFunction)(void*))
{
this->vfThreadProc = uFunction;
}
void CCThread::InitThread(Thread_barrer &tbObj)
{
tbObj.uHwnd = _beginthreadex(
0,0,vfThreadProc,(void*)&tbObj,
0,&tbObj.uIdentity);
}
but to pass the address of the context (&tbObj <above>) through void*
and access it inside:
unsigned __stdcall ThreadCentre(void *vArguments)
{
Thread_barrer tbObj;
printf("predicted address of tbObj: %d\n",vArguments);
return (1);
}
i'd assume that you could set another context to that address,
but it's not easy to find viable info , on such unique tasks.
note: this all compiles fine, I'm having trouble with using the address,
passed through __beginthreadex to access the context there of.
any tips, or ideals will help.
thank you.
A world without knowledge, is a world without life.
|
|
|
|
|
When you call _beginthreadex() you cast a Thread_ barrier* to void* , so in the thread function you just cast it back:
unsigned __stdcall ThreadCentre(void *vArguments)
{
Thread_barrer* ptbObj = (Thread_barrer*) vArguments;
...
}
--Mike--
LINKS~! Ericahist updated! | 1ClickPicGrabber | CP SearchBar v2.0.2 | C++ Forum FAQ
Strange things are afoot at the U+004B U+20DD
|
|
|
|
|
Thanks Mike, i had been trying stuff, close to that, but thanks.
|
|
|
|
|
Ok, i have a problem with classes. I have searched the forums, but all classes on here are so much more complex. (I know i'm a beginner, but we all have to start somewhere ) I have tried, but can't figure it out. I want this program to do two functions, as seen, and then show the sum of these two functions. I have to learn classes for a more difficlut uni assignment, so help would be great!
cheers!!!
#include <iostream.h>
class rectangle
{
public:
rectangle();
double sumA();
double sumB();
private:
double a,b,c,d,e,f,g;
};
int main ()
{
double a=0,b=0,c=0,d=0,e=0,f=0,sumA,sumB;
cout << "enter a\n";
cin >> a;
cout << "enter b\n";
cin >> b;
cout << "enter d\n";
cin >> d;
cout << "enter e\n";
cin >> e;
cout << "the size is: " << sumA()+sumB() << endl;
return 0;
}
rectangle::rectangle()
{
}
double rectangle :: sumA()
{
return c=a+b;
}
double rectangle :: sumB()
{
return f=d+e;
}
|
|
|
|
|
may want to declare an instance of the class in main()
rectangle rectMyClass;
rectMyClass.sumA();
rectMyClass.sumB();
and another tip, that may help you keep track of what is what,
is to make your variable names a bit more descriptive.
|
|
|
|
|
Cheers, I have managed to get it sorted now, thanks for the advice. I have managed to make another basic class program too. Thanks again.
|
|
|
|
|
Hi,
I've subclassed CComboBox. I've called WM_CTLCOLR_REFLECT. Which works perfectly well with the edit box. It's when I dropdown it's crashing the app. I want to able to change the colour of the listbox part as well.
I'm confident that someone here can supply code snippet that would solve the problem.
Thanks in advance,
Alton
|
|
|
|
|
Hi,
I'd like to be able to add items to cursor right-click menus in MS Word on-the-fly. For example, while editing a document I would like to add frequently used phrases to the context menu, then right-click and select a phrase, which would then be copied to the clipboard or copied into the document.
Any help on this topic or pointers will be appreciated. I couldn't find an Office-specific board to post this message, so I am posting it here!
Thanks in advance,
Todd
|
|
|
|
|
Hi there:
Has anyone had problems with crashes in a program that works perfectly in a Canadian/US Windows O/S, but has odd crashes when installed on a European Windows systems? Are there any problem places to look for possible errors? This crash occurs in the middle, not at initialization, at the beginning of loading a file.
I have been using plain ASCII not Unicode for some strings but these are hard coded. I know this is one of those idiotic non specific questions, but just sending it out in case someone has has seen this before.
Thanks in advance.
|
|
|
|
|
That's not really enough info to go by. But since you mentioned loading a file, are you by chance assuming the file will contain only ASCII (bytes 0-127), and your code breaks when it encounters data in another code page and/or characters above 127?
If you have the crash address, look that up in the .map file to find what function the address is in. If you don't currently make .map files, change your linker settings to do so and keep the .map file for any build you release publicly so you'll have them available in the future.
--Mike--
LINKS~! Ericahist updated! | 1ClickPicGrabber | CP SearchBar v2.0.2 | C++ Forum FAQ
Strange things are afoot at the U+004B U+20DD
|
|
|
|
|
Thank Michael. Good advice. One of my clients actually ran Dr. Watson and came up with the address at which it crashes, I checked the location, it was in cximage, but I coundn't trace back to where it had been called. I placed a breakpoint at the location indicated - it was a C0000005 error - reference to NULL pointer I believe, but oddly when I ran it never actually reaches this point in the execution, which to me means that something even odder is going on.
Microsoft (R) Windows 2000 (R) Version 5.00 DrWtsn32
Copyright (C) 1985-1999 Microsoft Corp. Alle Rechte vorbehalten.
Application exception occured:
Application: (pid=1544)
When: 07.02.2005 @ 19:02:44.078
Exception number: c0000005 (Zugriffsverletzung)
.
.
.
Status Image for Thread Identifier 0x614
eax=00000000 ebx=6c28376d ecx=0012f230 edx=ffffffff esi=0904f1c0 edi=0904f1c0
eip=0048e2d1 esp=0012f0ec ebp=0012f0f0 iopl=0 nv up ei pl zr na po nc
cs=001b ss=0023 ds=0023 es=0023 fs=0038 gs=0000 efl=00000246
Function: <nosymbols>
0048e2bd cc int 3
0048e2be cc int 3
0048e2bf cc int 3
0048e2c0 55 push ebp
0048e2c1 8bec mov ebp,esp
0048e2c3 51 push ecx
0048e2c4 894dfc mov [ebp+0xfc],ecx ss:00bd8fd6=????????
0048e2c7 6a00 push 0x0
0048e2c9 8b4dfc mov ecx,[ebp+0xfc] ss:00bd8fd6=????????
0048e2cc e8333c0c00 call CxImage::SelectionToHRGN+0x210d (00551f04)
ERROR ->0048e2d1 8b00 mov eax,[eax] ds:00000000=????????
0048e2d3 8be5 mov esp,ebp
0048e2d5 5d pop ebp
0048e2d6 c3 ret
0048e2d7 cc int 3
0048e2d8 cc int 3
0048e2d9 cc int 3
0048e2da cc int 3
0048e2db cc int 3
0048e2dc cc int 3
0048e2dd cc int 3
0048e2de cc int 3
*----> Stack Back Trace <----*
FramePtr ReturnAd Param#1 Param#2 Param#3 Param#4 Function Name
0012F0F0 0052F208 0904F1C0 00000000 0012F160 6C2788EE !CxImage::IsValid
0012F264 0052EA74 0904F318 09049FD8 090BD280 00000000 !CxImage::GetWidth
0012F320 0052E760 0012F340 0904F1C0 0012F3A0 6C2837A8 !CxImage::GetWidth
0012F330 6C2837A8 0012F340 00000000 6C2D369C 01010056 !CxImage::GetWidth
0012F3A0 6C279D0A 0904F1C0 0904F1C0 0013D878 00100090 !Ordinal4874
0012F418 6C2799D5 0000000F 00000000 6C2D4158 0012F434 !Ordinal5163
0012F438 6C2788EE 0000000F 00000000 00000000 008006C4 !Ordinal6374
0012F498 6C278AFB 00000000 000601C8 0000000F 00000000 !Ordinal1109
0012F4B8 6C2A13A8 000601C8 0000000F 00000000 00000000 !Ordinal1578
0012F4E4 77E02CA8 000601C8 0000000F 00000000 00000000 !Ordinal1579
0012F504 77E04764 6C2A136F 000601C8 0000000F 00000000 user32!GetSysColor
0012F520 77E04720 008F37B8 0000000F 00000000 00000000 user32!SetWindowTextW
0012F548 778A15EF 0012F558 00000018 008F37B8 0000000F user32!SetWindowTextW
0012F5E8 77E0577D 008006C4 00000001 6C27E710 008006C4 ntdll!KiUserCallbackDispatcher
008006C4 0000000F 00000000 00000000 000D2FEA 000001F9 user32!DispatchMessageA
.
.
.
eax=00130110 ebx=00150518 ecx=00000022 edx=00000000 esi=00150418 edi=00000100
eip=778839c7 esp=0b77fe28 ebp=0b77ff74 iopl=0 nv up ei pl nz na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=0038 gs=0000 efl=00000202
Function: NtReplyWaitReceivePortEx
778839bc b8ac000000 mov eax,0xac
778839c1 8d542404 lea edx,[esp+0x4] ss:0c229d0f=????????
778839c5 cd2e int 2e
778839c7 c21400 ret 0x14
778839ca 8b4710 mov eax,[edi+0x10] ds:00aa9fe6=????????
778839cd 8b483c mov ecx,[eax+0x3c] ds:00bd9ff6=????????
778839d0 f6400801 test byte ptr [eax+0x8],0x1 ds:00bd9ff6=??
778839d4 7502 jnz RtlCreateProcessParameters+0xd (77883cd8)
778839d6 03c8 add ecx,eax
778839d8 894de4 mov [ebp+0xe4],ecx ss:0c229e5a=????????
778839db 8b4710 mov eax,[edi+0x10] ds:00aa9fe6=????????
778839de 668b4038 mov ax,[eax+0x38] ds:00bd9ff7=????
778839e2 668945e0 mov [ebp+0xe0],ax ss:0c229e5b=????
778839e6 668945e2 mov [ebp+0xe2],ax ss:0c229e5b=????
778839ea 53 push ebx
*----> Stack Back Trace <----*
FramePtr ReturnAd Param#1 Param#2 Param#3 Param#4 Function Name
0B77FF74 77D2D9DB 77D2DD59 00150418 4014FF60 00000070 ntdll!NtReplyWaitReceivePortEx
0B77FFA8 77D2DD0B 0014F5A8 0B77FFEC 77E7987C 00150518 rpcrt4!RpcBindingSetOption
0B77FFB4 77E7987C 00150518 4014FF60 00000070 00150518 rpcrt4!RpcBindingSetOption
0B77FFEC 00000000 00000000 00000000 00000000 00000000 kernel32!SetThreadExecutionState
Status Image for Thread Identifier 0x560
eax=77a7e915 ebx=00000102 ecx=0014f5d0 edx=00000000 esi=77889153 edi=0b87ff74
eip=7788915e esp=0b87ff60 ebp=0b87ff7c iopl=0 nv up ei pl nz na po nc
cs=001b ss=0023 ds=0023 es=0023 fs=0038 gs=0000 efl=00000206
Function: ZwDelayExecution
77889153 b832000000 mov eax,0x32
77889158 8d542404 lea edx,[esp+0x4] ss:0c329e47=????????
7788915c cd2e int 2e
7788915e c20800 ret 0x8
*----> Stack Back Trace <----*
FramePtr ReturnAd Param#1 Param#2 Param#3 Param#4 Function Name
0B87FF7C 77E8AC79 0000EA60 00000000 77A50216 0000EA60 ntdll!ZwDelayExecution
00007530 00000000 00000000 00000000 00000000 00000000 kernel32!Sleep
Status Image for Thread Identifier 0x5f0
eax=77c673ab ebx=00000002 ecx=00000020 edx=00000000 esi=77893233 edi=00000002
eip=7789323e esp=0b97fe5c ebp=0b97fea8 iopl=0 nv up ei pl zr na po nc
cs=001b ss=0023 ds=0023 es=0023 fs=0038 gs=0000 efl=00000246
Function: NtWaitForMultipleObjects
77893233 b8e9000000 mov eax,0xe9
77893238 8d542404 lea edx,[esp+0x4] ss:0c429d43=????????
7789323c cd2e int 2e
7789323e c21400 ret 0x14
*----> Stack Back Trace <----*
FramePtr ReturnAd Param#1 Param#2 Param#3 Param#4 Function Name
0B97FEA8 77E03990 0B97FE80 00000001 00000000 0B97FEA0 ntdll!NtWaitForMultipleObjects
0B97FF04 77E03A5C 0B97FED0 77CA4190 0000EA60 00000041 user32!MsgWaitForMultipleObjectsEx
0B97FF20 77C62973 00000001 77CA4190 00000000 0000EA60 user32!MsgWaitForMultipleObjects
0B97FF74 77C6744C 0B97FFA0 0B97FFA4 0B97FFA8 0B97FF9C shlwapi!PathBuildRootW
0B97FFAC 77C673D4 0013C540 77E7987C 00000000 0015C538 shlwapi!Ordinal307
0B97FFEC 00000000 77C673AB 00000000 00000000 000000C8 shlwapi!Ordinal307
.
.
.
The breakpoint at SelectionToHRGN was never arrived at when trying to reproduce the error described - loading a file.
|
|
|
|
|
Yeah, that's a NULL ptr dereference. C0000005 is an access violation, meaning the code is accessing a bogus address. The line of the crash is mov eax,[eax] (dereferencing the address in eax ) but eax is zero.
If you use the same input file on an ENglish system, does the code run? If so, then I'd start by contacting the library's author and seeing if he knows about the problem.
--Mike--
LINKS~! Ericahist updated! | 1ClickPicGrabber | CP SearchBar v2.0.2 | C++ Forum FAQ
Strange things are afoot at the U+004B U+20DD
|
|
|
|
|