Delphi 6 косяк в коде или глюк программы?

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Dr_Grizzly
Сообщения: 407
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

Добрый день! Столкнулся с такой проблемой сегодня. Пишу большой проект, в одном из модулей количество строк превысило 3900. Я не могу теперь в этом модуле ничего вставить... Компилятор компилит все ок если нет ошибок, если ошибка есть, то показывает вообще левую строку стопом, которая не относится к ошибке... Так же, не работает выпадающий список функций и процедур при обращении к компоненте/функции/процедуре типа Adotable. - должен появится список... Но если я поднимусь на несколько десяток строк выше и начну писать тоже самое - то все замечательно....
Дак это что получается??? Проблема х32 разрядности? ))))) т.е. дельфа не может получить ссылку на строку значение которой больше 3000 ? (что-то на подобии того как нельзя поставить ОЗУ 4Гига на х32 ОС) ))))) или проблема все же в другом?
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Dr_Grizzly
Сообщения: 407
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

Накопал путем тыка следующее:

Код: Выделить всё

adoquery2.SQL.Add(' Select * from ');
adoquery2.SQL.Add('  ((((((((((Select * from nrtitog) as nritog ');
adoquery2.SQL.Add('LEFT JOIN ');
adoquery2.SQL.Add(' (select kodlesofond, ochag.lesname, count(regnomer) as isfire from ochag ');
adoquery2.SQL.Add('  where islikvid<>true and data_obarug>=datevalue('''+nachdata+''')  and data_obarug<datevalue('''+othdatap+''') ');
adoquery2.SQL.Add('  group by kodlesofond, ochag.lesname) as itog ');
adoquery2.SQL.Add('ON (nritog.kodlesofond=itog.kodlesofond) and (nritog.lesname=itog.lesname)) ');
adoquery2.SQL.Add('LEFT JOIN ');
adoquery2.SQL.Add('  (select kodlesofond, ochag.lesname, count(regnomer) as onisfire from ochag where islikvid<>true and ');
adoquery2.SQL.Add('   data_obarug>=datevalue('''+othdata+''')  and data_obarug<datevalue('''+othdatap+''') group by kodlesofond, ochag.lesname ) as onitog ');
adoquery2.SQL.Add('ON (nritog.kodlesofond=onitog.kodlesofond) and (nritog.lesname=onitog.lesname)) ');
adoquery2.SQL.Add('LEFT JOIN ');
adoquery2.SQL.Add('   (select kodlesofond, ochag.lesname, count(regnomer) as islokal from ochag ');
adoquery2.SQL.Add('   where islikvid<>true and islocaliz=true and data_obarug>=datevalue('''+nachdata+''')  and data_obarug<datevalue('''+othdatap+''') group by ');
............  < еще 4 блока подобный вставок... Редактор сайта не позволил все отобразить здесь>.........
adoquery2.SQL.Add('   group by kodlesofond, ochag.lesname) as onitplosh ');
adoquery2.SQL.Add('ON (nritog.kodlesofond=onitplosh.kodlesofond) and (nritog.lesname=onitplosh.lesname)) ');
adoquery2.SQL.Add('LEFT JOIN ');
adoquery2.SQL.Add('   (select kodlesofond, ochag.lesname, sum(chel) as itchel from ochag, fire, tehnika where ochag.key=fire.ochagkey and fire.key=tehnika.firekey ');
adoquery2.SQL.Add('   and  sutki>=datevalue('''+othdata+''')  and sutki<datevalue('''+othdatap+''') ');
adoquery2.SQL.Add('   group by kodlesofond, ochag.lesname) as onitchel ');
adoquery2.SQL.Add('ON (nritog.kodlesofond=onitchel.kodlesofond) and (nritog.lesname=onitchel.lesname)) ');
adoquery2.SQL.Add('LEFT JOIN ');
adoquery2.SQL.Add('   (select kodlesofond, ochag.lesname, sum(chel) as itchelpriv from ochag, fire, tehnika where ochag.key=fire.ochagkey and fire.key=tehnika.firekey ');
adoquery2.SQL.Add('   and  sutki>=datevalue('''+othdata+''')  and sutki<datevalue('''+othdatap+''')  and podrazd=''Ïðèâëå÷åííûå'' ');
adoquery2.SQL.Add('   group by kodlesofond, ochag.lesname) as onitchelpriv ');
adoquery2.SQL.Add('ON (nritog.kodlesofond=onitchelpriv.kodlesofond) and (nritog.lesname=onitchelpriv.lesname)) ');
adoquery2.SQL.Add('LEFT JOIN ');
adoquery2.SQL.Add('   (select kodlesofond, ochag.lesname, sum(traktor+avto+prochee) as ittehn from ochag, fire, tehnika where ochag.key=fire.ochagkey and ');
adoquery2.SQL.Add('   fire.key=tehnika.firekey ');
adoquery2.SQL.Add('   and  sutki>=datevalue('''+othdata+''')  and sutki<datevalue('''+othdatap+''')');
adoquery2.SQL.Add('   group by kodlesofond, ochag.lesname) as onitteh');
adoquery2.SQL.Add('ON (nritog.kodlesofond=onitteh.kodlesofond) and (nritog.lesname=onitteh.lesname) ');
до этого кода пишу Adoquery2. - появляется полный список всех значений функций и параметров.. После всего этого кода пишу Adoquery2. - списка нет и появляется ошибка:

Код: Выделить всё

[Pascal Error] Unit1.pas(1): Unable to invoke Code Completion due to errors in source code
Но если нажать Project/Compile All Project - то все успешно проходит и данный код программы работает исправно... Где ж все таки собака зарыта?
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Аватара пользователя
Duncon
Сообщения: 2085
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

Садомазахист на 6 работать до сих пор, попробуй переставить дэльфу.
[syntax=Delphi] [/syntax]
Аватара пользователя
Duncon
Сообщения: 2085
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

Возможно VCL заглючило, пару раз сталкивался, переустановка помогала..
[syntax=Delphi] [/syntax]
Dr_Grizzly
Сообщения: 407
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

дельфа на двух разных машинах стоит... ошибка одинаково схожа там и там....
сузил круг..
если пишу form1.adoquery2. - выдает ваще левые свойства и значения никак не относящиеся к данному компоненту
пишу
adoquery2. - полный список значений и функций.... вооооо делааааа
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Dr_Grizzly
Сообщения: 407
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

сразу напрашивается вопрос -

type
TForm1 = class(TForm)
.....
....
есть ли ограничения по описанию процедур, функций, количеству компонент после class? у меня там уже 700 строк )))))))

Любопытно что это значит:

type
TForm1 = class(TForm)
....
IntegerField6: TIntegerField;
WideStringField17: TWideStringField;
DateTimeField7: TDateTimeField;
FloatField2: TFloatField;
FloatField3: TFloatField;
FloatField4: TFloatField;
FloatField5: TFloatField;
FloatField6: TFloatField;
FloatField7: TFloatField;
FloatField8: TFloatField;
FloatField9: TFloatField;
FloatField10: TFloatField;
...

и таких полей куча какая-то.. у меня ни одного поля и значения не имеет таких названий.......... от куда они могут быть?
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Dr_Grizzly
Сообщения: 407
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

снес эти хрени... но нет результата... кидаю кнопку на форму - и чтобы я не писал - результат - [Pascal Error] Unit1.pas(1): Unable to invoke Code Completion due to errors in source code
..............
но при полной компиляции ни одной ошибки....
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Аватара пользователя
Duncon
Сообщения: 2085
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

где-то что-то глобально объявлено
укажи пути к запросам через модуль типа units.metod
[syntax=Delphi] [/syntax]
Dr_Grizzly
Сообщения: 407
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

Пока получилось пройти следующим методом - я добавил новый Unit модуль. Создаю там публичную процедуру и вставляю код, а из unit1 вызываю эту процедуру. Вроде пока получается..... Но суть проблемы я еще не понял
Пока понимаю что связано это с компонентой Adoquery2... пробовал удалить ее с формы, создать заново.
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Dr_Grizzly
Сообщения: 407
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

в итоге получилось следующее - все строки с adoquery2.sql.add() - вынес в отдельный unit и unit1 стал дышать... т.е. все встало на свои места... только вот доп unit загнулся.... ну не так он важен мне, т.к. там набор строк которые компилить не нужно... Но проблему из-за чего компилятору не нравится adoquery2.sql.add я так и не нашел еще...
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Ответить