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

Вниз

TStringGrid+TSparseArray   Найти похожие ветки 

 
Tuborg ©   (2005-05-20 15:42) [0]

Есть некая прога, которая всю дорогу кидает что-то в StringGrid, где-то через 12 часов работы её начинает плющить ошибкой EAccessViolation, поскольку кто-то внутри механизмов TStringGrida начинает читать адреса с младшими адресами (0x00000XXX). При разборе оказалось, что существует некий механизм динамического перераспределения хранимых данных внутри StringGrid"а, основанного на классе TSparsePointersArray. Оно перестаёт правильно выделять указатели в области свободной памяти. Где можно найти информацию по этим механизмам или по классу TSparsePointersArray. DelphiHelp и все информационные ресурсы, которые я просмотрел не имеют вообще даже краткого описания этих вещей.  Может кто сталкивался? ... помогите пожалуйста...


 
Digitman ©   (2005-05-20 15:45) [1]


> Оно перестаёт правильно


цитируй фрагмент кода, где, по твоему мнению, "оно начинает неправильно" ..


 
Tuborg ©   (2005-05-20 18:12) [2]


function  TSparsePointerArray.GetAt(Index: Integer): Pointer;
var
 byteP: PChar;
 secIndex: Cardinal;
begin
 { Index into Section Directory using high order part of
   index.  Get pointer to Section. If not null, index into
   Section using low order part of index. }
 if Index = cachedIndex then
   Result := cachedPointer
 else begin
   secIndex := Index shr secShift;
   if secIndex >= slotsInDir then
     byteP := nil
   else begin
     byteP := secDir^[secIndex];
     if byteP <> nil then begin
       Inc(byteP, (Index and indexMask) * SizeOf(Pointer));
     end
   end;
   if byteP = nil then Result := nil else Result := PPointer(byteP)^;
   cachedIndex := Index;
   cachedPointer := Result
 end
end;

Сам по собе этот метод использую не я, а какие-то внутренние механизмы в TStringGrid"e.
Строчка вызывающая EAccessViolation - выделена жирным шрифтом.



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

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

Наверх




Память: 0.47 MB
Время: 0.047 c
14-1116428066
Jeer
2005-05-18 18:54
2005.06.06
Free Pascal via Delphi


14-1116657776
lookin
2005-05-21 10:42
2005.06.06
Какое окно все-таки активно?


4-1113465065
axx
2005-04-14 11:51
2005.06.06
Помогите с hook ом клавиатуры.


14-1116414716
HBreaker
2005-05-18 15:11
2005.06.06
Как будет дублёнка по украински


9-1110470642
electroowl
2005-03-10 19:04
2005.06.06
Помогите установить glscene!!!