Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Что значит эта ошибка


Автор: МАХИМ 4.7.2006, 13:12
[Error] Unit1.pas(13): Unsatisfied forward or external declaration: 'EnumThread.UpdateListProc' 

Автор: volvo877 4.7.2006, 13:25
МАХИМ, это значит, что ты описал метод класса, но не привел его реализацию... 

Автор: МАХИМ 4.7.2006, 13:38
А здесь что ни так(эта процедура находится в теле отдельного потока:

procedure UpdateListProc;
begin
frmSetting.ListView1.AddItem(Text,form1);
end;


[Error] Unit1.pas(194): '(' expected but ',' found

Эта строка скопирована из основного кода программы где она функционирует нормально. 

Автор: _hunter 4.7.2006, 13:44
на месте запятой должна стоять открывающая скобка.
смотри что у тебя Text 

Автор: МАХИМ 4.7.2006, 13:47
А вот почему я объявление переменной Text в основном теле программы вынес до Implementation и опять появилась ошибка: [Error] Unit1.pas(13): Unsatisfied forward or external declaration: 'EnumThread.UpdateListProc'

Добавлено @ 13:49 
Text это стринговая переменная 

Автор: volvo877 4.7.2006, 13:55
Цитата(МАХИМ @  4.7.2006,  13:38 Найти цитируемый пост)
Код
procedure UpdateListProc;
А где, собственно, ты видишь здесь МЕТОД? Это просто процедура...
 

Автор: МАХИМ 4.7.2006, 14:03
а я и не говорил что это метод, помогите разобраться, что нужно и как мне указать что бы этой проблемы не было. 

Автор: volvo877 4.7.2006, 14:06
Ты говорил, что:
Цитата(МАХИМ @  4.7.2006,  13:12 Найти цитируемый пост)
[Error] Unit1.pas(13): Unsatisfied forward or external declaration: 'EnumThread.UpdateListProc'  

, а показываешь просто процедуру... Нехорошо. Добавь то, что я выделил красным ... 

Автор: МАХИМ 4.7.2006, 14:14
не пойму никак что тебе надо вот посмотри если еще что-то скажи выложу еще чего-нито:

Код

unit Unit1;

interface

uses
  Classes;

type
  EnumThread = class(TThread)
  private
    { Private declarations }
  protected
    procedure UpdateListProc;
    procedure Execute; override;
  end;

implementation

uses  carryhider, windows, SysUtils, setting;
{ Important: Methods and properties of objects in visual components can only be
  used in a method called using Synchronize, for example,

      Synchronize(UpdateCaption);

  and UpdateCaption could look like,

    procedure EnumThread.UpdateCaption;
    begin
      Form1.Caption := 'Updated in a thread';
    end; }

{ EnumThread }

procedure EnumThread.Execute;
 

Автор: volvo877 4.7.2006, 14:24
Да мне, собственно, ничего не надо... Надо как раз тебе!

Это - твой вариант:
Код
procedure UpdateListProc;
begin
frmSetting.ListView1.AddItem(Text,form1);
end;

Вот так должно быть:
Код
procedure EnumThread.UpdateListProc;
begin
frmSetting.ListView1.AddItem(Text,form1);
end;

Разницу видишь, или еще проще объяснить? 

Автор: МАХИМ 5.7.2006, 11:02
Код

procedure EnumThread.UpdateListProc;
begin
frmSetting.ListView1.AddItem(Text,form1);
end;


Если делать так то выходит опять вот эта ошибка: [Error] Unit1.pas(194): '(' expected but ',' found
Я не пойму эта строка скопированна из основноко тела программы там она работает а в теле отдельного потоеа который я хочу сделать не работает. 

Автор: Guedda 5.7.2006, 11:11
А где хранится переменная Text? Если в основном теле программы, то напиши так:
Код

procedure EnumThread.UpdateListProc;
begin
frmSetting.ListView1.AddItem(frmSetting.Text,form1);
end;
 

Автор: МАХИМ 5.7.2006, 11:30
спасибо пока вроде все smile  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)