Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > CommandLine C++


Автор: Rutti 14.4.2005, 00:19
Получил при компиляции файл main.SUP следующего содержания:

//SUPPRESSIONPROJ:main
//VERSION:5.00
//ENABLE:Yes
ignore param 1 KERNEL32.DLL:WriteFile in module EXE
ignore failure KERNEL32.DLL:WriteFile in everywhere
ignore param 1 KERNEL32.DLL:ReadFile in module EXE

Что это значит?

Запустив BoundsChecker получаю кучу Invalid argument HeapAlloc, argument 1, HANDLE:0x00000000
потом Invalid argument WriteFile, argument 1, HFILE: 0x00010001
API failure: WriteFile returned 0x00000000. LastError: Неверный дескриптор. (6)
Invalid argument: ReadFile, argument 1, HFILE: 0x00000000
API failure: ReadFile returned 0x00000000. LastError: Неверный дескриптор. (6)

Код

#include <iostream>
#include <fstream>
#include <ctype>
#include <windows>
#include <string>
#include "main.h"

using namespace::std;

string Title(ifstream& file)
{
    string teg1 = "<title>", teg2 = "</title>", TitleString, Space=" ";
        char buffer[2048];

    file.getline(buffer,sizeof(buffer));

    if(strstr(buffer,teg1.c_str())!=NULL)
    {
         TitleString=buffer;
            
            if(strstr(buffer,teg2.c_str())!=NULL)
        {
            TitleString=TitleString.substr(TitleString.find(teg1)+teg1.size(),TitleString.find(teg2)-(TitleString.find(teg1)+teg1.size()));
//            cout<<TitleString<<endl;
        }
        else
        {
            file.getline(buffer,sizeof(buffer));
            TitleString+=Space+buffer;
            TitleString=TitleString.substr(TitleString.find(teg1)+teg1.size(),TitleString.find(teg2)-(TitleString.find(teg1)+teg1.size()));
//            cout<<TitleString<<endl;
        }
    }
    else
    {
        string TEG1, TEG2;
        for(int i=0; i<teg1.size(); ++i)
            TEG1+=toupper(teg1[i]);
        
        if(strstr(buffer,TEG1.c_str())!=NULL)
        {
            TitleString=buffer;

            for(int i=0; i<teg2.size(); ++i)
                TEG2+=toupper(teg2[i]);

            if(strstr(buffer,TEG2.c_str())!=NULL)
            {
                TitleString=TitleString.substr(TitleString.find(TEG1)+TEG1.size(),TitleString.find(TEG2)-(TitleString.find(TEG1)+TEG1.size()));
//                cout<<TitleString<<endl;
            }
            else
            {
                file.getline(buffer, sizeof(buffer));
                TitleString+=Space+buffer;
                TitleString=TitleString.substr(TitleString.find(TEG1)+TEG1.size(),TitleString.find(TEG2)-(TitleString.find(TEG1)+TEG1.size()));
//                cout<<TitleString<<endl;
            }
        }
    }

    string sim1="&nbsp;";    

    while(TitleString.find(sim1)<TitleString.size())
    {
        cout<<TitleString.find(sim1)<<endl;    
        TitleString=TitleString.replace(TitleString.find(sim1), sim1.size(), " ");
        cout<<TitleString<<endl;
    }
    
    return TitleString;    
}

int main()
{
    cout<<"‚ўҐ¤ЁвҐ Ё¬п д ©« : "<<endl;
    string OpenFile;
    cin>>OpenFile;
    cout<<"ЋвЄалў Ґ¬ д ©«..."<<endl;
    ifstream file(OpenFile.c_str());

    if(!file)
    {
        cout<<"?Ґ ®вЄалў Ґвбп д ©«"<<endl;
        return 0;
    }
    else
        cout<<"” ©« ®вЄалв!"<<endl;

        while(file)
        {
        string Res=Title(file);

        if(Res.size()!=0)
            MessageBox(NULL, Res.c_str(), " ", MB_OK|MB_ICONINFORMATION);
    }
    return 0;
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)