Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2011.06.26;
Скачать: [xml.tar.bz2];

Вниз

компилятор не распознает класс   Найти похожие ветки 

 
umbra ©   (2011-03-18 15:33) [0]

Здравствуйте!

Есть такой вот тестовый код:

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type

 TTest = class(TPersistent)
 end;

 TTestClass = class of TTest;

 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 with TClassFinder.Create(TTestClass, false) do
   ;
end;

end.


Вопрос: почему при синтаксическом анализе компилятор на выделенной строке выдает такую вот ошибку :
[Error] Unit1.pas(34): "(" expected but "," found

Почему он хочет открывающую скобку после класса?


 
clickmaker ©   (2011-03-18 15:36) [1]

do что?


 
umbra ©   (2011-03-18 15:39) [2]

неважно что. это у меня не компилируется и ошибку выдает на выделенной строке.


 
umbra ©   (2011-03-18 15:43) [3]

этот код не проходит синтаксического анализа. это баг анализатора в Д7, что ли?


 
clickmaker ©   (2011-03-18 15:44) [4]

а почему это должно компилироваться? и даже если скомпилируется, что вообще этот код должен полезного делать?


 
umbra ©   (2011-03-18 15:49) [5]


> а почему это должно компилироваться?


вы скажите, почему не должно? TClassFinder - это класс из Classes.pas, конструктор у него объявлен вот так:

constructor Create(AClass: TPersistentClass = nil; AIncludeActiveGroups: Boolean = False);

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


 
umbra ©   (2011-03-18 15:52) [6]

это сугубо тестовый код и ничего полезного, кроме демонстрации странного поведения компилятора, он делать не предназначен :)


 
Юрий Зотов ©   (2011-03-18 15:55) [7]

А так:
with TClassFinder.Create(TTest, false) do...
работает?


 
clickmaker ©   (2011-03-18 15:57) [8]

with TClassFinder.Create(TTest, false)


 
umbra ©   (2011-03-18 15:59) [9]


> А так:
> with TClassFinder.Create(TTest, false) do...
> работает?
>


спасибо. затупил я, однако :(


 
Юрий Зотов ©   (2011-03-18 16:09) [10]

В первом параметре должен быть КЛАСС, а не МЕТАкласс.


 
umbra ©   (2011-03-18 16:13) [11]

да я уже понял. спасибо еще раз


 
umbra ©   (2011-03-18 16:15) [12]

а компилятор же мне намекал - приведи типы,  да приведи типы. Но я его не понял. :)


 
Дмитрий Белькевич   (2011-03-18 23:35) [13]


> а компилятор же мне намекал - приведи типы,  да приведи
> типы. Но я его не понял. :)


Компилятору стоит верить. Причем воспринимать дословно.



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

Форум: "Начинающим";
Текущий архив: 2011.06.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.003 c
8-1213041750
amRon
2008-06-10 00:02
2011.06.26
тэги в mp3


2-1300262871
fred
2011-03-16 11:07
2011.06.26
AV


15-1297596752
KilkennyCat
2011-02-13 14:32
2011.06.26
Любителям собирать компьютеры


15-1299958215
Fergo
2011-03-12 22:30
2011.06.26
Люди обясните что в этом коде не так???


2-1300369713
irzyxa
2011-03-17 16:48
2011.06.26
Куда в файл можно записать свой идентификатор





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский