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

Вниз

Функция BookmarkValid   Найти похожие ветки 

 
LDV   (2012-01-30 12:16) [0]

По коду: если таблица CF_Table не содержит записей Bookmark2 = nil. Далее, когда в блоке finally я проверяю на валидность Bookmark2 валится исключение Access Violation. Разве функция не должна в этом случае вернуть false без иключения?
 


Bookmark1 := G_Controller.G_Table.GetBookmark;
     try
       Bookmark2 := G_Controller.CF_Table.GetBookmark;
       try
         if ActionOn = ACTION_ON_CATEGORIES then
           {  }
           Assert(G_Controller.G_FindById1(CATEGORIES_GROUP))
           {  }
         else
           {  }
           Assert(G_Controller.G_FindById1(PRODUCTS_GROUP));
           {  }
         Query.First;
         while not Query.Eof do
         begin
           SortableFieldList := TObjectList.Create;
           try
             for I := 0 to FieldNameList.Count - 1 do
             begin
               Field := Query.FindField(FieldNameList[I]);
               if (Field = nil) or
                 (FCAP_HideFieldNameList.IndexOf(FieldNameList[I]) <> -1) then
               begin
                 if G_Controller.CF_FindByName1(FieldNameList[I]) then
                   Field := G_Controller.GX_GetField(FCAP_Id1Field.AsInteger)
                 else
                   raise Exception.CreateResFmt(@FIELD_NOT_FOUND,
                     [FieldNameList[I]]);
                 {  }
                 Assert(Field <> nil);
                 {  }
               end;
               SortableFieldList.Add(TSortableField.Create(
                 Boolean(FieldNameList.Objects[I]), FieldNameList[I],
                 Field.DataType, Field.Value));
             end;
             CAP_IdList.AddObject(Query.Fields[0].AsString,
               SortableFieldList);
           except
             SortableFieldList.Free;
             raise;
           end;
           Query.Next;
         end;
       finally
         if G_Controller.CF_Table.BookmarkValid(Bookmark2) then // <- Ошибка, если Bookmark2 = nil
           G_Controller.CF_Table.GoToBookmark(Bookmark2);
         G_Controller.CF_Table.FreeBookmark(Bookmark2);
       end;
     finally
       if G_Controller.G_Table.BookmarkValid(Bookmark1) then
         G_Controller.G_Table.GoToBookmark(Bookmark1);
       G_Controller.G_Table.FreeBookmark(Bookmark1);
     end;


 
Ega23 ©   (2012-01-30 12:40) [1]


> Разве функция не должна в этом случае вернуть false без
> иключения?


Разве у тебя нет исходника, чтобы посмотреть, что должна или не должна вернуть функция?


 
Сергей М. ©   (2012-01-30 12:56) [2]


> Bookmark1 := G_Controller.G_Table.GetBookmark;
>       try
>         Bookmark2 := G_Controller.CF_Table.GetBookmark;


А накой шиш делать две одинаковых закладки ?


 
icWasya ©   (2012-01-30 14:13) [3]

Поведение BookmarkValid сильно зависит от используемой базы данных.
>А накой шиш делать две одинаковых закладки ?
Они разные.


 
Сергей М. ©   (2012-01-30 14:15) [4]


> Они разные


А, ну дв ..

G и CF



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

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

Наверх




Память: 0.48 MB
Время: 0.012 c
2-1327946153
Rorschach
2012-01-30 21:55
2012.06.03
Портирование С++ кода на Паскаль


15-1327753593
Димка На
2012-01-28 16:26
2012.06.03
Энергия солнца


1-1294237263
AlexT
2011-01-05 17:21
2012.06.03
Какой контейнер организовать?


15-1328041805
Юрий
2012-02-01 00:30
2012.06.03
С днем рождения ! 1 февраля 2012 среда


15-1328106469
yurikon
2012-02-01 18:27
2012.06.03
Нужна помощь по COM объекту