Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 569

Раздел: Delphi » Прочее
/ вопрос закрыт /

Здравствуйте, уважаемые эксперты!
Подскажите, пожалуйста, как мне избавиться от ошибки Invalid pointer operation в этом коде.
Закомментировав
status := TBindStatusCallback.Create;
я получаю работоспособный компонент, вот только callback мне нужен.

К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)

Приложение:
  1. function DownloadFile(SourceFile, DestFile: string): boolean;
  2.  
  3. begin
  4. try
  5. Result := UrlDownloadToFile(nil, PChar(SourceFile), PChar(DestFile), 0,
  6. status) = 0;
  7. except
  8. Result := False;
  9. end;
  10. end;
  11.  
  12.  
  13. procedure TLoadThread.Execute;
  14.  
  15. var
  16. SourceFile: string;
  17. begin
  18. inherited;
  19. status := TBindStatusCallback.Create;
  20. SourceFile := srcadres + 'setup.exe';
  21. DownloadFile(SourceFile, DestFile);
  22. if DownloadFile(SourceFile, DestFile) then
  23. begin
  24.  
  25. end
  26. else
  27.  
  28. Synchronize(ShowResult);
  29. end;
  30.  
  31. procedure TLoadThread.ShowResult;
  32.  
  33. begin
  34. ShowMessage(FResult);
  35. ShellExecute(handle, 'open', DestFile, nil, nil, SW_NORMAL);
  36. end;


Daenoor Вопрос закрыт (ответы не принимаются, мини-форум закрыт)

Вопрос задал: Daenoor (статус: Посетитель)
Вопрос отправлен: 12 августа 2011, 12:43
Состояние вопроса: закрыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 3; последнее сообщение — 12 августа 2011, 13:44; участников в обсуждении: 3.
Вадим К

Вадим К (статус: Академик), 12 августа 2011, 13:19 [#1]:

Посмотрел код. Ужаснулся. Как ещё компилятор не отказался это компилировать, даже не знаю.
По поводу ошибки. Где именно она возникает? стек видно?
Учитывая, как в коде создаются объекты, вы уверены, что на момент использования объекта status, он корректно инициализирован?

событие OnProgress используется в главной форме?

из попутных замечаний
-
const
  DestFile = 'c:\temp\setup.exe';
в большом кол-ве случаев это будет неверно. Не факт, что папка temp существует и доступна на запись, да и не факт, что диск C есть в наличии.
- переменные
var
  handle: HWND;
  status: TBindStatusCallback;
  srcadres: string;
первые кандидаты на проблемы. они должны быть членами какого то класса.
- код
{$I-}
    Reset(F1);
    Reset(F2);
{$I+}
если сознательно отключаете проверку, то нужно самостоятельно проверить IOResult. Иначе бага вылезет где то позже и будете долго искать.

- код
TUpdater = class(TApplicationEvents)
Зачем наследоваться от TApplicationEvents?
Галочка "подтверждения прочтения" - вселенское зло.
Daenoor

Daenoor (статус: Посетитель), 12 августа 2011, 13:31 [#2]:

status: TBindStatusCallback;
  srcadres: string;
костыли, которые так и не заработали.
const
  DestFile = 'c:\temp\setup.exe';
артефакт,который надо в свойство выносить.
TApplicationEvents
преподаватель сказал - я унаследовал отсюда. хотя можно и от TObject, ничего катастрофически не обрушится.
min@y™

min@y™ (статус: Доктор наук), 12 августа 2011, 13:44 [#3]:

Цитата (Daenoor):

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

Пипец. Преподы у вас там качественные, однако...
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

12 августа 2011, 17:36: Вопрос закрыт (решение принял автор вопроса — Daenoor): мой код говно,переписываем.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:50
Выполнено за 0.04 сек.