Модераторы: Snowy, Poseidon, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Abstract Error, замучался уже... 
:(
    Опции темы
Somebody32
Дата 11.2.2006, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Overclocker
*


Профиль
Группа: Участник
Сообщений: 85
Регистрация: 2.1.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 1



Прошу помощи знающих людей. Код процесса скачивания файла из сети:
Код

unit Unit3;

interface

uses
  Classes, IdBaseComponent, IdComponent,
  IdTCPConnection, IdTCPClient,IdHTTpб,Unit1, Dialogs;

type
  Down = class(TThread)
  private

  protected
  procedure ShowProgress;
  procedure OnDl(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCount: Integer);
  procedure Execute;
  end;

   var Fprogress,Fsize:integer;
   ms:TMemoryStream;
   IdHTTP1:TIDHTTP;
   FileUrl,Filename:String;
implementation


{ Down }

procedure Down.OnDl(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCount: Integer);
begin
  FSize := IdHTTP1.Response.ContentLength;
  FProgress := Round(ms.InstanceSize / FSize * 100);
  Synchronize(ShowProgress);

end;

 procedure Down.ShowProgress;
begin
 Form1.ProgressBar1.Position := FProgress;
end;

procedure Down.Execute;
begin
  try
    ms:=TMemoryStream.Create;
    idHttp1 := TidHttp.Create(form1);
    idHttp1.OnWork := OnDl;
    idHttp1.Get(fileurl,ms);
    ms.SaveToFile(Filename);
    ms.Position:=0;
  finally
    idHttp1.Free;
  end;
end;


Вызывается из главной формы:
Код

function GetInetFile (fileURL,FileName: String): boolean;
  begin
  Form1.StatusBar1.Panels.Items[0].Text:='Состояние: Скачиваю файл';
  Unit3.FileUrl:=fileurl;
  Unit3.Filename:=filename;
  co:=down.Create(False);
  co.Priority:=tplowest;

 end;

В итоге ловим absract error в 7, а в 2006 пишет такое:[Pascal Error] Unit3.pas(59): E2009 Incompatible types: 'Parameter lists differ' в строке idHttp1.OnWork := OnDl; (поток), но до этого тоже абстракт. Не знаю чего делать, прошу помощи.
PM MAIL ICQ   Вверх
Romikgy
Дата 13.2.2006, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Цитата(Somebody32 @ 11.2.2006, 20:40 Найти цитируемый пост)
idHttp1.OnWork := OnDl;

А где ты такое нашел, я в хелпе такого эвента не вижу smile
Есть OnStatus, мож это те надо?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Snowy
Дата 13.2.2006, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Нет, тут все нормально.
Не реализован какой-то абстрактный метод.
И возможно проблема вообще не в этом коде.
Хотелось бы знать полный текст ошибки и строку, в которой она появляется.
PM MAIL   Вверх
Somebody32
Дата 13.2.2006, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Overclocker
*


Профиль
Группа: Участник
Сообщений: 85
Регистрация: 2.1.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 1



Snowy, другой вопрос, почему в 2006 у меня не компилится ссылаясь на строку:
Цитата

idHttp1.OnWork := OnDl;

Пишет вот что:
Цитата

[Pascal Error] Unit3.pas(59): E2009 Incompatible types: 'Parameter lists differ'


Abstarct Error ловится в этом коде, если закооменетить вывоз процедцры GetInetFile, то проблем нет.
PM MAIL ICQ   Вверх
_hunter
Дата 13.2.2006, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 5
Всего: 98



все же написанно:
Цитата(Somebody32 @ 13.2.2006, 14:33)
Цитата

Parameter lists differ'

покажи сигнатуру OnDl


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Somebody32
Дата 13.2.2006, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Overclocker
*


Профиль
Группа: Участник
Сообщений: 85
Регистрация: 2.1.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 1



_hunter, извини, но поподробнее можно?
PM MAIL ICQ   Вверх
Romikgy
Дата 13.2.2006, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Незнаю как у кого , но все эвенты инди 9
Код

TIdHTTP

 OnAuthorization

 OnProxyAuthorization

 OnRedirect

 OnSelectAuthorization

 OnSelectProxyAuthorization

TIdCustomHTTP

TIdComponent

 OnStatus

У онстатус
Код

TIdStatusEvent = procedure (ASender: TObject; const AStatus: TIdStatus; const AStatusText: string) of object;

У автора

Цитата(Somebody32 @ 11.2.2006, 20:40 Найти цитируемый пост)
procedure Down.OnDl(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCount: Integer);

Ща еще пороюсь в исходниках



--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
_hunter
Дата 13.2.2006, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 5
Всего: 98



Somebody32, по-подробнее что?


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Somebody32
Дата 13.2.2006, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Overclocker
*


Профиль
Группа: Участник
Сообщений: 85
Регистрация: 2.1.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 1



Romikgy, у меня инди 10, если не ошибаюсь.
Добавлено @ 16:19
_hunter, с сигнатурой, почему ошибка?
PM MAIL ICQ   Вверх
Romikgy
Дата 13.2.2006, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Цитата(Somebody32 @ 11.2.2006, 20:40 Найти цитируемый пост)
procedure Down.OnDl(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCount: Integer);

Это у тебя а надо
Код

TWorkEvent = procedure(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer)
   of object; 

и это аж конекшене
Добавлено @ 16:25
Цитата(Somebody32 @ 11.2.2006, 20:40 Найти цитируемый пост)
ncompatible types: 'Parameter lists differ'

У тя говорит , что список параметров отличается,
Цитата(Somebody32 @ 13.2.2006, 15:18 Найти цитируемый пост)
у меня инди 10, если не ошибаюсь.

Это подходит и к 10 версии


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Somebody32
Дата 13.2.2006, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Overclocker
*


Профиль
Группа: Участник
Сообщений: 85
Регистрация: 2.1.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 1



Romikgy, английский то я понял, но вот что прописать, не догадываюсь, если просто перечислить все параметры, то ошибок в несколько раз боольше становится. А первый твой кусок кода про Tworkmode, я не сообразил, что с ним делать.

Это сообщение отредактировал(а) Somebody32 - 13.2.2006, 16:29
PM MAIL ICQ   Вверх
Romikgy
Дата 13.2.2006, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Код

procedure Down.OnDl(Sender: TObject; AWorkMode: TWorkMode;  const AWorkCount: Integer) of object;

Попробуй так!?
Добавлено @ 16:34
Хотя я и не проверял


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Somebody32
Дата 13.2.2006, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Overclocker
*


Профиль
Группа: Участник
Сообщений: 85
Регистрация: 2.1.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 1



Romikgy, нет, совершенно не помогает.
PM MAIL ICQ   Вверх
Romikgy
Дата 13.2.2006, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



А если так сначала попробовать
Код

procedure Down.OnDl(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCount: Integer);
begin
 // FSize := IdHTTP1.Response.ContentLength;
 // FProgress := Round(ms.InstanceSize / FSize * 100);
 // Synchronize(ShowProgress);
end;



--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Somebody32
Дата 13.2.2006, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Overclocker
*


Профиль
Группа: Участник
Сообщений: 85
Регистрация: 2.1.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 1



Romikgy, та же ошибка. Достал этот 'Parameter lists differ'.
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0637 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.