Ошибка при втором проходе

Ramin Hashimzade
Дата: 13.05.2011 11:12:22
Robertino,

и ты думаеш что есть чел. который ьросит свою работу и будет анализировать твой код?????? ....
Кроик Семён
Дата: 13.05.2011 11:23:40
Robertino,

Вот твой код
        If NewDbf <> nil then begin
           if NewDbf.Active then begin
              NewDbf.Close;
              end;
           end;
        ...   
        NewDbf := TwwTable.Create(Self); 
        ...

может, стоит, как уже сказали, декствительно подумать про

      FreeAndNil(NewDbf);

в конце процедуры???
Anatoly Podgoretsky
Дата: 13.05.2011 13:14:34
Человек, который работает с БДЕ, никогда не научится использовать try finally
Robertino
Дата: 13.05.2011 15:34:33
Gwa
Robertino,
неужели Вы создаёте Dbf только для того что отобразить информацию в грид?
Мне кажется это лишнее.
Возмите другой грид (StringGrid, например) и прямо из реестра отобразите всё что нужно..
Дело не только в "посмотреть". Эта таблица в виде файла DBF (именно!) требуется для другого приложения, которое использует прочитанные реестровые ключи.
Robertino
Дата: 13.05.2011 15:40:35
Drunken Dolphin
Robertino
Здесь она создается, потом снова создается (если попросят), здесь же помирает.


и где она тут помирает?
Явно - нигде. Но при TwwTable.Create разве она не инициализируется?
Впрочем, в одном из вариантов перед дропом таблицы я ставил и NewDBF.Free, и NewDbf := nil, - и вместе оба, даже не глядя на то, что при отладке на входе NewDbf и так равно nil. Успеха это не дало.
Robertino
Дата: 13.05.2011 15:43:18
Ramin
Robertino,

и ты думаеш что есть чел. который ьросит свою работу и будет анализировать твой код?????? ....
Во всяком случае, на твою помощь я не надеюсь... Так что, как говорят, вас просят не беспокоиться...
Gwa
Дата: 13.05.2011 15:45:24
Robertino
Drunken Dolphin
пропущено...


и где она тут помирает?
Явно - нигде. Но при TwwTable.Create разве она не инициализируется?
Впрочем, в одном из вариантов перед дропом таблицы я ставил и NewDBF.Free, и NewDbf := nil, - и вместе оба, даже не глядя на то, что при отладке на входе NewDbf и так равно nil. Успеха это не дало.


Не в этом дело.. К тому времени как Вы заходите второй раз ссылка потяряна,
а объект продолжает существовать в памяти..
Нужно делать FreeAndNil() по окончании использования объекта, а не перед повторным применением.
Robertino
Дата: 13.05.2011 15:47:15
Anatoly Podgoretsky
Человек, который работает с БДЕ, никогда не научится использовать try finally
Где имение и где вода?
Вы, разумеется, великий корифей, - наслышаны-с! Начитаны-с!, - и от Вас я был вправе ожидать более конструктивный ответ.
Спасибо.
Robertino
Дата: 13.05.2011 15:53:48
Gwa
Robertino
пропущено...
Явно - нигде. Но при TwwTable.Create разве она не инициализируется?
Впрочем, в одном из вариантов перед дропом таблицы я ставил и NewDBF.Free, и NewDbf := nil, - и вместе оба, даже не глядя на то, что при отладке на входе NewDbf и так равно nil. Успеха это не дало.


Не в этом дело.. К тому времени как Вы заходите второй раз ссылка потяряна,
а объект продолжает существовать в памяти..
Нужно делать FreeAndNil() по окончании использования объекта, а не перед повторным применением.
Ну, вот, смотрите... Таблица в гриде. Это финальная стадия. Кроме того, она уже физически сохранена в виде файла DBF. Во второй раз в эту таблицу я вношу, возможно, другие данные - зависит от того, что помещено в ветку реестра. Значит, как и написано - "окончание использования" в данном случае - перед занесением в грид, то есть там, где оно и расположено.
Но, конечно, я воспользуюсь Вашим советом непременно.
Спасибо.
Anatoly Podgoretsky
Дата: 13.05.2011 16:05:02
Robertino
Anatoly Podgoretsky
Человек, который работает с БДЕ, никогда не научится использовать try finally
Где имение и где вода?
Вы, разумеется, великий корифей, - наслышаны-с! Начитаны-с!, - и от Вас я был вправе ожидать более конструктивный ответ.
Спасибо.

Я смотрел код - говнокод, даже комментировать не хочется.
Кроме того ты хамишь, а оно мне надо?