Форум: "Начинающим";
Текущий архив: 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