What happened to the Messenger Plus! forums on msghelp.net?
Shoutbox » MsgHelp Archive » Skype & Technology » Tech Talk » C++ help

C++ help
Author: Message:
Millenium_edition
Veteran Member
*****

Avatar

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 :dodgy:

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
Profile E-Mail PM Find Quote Report
Concord Dawn
Veteran Member
*****

Avatar
This is a loopy fruit.

Posts: 1203
Reputation: 16
33 / Male / –
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 :dodgy:

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.
[Image: 7.png]
01-25-2005 01:59 PM
Profile E-Mail PM Find Quote Report
Millenium_edition
Veteran Member
*****

Avatar

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
Profile E-Mail PM Find Quote Report
RaceProUK
Elite Member
*****

Avatar

Posts: 6073
Reputation: 57
39 / Male / Flag
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.
[Image: spartaafk.png]
01-26-2005 09:38 AM
Profile PM Web Find Quote Report
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
Profile PM Find Quote Report
TheBlasphemer
Senior Member
****

Avatar

Posts: 714
Reputation: 47
36 / – / –
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 :P
[Image: theblasp.png]
01-26-2005 06:59 PM
Profile PM Find Quote Report
Millenium_edition
Veteran Member
*****

Avatar

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 :P

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 :p

(thanks to everyone :) )
01-26-2005 07:39 PM
Profile E-Mail PM Find Quote Report
RaceProUK
Elite Member
*****

Avatar

Posts: 6073
Reputation: 57
39 / Male / Flag
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 :P
Wasn't looking at the cast: i was looking at the caption argument.
[Image: spartaafk.png]
01-26-2005 09:06 PM
Profile PM Web Find Quote Report
zaidgs
Full Member
***

Avatar

Posts: 290
– / Male / –
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 :S]) 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
Profile PM Web Find Quote Report
« Next Oldest Return to Top Next Newest »


Threaded Mode | Linear Mode
View a Printable Version
Send this Thread to a Friend
Subscribe | Add to Favorites
Rate This Thread:

Forum Jump:

Forum Rules:
You cannot post new threads
You cannot post replies
You cannot post attachments
You can edit your posts
HTML is Off
myCode is On
Smilies are On
[img] Code is On