Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Устранение Ошибки 12150 при Работе с Файлами в Delphi 6 на Windows 7

Delphi , ОС и Железо , Windows

В данной статье мы рассмотрим проблему, с которой вы столкнулись при работе с файлами через URL в среде Delphi 6 на операционной системе Windows 7. Вы столкнулись с ошибкой 12150, когда пытались получить размер файла по URL, в то время как скачивание файла происходило успешно. Давайте шаг за шагом разберемся в причине возникновения этой ошибки и найдем способ ее устранения.

Пример кода для получения размера файла по URL

В вашем коде используется функция GetFileSize, которая с помощью компонентов WinInet пытается получить размер файла, отправив HTTP-запрос с получением информации о длине содержимого (HTTP_QUERY_CONTENT_LENGTH). Если запрос выполняется на компьютере, не защищенном прокси-сервером, то все работает корректно. Однако, при использовании защищенной сети, где установлено множество политик и используется прокси-сервер, возникает ошибка 12150.

function TDDWIToolObject.GetFileSize(out Size: Int64): boolean;
begin
  // Код функции...
end;

Анализ проблемы

Ошибка 12150 может быть вызвана различными причинами, включая проблемы с прокси-сервером, неправильные заголовки запроса, блокировки на уровне сетевого оборудования и др. В вашем случае, возможно, проблема связана с настройками прокси или с самим запросом, который не проходит через прокси должным образом.

Предложенное решение

В подтвержденном ответе предложено использовать функции HttpOpenRequest и HttpSendRequest вместо InternetOpenUrl. Это может помочь, так как эти функции предоставляют более гибкие возможности для настройки запроса и обработки ответов.

function GetRemoteFileSize(const Url : string): Integer;
begin
  // Код функции...
end;

Комментарии к коду

В предоставленном примере кода также есть функция ParseURL, которая разбирает URL на составляющие, и функция GetWinInetError, которая помогает получить описание ошибки WinInet.

Рекомендации

  • Убедитесь, что прокси-сервер настроен корректно и разрешает запросы на получение длины содержимого.
  • Проверьте, не блокируются ли запросы на уровне сетевого оборудования.
  • Проверьте, корректно ли формируются HTTP-заголовки в вашем запросе.

Заключение

Использование функции GetRemoteFileSize вместо вашего исходного кода может помочь решить проблему ошибки 12150. Обратите внимание, что некоторые HTTP-ответы могут не содержать заголовок Content-Length, но вместо этого использовать Transfer-Encoding: chunked, что делает необходимым полное скачивание файла для определения его размера.

Надеемся, что предложенные рекомендации помогут вам устранить ошибку и успешно работать с файлами в Delphi 6 на Windows 7.

Создано по материалам из источника по ссылке.

В статье рассматривается проблема возникновения ошибки 12150 при попытке получить размер файла по URL в среде Delphi 6 на Windows 7 и предлагаются способы её устранения.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Windows ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 01:54:35/0.0032241344451904/0