Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2011.11.06;
Скачать: [xml.tar.bz2];

Вниз

GetBookmark, GoToBookmark, FreeBookmark   Найти похожие ветки 

 
.dzmitry   (2011-07-13 11:32) [0]

после поиска (FindKey) в DataSet нужно восстанавливать курсор. много где встречался код такого плана:


function ItemIsFound(Id: Integer): Boolean;
var
 B: Pointer;
begin
 B := ItemsDataSet.GetBookmark(B);
 try
   Result := ItemsDataSet.FindKey([Id]);
 finally
   if Result then
     ItemsDataSet.GoToBookmark(B);
   ItemsDataSet.FreeBookmark(B);
 end;
end;


а что, если при вызове ItemsDataSet.GoToBookmark(B); произойдет ошибка. ItemsDataSet.FreeBookmark(B); не выполнится, возникнет утечка памяти. Будет ли правильным сделать еще один try..finally?


function ItemIsFound(Id: Integer): Boolean;
var
 B: Pointer;
begin
 B := ItemsDataSet.GetBookmark(B);
 try
   try
     Result := ItemsDataSet.FindKey([Id]);
   finally
     if Result then
       ItemsDataSet.GoToBookmark(B);
   end;
 finally
   ItemsDataSet.FreeBookmark(B);
 end;
end;


 
Медвежонок Пятачок ©   (2011-07-13 12:15) [1]

перед gotobookmark полезно проверять закладку на нил и на bookmarkvalid


 
.dzmitry   (2011-07-13 12:30) [2]

спасибо за совет, а что co 2 try..finally блоком для gotobookmark?


 
SQLEXPRESS   (2011-07-13 12:36) [3]

а чего не так?

B := ItemsDataSet.GetBookmark(B);
try
  Result := ItemsDataSet.FindKey([Id]);
  if Result then
  begin
    //перед gotobookmark полезно проверять закладку на нил и на bookmarkvalid
    ItemsDataSet.GoToBookmark(B);
  end;
finally
  ItemsDataSet.FreeBookmark(B);
end;


 
Медвежонок Пятачок ©   (2011-07-13 12:44) [4]

Вот эта хрень с try/finally зачем здесь:

try
 Result := ItemsDataSet.FindKey([Id]);
finally
if Result then
  ItemsDataSet.GoToBookmark(B);
end;


ФайндКей вернет либо тру, либо фалс.
Если тру, то курсор сдвинется.
Если не тру, то курсор не сдвинется.
Исключения не генерируется судя по документации.

Зачем здесь try/finally кроме как для мебели?


 
.dzmitry   (2011-07-13 12:51) [5]

все ясно, вопрос можно считать закрытым



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

Форум: "Начинающим";
Текущий архив: 2011.11.06;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.002 c
15-1310278541
antonn (work)
2011-07-10 10:15
2011.11.06
fastmm4 и работа без ide


15-1310030170
SQLEXPRESS
2011-07-07 13:16
2011.11.06
Распечатать много листов, шаблон дать менять юзеру


2-1310738232
Aljonushka
2011-07-15 17:57
2011.11.06
Как вставить столбец данных из Экселя в СтрингГрид?


2-1310773155
Германн
2011-07-16 03:39
2011.11.06
С чего бы возникает OnResize после OnShow


2-1311017214
R_R
2011-07-18 23:26
2011.11.06
Где находится VK_ENTER?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский