C++ help |
Author: |
Message: |
Millenium_edition
Veteran Member
Posts: 1787 Reputation: 57
Joined: Apr 2003
|
O.P. C++ help
Yesterday I realized my MSN servers app was widely used... So I decided to make a new version, with new features and stuff. But i wanted to do it in c++.
My problem: i get a bug, and I don't understand why
I wrote this piece of code to try to get the number of servers.
code: #include <windows.h>
#include <fstream.h>
int GetEntries(char* buffer, long int size);
int main(int argc, char* argv[])
{
fstream servers("msnservers.dat",ios::in | ios::binary | ios::ate);
long int fileSize;
fileSize = servers.tellg();
char* fileBuffer;
fileBuffer = new char[fileSize];
servers.seekg(0);
servers.read(fileBuffer,fileSize);
servers.close();
int entries=GetEntries(fileBuffer,fileSize);
MessageBox(0,reinterpret_cast<const char*>(entries),'\0',0);
delete[] fileBuffer;
return 0;
}
int GetEntries(char* buffer, long int Size) {
char tempchar;
int temp = 0;
for(int i = 0; i < Size; i++) {
tempchar=buffer[i];
MessageBox((HWND)0,reinterpret_cast<const char*>(tempchar),'\0',0);
}
return temp;
}
it gives me the ugly XP crash box. (I'm using ms vc++ 6 as a compiler, and I'm happy with it.)
Now, could someone please tell me what's wrong?
|
|
01-25-2005 01:55 PM |
|
|
Concord Dawn
Veteran Member
This is a loopy fruit.
Posts: 1203 Reputation: 16
34 / / –
Joined: Feb 2004
|
RE: C++ help
quote: Originally posted by Millenium_edition
Yesterday I realized my MSN servers app was widely used... So I decided to make a new version, with new features and stuff. But i wanted to do it in c++.
My problem: i get a bug, and I don't understand why
I wrote this piece of code to try to get the number of servers.
code: #include <windows.h>
#include <fstream.h>
int GetEntries(char* buffer, long int size);
int main(int argc, char* argv[])
{
fstream servers("msnservers.dat",ios::in | ios::binary | ios::ate);
long int fileSize;
fileSize = servers.tellg();
char* fileBuffer;
fileBuffer = new char[fileSize];
servers.seekg(0);
servers.read(fileBuffer,fileSize);
servers.close();
int entries=GetEntries(fileBuffer,fileSize);
MessageBox(0,reinterpret_cast<const char*>(entries),'\0',0);
delete[] fileBuffer;
return 0;
}
int GetEntries(char* buffer, long int Size) {
char tempchar;
int temp = 0;
for(int i = 0; i < Size; i++) {
tempchar=buffer[i];
MessageBox((HWND)0,reinterpret_cast<const char*>(tempchar),'\0',0);
}
return temp;
}
it gives me the ugly XP crash box. (I'm using ms vc++ 6 as a compiler, and I'm happy with it.)
Now, could someone please tell me what's wrong?
The compiler? I = total n00b in C++, but have you tried using a different compiler? I was doing a VB program in school once and I had to use a different compiler because VBStudio didn't work. Had to eventually get it reinstalled.
|
|
01-25-2005 01:59 PM |
|
|
Millenium_edition
Veteran Member
Posts: 1787 Reputation: 57
Joined: Apr 2003
|
O.P. RE: RE: C++ help
tried the GNU c++ compiler, didn't work either.
nmv, found the bug. stupid messagebox call. >.<
This post was edited on 01-25-2005 at 03:48 PM by Millenium_edition.
|
|
01-25-2005 02:09 PM |
|
|
RaceProUK
Elite Member
Posts: 6073 Reputation: 57
39 / /
Joined: Oct 2003
|
RE: C++ help
quote: Originally posted by Millenium_edition
code: MessageBox((HWND)0,reinterpret_cast<const char*>(tempchar),'\0',0);
I'm surprised that compiled, sort of. Passing a char when you need a char* should be picked up by the compiler.
|
|
01-26-2005 09:38 AM |
|
|
segosa
Community's Choice
Posts: 1407 Reputation: 92
Joined: Feb 2003
|
RE: C++ help
code: char tmp[2];
tmp[0]=tempchar;
tmp[1]='\0';
MessageBox(NULL,tmp,NULL,NULL);
The previous sentence is false. The following sentence is true.
|
|
01-26-2005 06:35 PM |
|
|
TheBlasphemer
Senior Member
Posts: 714 Reputation: 47
37 / – / –
Joined: Mar 2004
|
RE: C++ help
quote: Originally posted by raceprouk
quote: Originally posted by Millenium_edition
code: MessageBox((HWND)0,reinterpret_cast<const char*>(tempchar),'\0',0);
I'm surprised that compiled, sort of. Passing a char when you need a char* should be picked up by the compiler.
not if you tell it explicitly to reinterpret cast
|
|
01-26-2005 06:59 PM |
|
|
Millenium_edition
Veteran Member
Posts: 1787 Reputation: 57
Joined: Apr 2003
|
O.P. RE: RE: C++ help
quote: Originally posted by TheBlasphemer
quote: Originally posted by raceprouk
quote: Originally posted by Millenium_edition
code: MessageBox((HWND)0,reinterpret_cast<const char*>(tempchar),'\0',0);
I'm surprised that compiled, sort of. Passing a char when you need a char* should be picked up by the compiler.
not if you tell it explicitly to reinterpret cast
I did that because it gave me an error if I didn't, but that's probably my fault
i realized that afterwards. but I'm a c++ noob atm
(thanks to everyone )
|
|
01-26-2005 07:39 PM |
|
|
RaceProUK
Elite Member
Posts: 6073 Reputation: 57
39 / /
Joined: Oct 2003
|
RE: C++ help
quote: Originally posted by TheBlasphemer
quote: Originally posted by raceprouk
quote: Originally posted by Millenium_edition
code: MessageBox((HWND)0,reinterpret_cast<const char*>(tempchar),'\0',0);
I'm surprised that compiled, sort of. Passing a char when you need a char* should be picked up by the compiler.
not if you tell it explicitly to reinterpret cast
Wasn't looking at the cast: i was looking at the caption argument.
|
|
01-26-2005 09:06 PM |
|
|
zaidgs
Full Member
Posts: 290
– / / –
Joined: Oct 2003
|
RE: C++ help
being a noob (i am an intermediate-level c++ programmer [or whtevr, i cannot find the correct expression, excuse my poor english ]) i suggest u keep away from reinterpret_cast as fire!!
use static_cast, or dynamic_cast instead
This post was edited on 01-28-2005 at 02:57 AM by zaidgs.
|
|
01-28-2005 02:50 AM |
|
|
|