Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.06.06;
Скачать: CL | DM;

Вниз

При компиляции приложения закрываются все IBDataSet?   Найти похожие ветки 

 
div ©   (2004-05-12 09:56) [40]

или вообще убери эту проверку - она лишняя...


 
Соловьев ©   (2004-05-12 09:57) [41]


> Miwa ©   (12.05.04 09:37) [38]

кнопки F5, F7 и F8 знаешь?


 
div ©   (2004-05-12 09:59) [42]

поставь брэйкпоинт на строке:
dtmData.ibdFiles.DataSets[i].Open;
и посмотри выполняется ли вообще этот код... дальше будем посмотреть...


 
miwa ©   (2004-05-12 10:24) [43]


> div ©

См. (31).


> Соловьев ©

См. (17-18).


> [42] div ©   (12.05.04 09:59)
> и посмотри выполняется ли вообще этот код...

Выполняется, будь он неладен. Проверял уже.


 
div ©   (2004-05-12 10:32) [44]

[Error] shared.pas(314): Operator not applicable to this operand type.??? Странно у меня все в порядке. А что это за модуль shared.pas???


 
miwa ©   (2004-05-12 10:38) [45]

Это модуль, в котором находятся функции загрузки данных. Он - в одном каталоге с остальными файлами программы. Если быть более точным, то в shared.pas находятся функции LoadDBFiles и CheckDB. FormCreate - в frmMain.pas.
Иду смотрю, почему у меня не в порядке.


 
miwa ©   (2004-05-12 11:08) [46]

Интерессно, а могло так быть, что у меня в shared.pas не подключился модуль system? Извините за возможно тупой вопросс, просто я уже ничего не соображаю. Тем не менее, ошибка Operator not applicable to this operand type никуда не делась. Она же проявляется при любой комбинации скобок вокруг is с операндами и в любом модуле проекта.


 
div ©   (2004-05-12 12:07) [47]

покажи интерфейсную часть модуля shared.pas


 
miwa ©   (2004-05-12 12:16) [48]

unit shared;

interface

uses SysUtils, Classes, IBDatabase, DB, IBCustomDataSet, IBQuery, Buttons,
    CheckLst, Windows, IniFiles, Forms, Graphics, Masks, IB, Controls,
    StrUtils, StdCtrls,
    data, finfo, dialogs, seek;

type
 PnetResourceArr = ^TNetResource;//для сканирования сети
 PList = ^TStringList;           //дополнительно

var
 skin,
 PathProg,
 DefPoster,
 LngFile,
 MiVideoPath,
 FilesDB, FilmsDB:string;

 lang: TStringList;
 //db "films"
 Countries: TIDList;
 Professions: TIDList;
 Zhanres: TIDList;
 //db "files"
 notadded: TStringList;
 files: TIDList;//не ставит, зараза, "Юник" на "варчар (256)"
function LoadLanguage(FileName:string):integer;
procedure ApplyLanguage;
function LoadSettings(FileName:string):integer;
function TryLoadPict(source,numb:string;dest:TBitBtn):integer;
function LoadSkin(SkinDir:string):integer;

function CheckDB(DataBase:TIBDataBase;path:string):integer;
function LoadDBFilms(DataBase:string):integer;
function LoadDBFiles(DataBase:string):integer;
function LoadPathes(dest: TCheckListBox):integer;

function SavePathes:integer;
function SaveSettings(FileName:string):integer;

function GetFileVersion(const FileName: string; separator:char): string;
function GetLANResources(ListRoot:PNetResource; var lst: PList): integer;
procedure SearchMedia;
function TryAddFile(FileName:TFileName):integer;

function AnalizeHTML(sourcefile:string):integer;
procedure SaveListToDB(var src: TIDList; table, f_id, f_name: string);
function GenerateHTML(id:integer):string;
function AnalizeLog(FileName: TFileName;id:integer):integer;

//а это с 7-й версии
function PosEx(const SubStr, S: string; Offset: Cardinal = 1): Integer;
function IntToTime(i:integer):TDateTime;
function ExtractOnlyFileName(const FileName: string): string;
function MakeItem(input,comment,zhanr:string):string;

implementation

uses main;

//=========================================================================


 
div ©   (2004-05-12 12:45) [49]

а ты нигде случайно не переопредилил тип TIBDataSet? вообще очень странно...
> Тем не менее, ошибка Operator not applicable to this operand type никуда не делась. Она же проявляется при любой комбинации скобок вокруг is с операндами и в любом модуле проекта.
а она "проявляется" при проверке любых классов?


 
miwa ©   (2004-05-12 12:56) [50]

.
> а ты нигде случайно не переопредилил тип TIBDataSet

Нет. И намеренно тоже ;о))


> а она "проявляется" при проверке любых классов?

Да. Во всяком случае, для TForm, TPageControl, TBitBtn, TListBox...
Кстати, если убрать .ClassType - тогда все ок:
if frmMain is TForm then showmessage("well..");
Видим надпись


 
div ©   (2004-05-12 13:01) [51]

> Кстати, если убрать .ClassType - тогда все ок:
> if frmMain is TForm then showmessage("well..");

кстати его и надо было убрать... внимательно смотри как тебе писали...


 
div ©   (2004-05-12 13:03) [52]

Хэлп. Цитирую: "Avoid using ClassType in application code."


 
miwa ©   (2004-05-12 13:05) [53]

Блин. Торможу. Да, так и писали, извините.
И все же мы немножко отвлеклись, Вы не считаете?


 
div ©   (2004-05-12 13:34) [54]

смотри нигде по коду не вызывается Transaction.Commit или Transaction.Rollback? Не закрывается ли соединение? Проверь IdleTimer у Transaction (у Database вроде проверил). Если с DB компонентами все впорядке, и DataSet"ы заполнены, значит проблемы с  DBGridEh...


 
miwa ©   (2004-05-12 13:53) [55]

Значит, проблемы з DBGridEh... Плохо.
Всем спасибо за помощь, иду играться дальше.
Проблемма пока остается открытой, если кто чего надумает - буду очень рад.


 
div ©   (2004-05-12 13:55) [56]

в чем я сильно сомневаюсь... )))


 
miwa ©   (2004-05-12 14:01) [57]

Э нет, все же не DBGridWEh!!!
Значит так: бросил на форму обычний грид, указал ему датасорс с датасетом - тоже пустой.
Дальше. Сделал явно ошибочный код:
   for i:=0 to dtmData.ibdFiles.DataSetCount-1 do
     if dtmData.ibdFiles.DataSets[i] is TIBDataSet then
       try
         dtmData.ibdFiles.DataSets[i].Active:=true;
         dtmData.ibdFiles.DataSets[i].Open;//а ведь он уже открыт!!!
       except
         on err: exception do showmessage(err.message);
       end;

И все же исключения не увидел.
Так что проблема все же в наборах данных.
Только вот где?..
Мля!..


 
div ©   (2004-05-12 14:09) [58]

ну допустим этот код и не должен вызывать исключения... а вообще для уверенности - убери пока блок try ... except, и оставь только открытие датасетов; и сделай следующее:

dtmData.ibdFiles.DataSets[i].Active:=true;
if dtmData.ibdFiles.DataSets[i].RecordCount <= 0 then
 raise Exception.Create("Datataset emty: " + dtmData.ibdFiles.DataSets[i].Name);

это для полной уверенности что у тебя есть данные в датасетах...


 
Плохиш   (2004-05-12 14:09) [59]

>miwa ©   (12.05.04 14:01) [57]

>          dtmData.ibdFiles.DataSets[i].Active:=true;
>          dtmData.ibdFiles.DataSets[i].Open;//а ведь он уже
> открыт!!!
>        except
>          on err: exception do showmessage(err.message);
>        end;
>
> И все же исключения не увидел.

А заглянуть в реализацию Open не судьба?


 
div ©   (2004-05-12 14:18) [60]

кстати о птичках (с)... только что посмотрел - процедура ShowMessage(...) - не отображает сообщение при вызове в обработчике OnCreate главной формы (а у тебя по сути так и есть)... так что не факт что у тебя нет исключений!!!


 
div ©   (2004-05-12 14:20) [61]

наврал... ))) извиняюсь


 
miwa ©   (2004-05-12 14:42) [62]


> А заглянуть в реализацию Open не судьба?

procedure TDataSet.Open;
begin
 Active := True;
end;

Жаль что нет смайлика, обозначающего покраснение ;о)).


> для полной уверенности что у тебя есть данные в датасетах...

   for i:=0 to dtmData.ibdFiles.DataSetCount-1 do
     if dtmData.ibdFiles.DataSets[i] is TIBDataSet then begin
       dtmData.ibdFiles.DataSets[i].Active:=true;
       if dtmData.ibdFiles.DataSets[i].RecordCount <=0 then
         raise exception.Create("Dataset empty: "+dtmData.ibdFiles.DataSets[i].Name);
     end;

Ну, увереность-то есть, так как никаких меседжей нет...
Продолжая тему смайликов
:o((   :"o((  :oE


 
Miwa ©   (2004-05-12 15:10) [63]

Да. Еще на тему уверенности о наличии данных:
   for i:=0 to dtmData.ibdFiles.DataSetCount-1 do
     if dtmData.ibdFiles.DataSets[i] is TIBDataSet then
     begin
       dtmData.ibdFiles.DataSets[i].Active:=true;
       if dtmData.ibdFiles.DataSets[i].RecordCount <=0 then
         raise exception.Create("Dataset empty: "+dtmData.ibdFiles.DataSets[i].Name);

while not dtmData.ibdFiles.DataSets[i].Eof do
begin
s:=s+dtmData.ibdFiles.DataSets[i].Fields[1].AsString+#13#10;
dtmData.ibdFiles.DataSets[i].Next;
end;


S после всего этого равно списку файлов, которые есть в таблице...


 
div ©   (2004-05-12 15:20) [64]

а как насчет связки DataSet -> DataSource -> DBGridEh? Нигде не изменяется?
когда не остается логичных вариантов надо проверять фантастические )))


 
div ©   (2004-05-12 15:24) [65]

А может где-то вызывается DisableControls?


 
miwa ©   (2004-05-12 18:12) [66]

Отдохнул, подумал, успокоился ;о)).
Нет, связка нигде не изменяется. DisableControls нигде не вызывается.


> когда не остается логичных вариантов надо проверять фантастические
> )))

А вот кто скажет, что делать, когда проверены фантастические варианты?


 
div ©   (2004-05-12 18:34) [67]

DataSource.Enabled = True?


 
Miwa ©   (2004-05-12 18:51) [68]

Ну, это даже не фантастика. Конечно true.


 
miwa ©   (2004-05-14 17:08) [69]

Что же. Отругался. А теперь обьясню где была фантастика. В процедуре
procedure CheckDB(DataBase:TIBDataBase;path:string); раньше было if connected then exit;, а потом я почему-то исправил на Connected:=false;.
И всего-то!!!
Три дня самостоятельных поисков, мля!
Два дня напряга людей на форуме, мля!
Потом еще два дня самостоятельных поисков, мля!
И все из-за одной строки! МЛЯ!!!!!
А вот теперь обьясните мне, пожалуйста, почему? Почему эта замена призвела к тому, что база перестала грузится?
Да. Кстати. Регулярный бекап рулит ;о)).


 
div ©   (2004-05-15 16:02) [70]

совет: в будущем постарайся быть просто внимательней...
успеха...



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

Текущий архив: 2004.06.06;
Скачать: CL | DM;

Наверх




Память: 0.61 MB
Время: 0.04 c
9-1076264493
ArchangelM
2004-02-08 21:21
2004.06.06
Анимация!!


14-1085085506
тихий вовочка
2004-05-21 00:38
2004.06.06
глупые вопросы по проектированию


1-1085136758
sesh
2004-05-21 14:52
2004.06.06
в чем проблема, не догоню


14-1084547430
lancelot
2004-05-14 19:10
2004.06.06
Полный абзац


3-1084451936
SergeyM
2004-05-13 16:38
2004.06.06
Удаление из таблицы?