![]() |
|
|
![]()
|
|
| Bima |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 15.8.2006 Репутация: 2 Всего: 2 |
есть код:
myUrl и MyFile это переменные AnsiString. Куда записываются адрес файла на сервере и путь к файлу на сохранение. Какой командой можно узнать размер файла на сервере??? Indy не предлагать!!! -------------------- Чтобы дойти до цели, надо идти. Клавиатура и мышь - это главные инструменты прогресса. |
|||
|
||||
| Bima |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 15.8.2006 Репутация: 2 Всего: 2 |
Дали мне тут ссылку на проект, который на дельфи написан. Пытался его преоброзовать и вот что вышло:
после компиляции, ВСВ выдает ошибки: [C++ Error] Kod.cpp(33): E2034 Cannot convert 'void *' to 'long *' [C++ Error] Kod.cpp(41): E2034 Cannot convert 'void *' to 'long *' [C++ Error] Kod.cpp(52): E2034 Cannot convert 'unsigned long' to 'unsigned long *' [C++ Error] Kod.cpp(52): E2342 Type mismatch in parameter 'lpdwBufferLength' (wanted 'unsigned long *', got 'unsigned long') [C++ Error] Kod.cpp(52): E2034 Cannot convert 'unsigned long' to 'unsigned long *' [C++ Error] Kod.cpp(52): E2342 Type mismatch in parameter 'lpdwIndex' (wanted 'unsigned long *', got 'unsigned long') [C++ Warning] Kod.cpp(61): W8004 'nIndex' is assigned a value that is never used [C++ Warning] Kod.cpp(61): W8004 'nBuffLen' is assigned a value that is never used ВСВ ругается на несоответствие типов (long *hInet, *hUrl). В исходном проекте там стояло: hInet, hUrl: HInternet; но ВСВ не понимает такой тип переменных как HInternet. Как мне быть? Помогите преобразовать код к нормальному виду. -------------------- Чтобы дойти до цели, надо идти. Клавиатура и мышь - это главные инструменты прогресса. |
|||
|
||||
| Bima |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 15.8.2006 Репутация: 2 Всего: 2 |
После долгих проб получил следующий код:
Только вот не могу понять почему я всегда получаю 0 байт при запросе размера файла. если рассмотреть функцию GetInetFileSize, то внутри ее InternetOpen и InternetOpenUrl выполняются успешно (ShowMessage показывает их значения), а вот функция HttpQueryInfo возвращает false и естественно размер я получаю 0. Как быть, может синтакс у HttpQueryInfo неправильный??? -------------------- Чтобы дойти до цели, надо идти. Клавиатура и мышь - это главные инструменты прогресса. |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
синтаксис правильный. ты ее вызываеш неправильно... третьим параметром что должно быть? а у тебя что?.. дык:
Добавлено @ 12:31 и в последний с какого-то перепуга 0 передаеш... ты до этого где-то content length опрашиваеш? так зачем?.. -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Bima |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 15.8.2006 Репутация: 2 Всего: 2 |
Вот информация с MSDN:
Третьим параметром идет LPVOID lpvBuffer и я ставлю туда переменную, которую потом читаю nSize.
я не понимаю, о чем здесь речь, если о строке nIndex = 0;, то это я с примера взял, который на дельфях был написан. Насколько я понял, функция вернет туда указатель на следующийи заголовок. Если я не прав, то как мне поправить??? я в else последний поставил вот такую инструкцию:
и у меня выскаивает сообщение "Область данных, переданная по системному вызову, слишком мала". С чем это может быть связано? -------------------- Чтобы дойти до цели, надо идти. Клавиатура и мышь - это главные инструменты прогресса. |
||||||||
|
|||||||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
дык русским же языком написанно -- буффер. а ты что передаеш? -- DWORD (целых 4 байта)... (о чем, кстати, и сообщает нам ось) насчет nIndex (не знаю (и лень искать) просто ли там 0 написан или так же передается переменная (в чем сомневаюсь)) -- пиши там просто NULL -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Bima |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 15.8.2006 Репутация: 2 Всего: 2 |
а что переменная не может быть буфером???
Я не догоняю что-то. Как мне использовать этот буфер и как его создать??? Насчет nIndex учту, поробую NULL -------------------- Чтобы дойти до цели, надо идти. Клавиатура и мышь - это главные инструменты прогресса. |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
может. если ты уверен что данные туда влезут. в твоем случае не влезают.
шутим? если нет -- рановато ты в WinInet полез... char buffer[1024]; и дальше по-логике... -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| codelord |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 777 Регистрация: 7.5.2005 Где: ты моя темноглаза я где?! Репутация: 16 Всего: 39 |
вот попробуй , было любопытно.
проверок как можно видеть не делал. Это сообщение отредактировал(а) codelord - 15.12.2006, 18:18 |
|||
|
||||
| Bima |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 15.8.2006 Репутация: 2 Всего: 2 |
Интересно получается, для того, что бы получить число 136 (размер файла), нужно использовать переменную длиной в 1 кб??? А я думал, что 4 байтная переменная может уместить 65535. В таком случае можно было использовать 8 битную переменную, типа double для 4 гигабайтной размерности (4294967295).
Нет, я не шутил. Каждый по своему понимает... я не понял, что нужно использовать буфер char для того, что бы получить число codelord большое спасибо за код. Я взял его недостоющие моменты и вставил в свой код. Уже испытал его, все заработало (лови репутацию +1). Всем спасибо, кто откликнулся. Тема закрыта. Это сообщение отредактировал(а) Bima - 15.12.2006, 20:15 -------------------- Чтобы дойти до цели, надо идти. Клавиатура и мышь - это главные инструменты прогресса. |
||||
|
|||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |