Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.07.13;
Скачать: CL | DM;

Вниз

Интерфейсы   Найти похожие ветки 

 
rena ©   (2008-06-07 23:48) [0]

Здравствуйте! У меня прога выдает такую ошибку:
[Pascal Error] Unit8.pas(70): E2003 Undeclared identifier: "otobZvezdi"
[Pascal Error] Unit8.pas(70): E2003 Undeclared identifier: "otobLinii"
[Pascal Error] Unit8.pas(70): E2003 Undeclared identifier: "SimpleSort"
[Pascal Error] Unit8.pas(70): E2003 Undeclared identifier: "SliyanieSort"
[Pascal Error] Unit8.pas(70): E2003 Undeclared identifier: "zapRaspr"
[Pascal Error] Unit8.pas(70): E2003 Undeclared identifier: "zapRandom"

Сам код:
I_Int1=interface(IUnknown)
["{5EECAA37-C3AA-4C1A-B073-F231EB6653BE}"]
//Реализует способы заполнения
   procedure zapAddit;
   procedure zapRaspr;
   procedure zapRandom;
 end;

I_Int2=interface(IUnknown)
["{D943F47C-3E94-4509-9740-72A2E2EF0F67}"]
//Реализует способы сортировки
   procedure Qsort(var a: array of Sortmas; iLo, iHi: Integer);
   procedure QuicklySort;
   procedure SimpleSort;
   procedure SliyanieSort;
 end;

I_Int3=interface(IUnknown)
["{43C926DD-1670-498A-BFF2-16A0A3A4FC9F}"]
//Реализует способы отображения
   procedure otobMozaika;
   procedure otobZvezdi;
   procedure otobLinii;
 end;

TClass1=class(TInterfacedObject,I_Int1,I_Int2,I_Int3)
    a:array of Sortmas;
 //Сортировка выбором
   constructor Create;
   procedure ZapAddit;
   procedure QSort(var a: array of Sortmas; iLo, iHi: Integer);
   procedure QuicklySort;
   procedure otobMozaika;
 end;

TClass3=class(TInterfacedObject,I_Int1,I_Int2,I_Int3)
   a:array of Sortmas;
 //Быстрая сортировка
   constructor Create;
   procedure zapRaspr;
   procedure SimpleSort;
   procedure otobZvezdi;
 end;

TClass2=class(TInterfacedObject,I_Int1,I_Int2,I_Int3)
   a:array of Sortmas;
 //Сортировка слиянием
   constructor Create;
   procedure zapRandom;
   procedure Sort(x:array of sortmas;first,last:integer);
   procedure SliyanieSort;
   procedure SortS(var x: array of sortmas; first, middle, last: integer);
   procedure otobLinii;
 end;

Все методы описаны (нахожу метод в описании КЛАССА, нажимаю Ctrl+Shift+C и описываю)
Почему-то с первым классом работает, с остальными делаю то же самое, но уже не работает..


 
Amoeba ©   (2008-06-08 00:15) [1]


> Здравствуйте! У меня прога выдает такую ошибку:
> [Pascal Error] Unit8.pas(70): E2003 Undeclared identifier:
>  "otobZvezdi"
> [Pascal Error] Unit8.pas(70): E2003 Undeclared identifier:
>  "otobLinii"
> [Pascal Error] Unit8.pas(70): E2003 Undeclared identifier:
>  "SimpleSort"
> [Pascal Error] Unit8.pas(70): E2003 Undeclared identifier:
>  "SliyanieSort"
> [Pascal Error] Unit8.pas(70): E2003 Undeclared identifier:
>  "zapRaspr"
> [Pascal Error] Unit8.pas(70): E2003 Undeclared identifier:
>  "zapRandom"


Так возьми и добавь в модуле Unit8 в Uses: otobZvezdi, otobLinii, SimpleSort, SliyanieSort,
zapRaspr, zapRandom
Ведь все ясно и прозрачно, как божий день. И компилятор тебе уже все прокричал. Или "чукча не читатель, чукча писатель"?


 
rena ©   (2008-06-08 00:38) [2]

?? зачем в модуль добавлять процедуры, объявленные в том же модуле?


 
rena ©   (2008-06-08 00:45) [3]

Все эти методы описаны далее в самом модуле

> Все методы описаны (нахожу метод в описании КЛАССА, нажимаю
> Ctrl+Shift+C и описываю)

т.е это не отдельные модули, а просто процедуры..
тем более, впервые слышу, чтобы в uses можно было названия процедур писать..


 
Amoeba ©   (2008-06-08 00:56) [4]


> тем более, впервые слышу, чтобы в uses можно было названия
> процедур писать..
>

Sorry, оказывается это названия процедур...

> Все эти методы описаны далее в самом модуле

В таком случае строку 70 модуля  Unit8 на бочку!


 
rena ©   (2008-06-08 01:15) [5]

TClass1=class(TInterfacedObject,I_Int1,I_Int2,I_Int3)
    a:array of Sortmas;
 //Сортировка выбором
   constructor Create;
   procedure ZapAddit;
   procedure QSort(var a: array of Sortmas; iLo, iHi: Integer);
   procedure QuicklySort;
   procedure otobMozaika;
 end;

строка "  end; " -это и есть строка 70, я не пойму в чем тут дело..


 
rena ©   (2008-06-08 01:41) [6]

методом проб и ошибок поняла, что он вроде как  видит только первый класс, который прямо после интерфейсов описываешь, а последующие за ним, хотя ничем не отличаются, не видит..почему так?


 
Ляпа   (2008-06-08 14:48) [7]


> rena ©   (08.06.08 01:41) [6]

Класс должен реализовывать все методы интерфейса.


 
zensan ©   (2008-06-11 15:19) [8]

Чтобы этого не делать можно ещё и так например

TClass1=class(TInterfacedObject,I_Int1,I_Int2,I_Int3)
   a:array of Sortmas;
  constructor Create;
  procedure ZapAddit;
  procedure QSort(var a: array of Sortmas; iLo, iHi: Integer);
  procedure QuicklySort;
public
  ...
  property Int1: TInt1 read FInt1 implements I_Int1;
  property Int2: TInt2 read FInt2 implements I_Int2;

end;


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



Страницы: 1 вся ветка

Текущий архив: 2008.07.13;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.02 c
2-1213167659
deras
2008-06-11 11:00
2008.07.13
Как обнулить счетчик генератора в FireBird?


2-1213112363
Кпрф
2008-06-10 19:39
2008.07.13
Копирование


15-1211815645
Tualatin
2008-05-26 19:27
2008.07.13
файл ресурса (где картинки jpg)


3-1202138898
tomkat
2008-02-04 18:28
2008.07.13
критичный размер базы под FB


15-1211874362
версия для печати
2008-05-27 11:46
2008.07.13
Замена множества компонент в проекте