Приветствую Вас! Я указываю в ListBox'e, например, n (n < 10) URL-адресов. Как мне с помощью Delphi сохранить их на винч (с картинками или в виде *.mht-файлов) и можно ли это сделать в n потоков? И вообще, где можно почитать о работе в Delphi c Интернет? Спасибо.
Приветствую Вас, Ole! Po luchshe obyasni! Ответ отправлен: 13.03.2004, 09:35 Отправитель: THE_PRO Отвечает sir henry
Доброе время суток, Ole! 1. А Вы не можете переформулировать вопрос? Чтобы сохранить менее чем 10 URL (даже весьма большой длины) хватит каких-то долей секунды, без всякой многопоточности. Видимо Вы что-то другое именли в виду :)). 2. Зайдите на http://www.podgoretsky.com/ddp.html и скачайте оттуда документик под названием "Интернет решения от доктора Боба". Кроме этого, там есть еще масса любопытных документов по Дельфи. Ответ отправлен: 13.03.2004, 09:25 Отправитель: sir henry Отвечает samum2000
Приветствую вас,Ole! Можно использовать такую фунцию (в секцию uses надо добавить URLMon и ShellApi). function DownloadFile(SourceFile, DestFile: string): Boolean; begin try Result := UrlDownloadToFile(nil, PChar(SourceFile), PChar(DestFile), 0, nil) = 0; except Result := False; end; end; -------------------------- -=Experts helper: testmode=- Ответ отправлен: 14.03.2004, 11:43 Отправитель: samum2000 Отвечает Boriss
Добрый день, Ole! Посмотри, например, http://www.proglib.ru/articles/art0000011.asp http://rsdn.ru/article/qna/inet/email.xml http://www.winsov.com/delphi062.php А почему бы через потоки и нет? Твоя программа - это тоже поток :)) Ответ отправлен: 13.03.2004, 14:20 Отправитель: Boriss Отвечает Pawel
Добрый день, Ole! В потоке можно, твоя прога - это и есть поток. Ответ отправлен: 14.03.2004, 12:34 Отправитель: Pawel
Вопрос № 1410
Пояснение к вопросу 1409. Извините за не корректный вопрос. Задача значит такая: пишем в listBox'e URL-адрес и жмем на Button. Происходит подключение к Интеу и скачивание этой странички на винч (типа offline explorer'a только без уровней). Я не знаю как реализовать функцию сохранения этой странички. Подскажите. Теперь вроде порядок. Ole.
Приветствую вас,Ole! Можно еще такую функцию использовать: function DownloadFile(const FileURL, FileName: String): Cardinal; var hSession, hFile: HInternet; Buffer: array[1..1024] of Byte; BufferLen, fSize: LongWord; f: File; begin Result := 0; hSession := InternetOpen('STEROID Download', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0); if Assigned(hSession) then begin hFile := InternetOpenURL(hSession, PChar(FileURL), nil, 0, INTERNET_FLAG_RELOAD, 0); if Assigned(hFile) then begin AssignFile(f, FileName); Rewrite(f,1); fSize := 0; repeat InternetReadFile(hFile, @Buffer, SizeOf(Buffer), BufferLen); BlockWrite(f, Buffer, BufferLen); fSize := fSize + BufferLen;
until (BufferLen = 0); CloseFile(f); Result := fSize; InternetCloseHandle(hFile); end; InternetCloseHandle(hSession); end; end; -------------------------- -=Experts helper: testmode=- Ответ отправлен: 14.03.2004, 11:47 Отправитель: samum2000 Отвечает Boriss
Добрый день, Ole! Только что отослал ответ с ссылками на статьи. Повторю: http://www.proglib.ru/articles/art0000011.asp как качать файлы с помощью Delphi Ответ отправлен: 13.03.2004, 14:23 Отправитель: Boriss Отвечает THE_PRO
Доброе время суток, Ole! Ispolzuy klass TDownlodURL Ответ отправлен: 15.03.2004, 16:01 Отправитель: THE_PRO
Вопрос № 1411
Среда разработки - дельфи 6 программа - что делает не важно.. тама все правильно раздражает то, что из-за hint'ов не хочет запускаться.. что делать?? Сonsole apllication причем хинты типа "переменная определена, но не используется ( а она очень даже используется =/ ) Прога большая - не поместилася, да и думаю, не очень нужна в этой ситуации
Добрый день, Эланор! До сих пор не видел программы, которая из-за hint'ов не хочет загружаться в Выньдах. А вот консольное - у него ведь нет методов для обработки таких штук - можно думать о такой программе, как о ДОС-овской. Она ничего не умеет Поэтому, хоть критическую часть кода Вашей программы привести надо. Создайте маленькую демку с той-же проблемой, чтобы можно было понять, что Вы "не так" делаете Ответ отправлен: 15.03.2004, 10:40 Отправитель: Boriss Отвечает samum2000
Приветствую вас,Эланор! Я думаю, что дело не в хинтах - это даже не предупреждения, а просто подсказки. Может у вас где-то среди них затерялся Error? Если другие, более простые консольные приложения компилируются, то ошибка в вашем проекте, если нет - то, может быть, в настройках. -------------------------- -=Experts helper: testmode=- Ответ отправлен: 14.03.2004, 11:51 Отправитель: samum2000 Отвечает Pawel
Приветствую Вас, Эланор! Из-за hint'ов??? Всё должно работать. Либо у вас ошибка в проге, либо она отрабатывает, но незаметно для вас.
Ответ отправлен: 14.03.2004, 12:39 Отправитель: Pawel Отвечает sir henry
Доброе время суток, Эланор! Хинты - это всего лишь советы компилятора, это не ошибка, поэтому из-за них незапускаться она не может. Может быть все-таки гдето ошибочку пропустили? Это с одной стороны. Не запускается - ладно. А она компилируется? Это важный момент. Попробуйте ее скомпилировать в командной строке. Для этого в первую строку программы должно быть внесено: {$APPTYPE CONSOLE} тогда компилируется так: dcc32 Ваш_файл.dpr Ответ отправлен: 15.03.2004, 13:19 Отправитель: sir henry Отвечает THE_PRO
Здравствуйте, Эланор! Nu i che eto znachit... kakoy vopros to ? Ответ отправлен: 15.03.2004, 15:59 Отправитель: THE_PRO
Вопрос № 1412
Здраствуйте уважаимые мои! Короче функция компилируеца но при вызове выпрыгивает ERROR. Ето я не так файл читаю наверно, виправите мне ошибку. Если вас незатруднит
Доброе время суток, OL! CloseFile(h) попробуйте Ответ отправлен: 14.03.2004, 12:56 Отправитель: Pawel Отвечает Boriss
Здравствуйте, OL! 1) Вы уверены, что файл открылся? То есть, может нечего закрывать. Хотя бы какое сообщение об ошибке. 2) Может Pavel и прав - handle на файл - это особый тип дескриптора 3) что делает ReadFile - не закрывает ли? Ответ отправлен: 15.03.2004, 10:49 Отправитель: Boriss Отвечает samum2000
Приветствую вас,OL! Писать, вроде, надо так: h:=createfile(FileName, GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0); Зачем эта вставка на asm'е? Неужели нельзя написать ReadFile(h, s1, 65525, m, nil); //Да, m должна быть типа DWORD (cardinal)! И еще, посмотрите в приложении, как это же можно реализовать проще (на мой взгляд). -------------------------- -=Experts helper: testmode=-
Приложение: Ответ отправлен: 15.03.2004, 12:10 Отправитель: samum2000 Отвечает sir henry
Здравствуйте, OL! Вы зря не проверяете, что у Вас выдает функция CreateFile. Может быть файл никакой и не открывается? :)) Имя файла сделайте лучше PChar или, если хотите, то приводите его к типу PChar: FileName: string; h:=CreateFile(PChar(FileName), ...); Ответ отправлен: 15.03.2004, 13:39 Отправитель: sir henry
Вопрос № 1413
Приветствую! значит делаю так: MSWord: Variant; ... MsWord := CreateOleObject('Word.Application'); MSWord.ActiveDocument.Content.Find.ClearFormatting; MSWord.ActiveDocument.Content.Find.Replacement.ClearFormatting; MSWord.ActiveDocument.Content.Find.Execute(FindText:='#строка', ReplaceWith:='', Replace:=1); Как после того как он нашел слово '#строка' и заменил на '', мне необходимо вставить текст (много строк - заменой не получается, пишет слишком длинный аргумент), у меня он вставляет в их в конец документа, а нужно сразу после заменяемого слова... MSWord.ActiveDocument.Range.InsertAfter(Text:=ms_value); я думаю надо получить позицию курсора после замены и вставить в MSWord.ActiveDocument.Range(Start := vstart,end := vend).Select; Но вот как получить vstart?
Здравствуйте, Ландграф Павел! Вам нужно получить Range от начала документа до позиции курсора, тогда вставит куда нужно. Ответ отправлен: 15.03.2004, 13:42 Отправитель: sir henry Отвечает samum2000
Приветствую вас,Ландграф Павел! Попробуй процедуру из приложения. Может так будет удобней. -------------------------- -=Experts helper: testmode=-
Приложение: Ответ отправлен: 15.03.2004, 13:47 Отправитель: samum2000
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.