|  27.09.2007, 09:17 | #1 | 
| Участник | Как сделать Image.loadFile по протоколу HTTP 
			
			В данный момент печатаем сертификаты, хранящиеся в локальной сети примерно таким образом: в дата методе объекта BitMap в дизайне отчета такой код (всякие проверки пропущены): X++: sertImage = new Image(); sertImage.loadFile(fileImage); return sertImage.getData(); http://yyy.xxx.ru/Sertificate/files/12345.bmp Понятно, что loadFile уже не применить. Есть ли какие-либо способы загрузить в BitMap картинку по протоколу HTTP? | 
|  | 
|  27.09.2007, 09:31 | #2 | 
| Участник | 
			
			А может проще хранить в базе данных?
		 | 
|  | 
|  27.09.2007, 09:38 | #3 | 
| Участник | 
			
			Увы, не проще. Есть Акса в центральном офисе и крупных филиалах, а в небольших филиалах вообще УПП используется. Кроме того, клиенты, зайдя на сайт должны иметь возможность распечатать недостающие сертификаты, а хранить в разных местах уже не хочется (синхронизировать в нескольких местах сертификаты 15 фабрик, причем выписываемых на каждую партию жуткая проблема)
		 | 
|  | 
|  27.09.2007, 10:39 | #4 | 
| Гость | 
			
			закачайте файл (класс WinInet), а затем как обычно
		 | 
|  | 
|  27.09.2007, 10:54 | #5 | 
| Участник | |
|  | 
|  27.09.2007, 11:30 | #6 | 
| Участник | 
			
			Переделывать надо, чтобы сохранять в файл, а не преобразовывать в строку. 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). | |