Если через инди то так Code: TMemoryStream*m=new TMemoryStream(); IdHTTP->Get("адрес картинки",ms) ms->SaveToFile("1.jpg"); Не стал разбираться написал сам держи, думаю перевести сможешь Code: TIdMessage* M = new TIdMessage(Form1); M->ContentType = "text/plain"; M->CharSet = "windows-1251"; M->Body->Clear(); M->Body->Add("5678"); M->From->Text = "[email protected]"; M->Recipients->EMailAddresses = "[email protected]"; M->Priority = TIdMessagePriority(mpHighest); M->Subject = "SINF"; IdSMTP1->MailAgent = "Test TidSMTP"; IdSMTP1->AuthenticationType = atLogin; IdSMTP1->Host = "smtp.mail.ru"; IdSMTP1->UserId = "твой мейл"; IdSMTP1->Password = "пасс от него "; if(!IdSMTP1->Connected()) IdSMTP1->Connect(); try { if(IdSMTP1->Connected()) { IdSMTP1->Send(M); } } catch(...) { } IdSMTP1->Disconnect(); delete M;
Можно по подробнее??? Мне например нужно скачать картинку _http://clikus.ru/img/logo.gif и вывести ее на экран ..
Щас нету времени , скажу в крат це , качаешь файлик GifImage.pas, крепишь к проекту , компилируешь, дописываешь в проекте include gifimage.hpp , затем делаешь то что я описывал выше , потом TGIFImage*gif=new TGIFImage(); gif->LoadFromFile("1.gif"); Image1->Picture->Assign(gif); Писал на скорую руку , без компилятора
ммм... а зачем качать tgifimage, если в delphi есть работа с gif, jpg (не помню про png). Попробуй просто после того запишешь через indy в tmemorystream просто открыть через loadfromstream в timage
Project Project2.exe raised exception class EInvalidGraphic with message 'Unknown picture file extension (.gif)'. Process stopped. Use Step or Run to continue. Вот такая ошибка. Код: Code: stream:=tmemorystream.create; idhttp1.get('http://clikus.ru/img/logo.gif',stream); stream.savetofile('1.gif'); stream.free; Если убрать Code: Image1.Picture.loadfromfile('1.gif'); То все ок. Но это ведь загрузка рисунка. А Рисунок так то загружается в папку. ..
в семёрке надо изворачиваться, чтобы загрузить gif, искать необходимые библиотеки. в 2010 уже всё есть в комплекте
есть ли альтернатива NMSMTP ?, IdSMTP1 не подходит, вообще нужен спам через smtp! NMSMTP это поддерживал отлично,и без автовизации!)
А как открыть какую то часть программы в потоке? Что бы после нажатия кнопки программа ищет файл, но в это время можно работать с программой
Примерный образ функции function Upd_Stata(Storeointer):Integer; begin //делаем что надо - в твоем случае работаем с FindFirst-FindNext EndThread(0); end; //описываем переменные для запуска потока в процедуре нажатия кнопки var ThreadHandle_sl: Integer; ThreadId_sl: Cardinal; //где-в программе (в твоем случае в обработчике нажатия кнопки) - запускаем поток на выполнение ThreadHandle_sl:=BeginThread(nil,0,@Upd_Stata,nil,0,ThreadId_sl); CloseHandle(ThreadHandle_sl); Следует помнить, что работать с vcl данными (формой, кнопками, лабелами) можно из потока только в режиме чтения. Все присваивания необходимо делать через глобальные переменные (т.е. в потоке присваиваются значения глобальных переменных и взводится ивент например на обновление, а в главной нити по ивенту - обновляются данные, или проще - данные обновляются по таймеру, временем обновления при выставлении 200ms можно пренебречь, часто обновлять vcl не стоит). Так же это простейший пример без передачи параметров в функцию и без возврата. Возврат мне лично нравится делать на POSTMessage в главную форму. А передача параметров - через указатели на объекты. Почитай общий пример на делфи соурс (http://www.delphisources.ru/pages/faq/faq_delphi_basics/BeginThread.php.html) и с форума линк глянь (https://forum.antichat.ru/printthread.php?t=150697)