![Shoutbox](images/mpl/msgpluslive-logo.png)
C++ help - Printable Version
-Shoutbox (https://shoutbox.menthix.net)
+-- Forum: MsgHelp Archive (/forumdisplay.php?fid=58)
+--- Forum: Skype & Technology (/forumdisplay.php?fid=9)
+---- Forum: Tech Talk (/forumdisplay.php?fid=17)
+----- Thread: C++ help (/showthread.php?tid=37460)
C++ help by Millenium_edition on 01-25-2005 at 01:55 PM
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?
RE: C++ help by Concord Dawn on 01-25-2005 at 01:59 PM
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? ![:)](images/smilies/msn_happy.gif)
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.
RE: RE: C++ help by Millenium_edition on 01-25-2005 at 02:09 PM
tried the GNU c++ compiler, didn't work either.
nmv, found the bug. stupid messagebox call. >.<
RE: C++ help by RaceProUK on 01-26-2005 at 09:38 AM
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.
RE: C++ help by segosa on 01-26-2005 at 06:35 PM
code: char tmp[2];
tmp[0]=tempchar;
tmp[1]='\0';
MessageBox(NULL,tmp,NULL,NULL);
RE: C++ help by TheBlasphemer on 01-26-2005 at 06:59 PM
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
RE: RE: C++ help by Millenium_edition on 01-26-2005 at 07:39 PM
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 ![:P](images/smilies/msn_tongue.gif)
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 )
RE: C++ help by RaceProUK on 01-26-2005 at 09:06 PM
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 ![:P](images/smilies/msn_tongue.gif)
Wasn't looking at the cast: i was looking at the caption argument.
RE: C++ help by zaidgs on 01-28-2005 at 02:50 AM
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
|