Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Может я как то не так работаю с KOL и MCK?


Cawa ©   (2006-06-10 11:05:00) 

Создал МСК проект, установил на него компоненты (IBDataBase,IBTransaction,IBQuery), написал программулину - все работает зашибись, сохранил.
Сегодня открываю для внесения изменений в проект, запускаю а он мне
[code 0]StartTransaction: DataBase=nil!,а потом [code 0]prepare: Transaction=nil!. Ну я перелапатил свой код все в порядке, тогда в inc_и полез, тут то собака и была зарыта:
   Result.IBQuery1 := NewIBQuery( Result.IBTransaction1);
  {$IFDEF USE_NAMES}
   Result.IBQuery1.Name := 'IBQuery1';
  {$ENDIF}
 Result.Form.Add2AutoFree( Result.IBQuery1 );

   Result.IBTransaction1 := NewIBTransaction( Result.IBDatabase1);
  {$IFDEF USE_NAMES}
   Result.IBTransaction1.Name := 'IBTransaction1';
  {$ENDIF}
 Result.Form.Add2AutoFree( Result.IBTransaction1 );

   Result.IBDatabase1 := NewIBDatabase();
  {$IFDEF USE_NAMES}
   Result.IBDatabase1.Name := 'IBDatabase1';
  {$ENDIF}
   Result.IBDatabase1.DBName := 'base.gdb';
   Result.IBDatabase1.UserName := 'SYSDBA';
   Result.IBDatabase1.Password := 'masterkey';
 Result.Form.Add2AutoFree( Result.IBDatabase1 );

ладно, исправил, поменял местами, запустил, работает родная.
Сохраняю и открываю по новой , бацц и опять 25 - [code 0]prepare: Transaction=nil!, теперь только IBQuery перебрался поближе к солнцу.
Вопрос: Может я какие-нибудь действия не те делаю? Если да то какие?


Vladimir Kladov   (2006-06-10 18:59:00) [1]

Creation order в VCL, на генерацию кода в MCK не влияет. Влияет: TabOrder и Align. (Хорошо бы свой CreationOrder сделать, но сейчас заняться этим некогда. Если кто возьмется. Опять же, MVK только до Delphi7, а дальше - только без него, так что опять особого смысла нет).


Cawa   (2006-06-10 13:33:00) [2]

> Ну и последнее средство (а может и лучшее?) - это отказаться вообще от зеркальных компонент (они же все равно не визуальные) для них и создавать всё собственным кодом - это не так уж сложно.
К этому выводу я сегодня и пришел.
Ладно спасибо Вам за помощь!


ECM   (2006-06-10 13:24:00) [3]


> От перестановок в Creation order никакого эффекта не получил.

Возможно придется переоткрыть проект. Это
нужно для правильного запуска генерации кода МСК. Ну уж на самы крайний случай -открой те форму (DFM) как текст (если ваша версия Depphi это позволяет конечно) и отредактируйте порядок появления компонентов в нём. В начале все базы - потом все тразакции и потом уже все запросы.
Ну и последнее средство (а может и лучшее?) - это отказаться вообще от зеркальных компонент (они же все равно не визуальные) для них и создавать всё собственным кодом - это не так уж сложно.


ECM   (2006-06-10 13:17:00) [4]

З.Ы. а руками лазить (в смысле исправлять) там нет смысла - при следующей генерации кода МСК (при открытии проекта, при каких либо изменениях на форме в дезайнере) всё будет восстановлено. Именно это имел ввиду Владимир в [1].
Другое дело, что МСКб,в некоторых случаях, у меня почему то создает объекты не в той последовательности. Но это поправимо...(надеюсь). Пока измените порядок создания в дезайнере см.[2]. У себя на такое же пару раз натыкался - этот способ помог. Но руки пока не доходили разобраться...
:)


Cawa   (2006-06-10 13:14:00) [5]

Зря только бочку катешь Vladimir Kladov, MCK и без моего участия такой код сформировало:

Result.IBQuery1 := NewIBQuery( Result.IBTransaction1);
 {$IFDEF USE_NAMES}
  Result.IBQuery1.Name := 'IBQuery1';
 {$ENDIF}
Result.Form.Add2AutoFree( Result.IBQuery1 );

  Result.IBTransaction1 := NewIBTransaction( Result.IBDatabase1);
 {$IFDEF USE_NAMES}
  Result.IBTransaction1.Name := 'IBTransaction1';
 {$ENDIF}
Result.Form.Add2AutoFree( Result.IBTransaction1 );

  Result.IBDatabase1 := NewIBDatabase();
 {$IFDEF USE_NAMES}
  Result.IBDatabase1.Name := 'IBDatabase1';
 {$ENDIF}
  Result.IBDatabase1.DBName := 'base.gdb';
  Result.IBDatabase1.UserName := 'SYSDBA';
  Result.IBDatabase1.Password := 'masterkey';
Result.Form.Add2AutoFree( Result.IBDatabase1 );


Поэтому и пришлось руками полезть чтобы заработало.

От перестановок в Creation order никакого эффекта не получил.

Полазил по папкам с примерами обнаружил такой же дефект в некоторых из них. Но пока даже не представляю какие действия к этому привели.


ECM   (2006-06-10 12:54:00) [6]

2 Kladov - я предпренимал определенные шаги в зеркале чтобы обеспечить правильную последовательности создания (это там важно) ... но то ли что то поменялось с тех пор в этом плане - толи не всегда срабатывает (кажется что то с CreationPriority - но могу ошибаться). В любом случае раньше понедельника посмотреть не смогу...


Vladimir Kladov   (2006-06-10 12:48:00) [7]

Наоборот Не надо слишком много действия, не читая инрукцию. Даже не читая инструкцию, нетрудно догадаться, что если содержимое файла меняется бз вашего участия, то, аверное, так оно и должно быть. И нечего там руками лазать.


ECM   (2006-06-10 12:48:00) [8]

Поправлю... разбираюсь. Пока покспериментируйте с Creation order (контекстное меню на форме) - полегчает


Наверх

Титульная страница Поиск, карта сайта Написать письмо