Показать сообщение отдельно
Старый 27.09.2007, 11:30   #6  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2476 (88) +++++++++
Регистрация: 20.08.2005
Переделывать надо, чтобы сохранять в файл, а не преобразовывать в строку.
PS. Добавьте такой метод в класс WinInet
X++:
#winapi
int internetSaveFile(int hdl, str _fileName)
{
    Binary _buffer = new Binary(2048);
    Binary _bytesRead = new Binary(4);
    int cnt = 0;
    boolean ret;
    DLLFunction     fileCreate;
    DLLFunction     writeFile;
    DLL             dll = new Dll(@"KERNEL32.DLL");
    int             hFile;
    ;
    if (_fileName)
    {
        fileCreate     = new DLLFunction(dll, @"CreateFileA");
        fileCreate.returns(ExtTypes::DWord);
        fileCreate.arg(ExtTypes::String,
                        ExtTypes::DWord,
                        ExtTypes::DWord,
                        ExtTypes::DWord,
                        ExtTypes::DWord,
                        ExtTypes::DWord,
                        ExtTypes::DWord);

        writeFile = new DllFunction(dll, @"WriteFile");
        writeFile.arg(ExtTypes::DWord, ExtTypes::Pointer, ExtTypes::DWord, ExtTypes::Pointer, ExtTypes::DWord);
        writeFile.returns(ExtTypes::DWord);

        hFile = fileCreate.call(_fileName, #GENERIC_WRITE, 0, 0, #CREATE_ALWAYS, 0, 0);
        while (hFile != #INVALID_HANDLE_VALUE)
        {
            ret = _internetReadFile.call(hdl,_buffer,2000,_bytesRead);
            if (ret && _bytesRead.dWord(0))
            {
                cnt += _bytesRead.dWord(0);
                writeFile.call(hFile, _buffer, _bytesRead.dWord(0), _bytesRead, 0);
            }
            else
                break;
        }
        if (hFile != #INVALID_HANDLE_VALUE)
            winapi::closeHandle(hFile);
    }
    return cnt;
}
Ну и джоб для проверки
X++:
static void internetSaveFile(Args _args)
{
    WinInet     winInet;
    int         hdl;
    ;
    winInet = new WinInet();
    hdl = winInet.internetOpenUrl("http://www.axforum.info/forums/customavatars/avatar4154_1.gif");
    info (strfmt("%1 байт записано", winInet.internetSaveFile(hdl, "c:\\temp\\avatar4154_1.gif")));
}
__________________
Axapta v.3.0 sp5 kr2

Последний раз редактировалось AndyD; 27.09.2007 в 12:05.
За это сообщение автора поблагодарили: Raven Melancholic (2), ziva (2).