![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Память и указатели
TUser © (2004-09-10 16:10:00)Как будет размещена в памяти такая структура
PLock = ^TLock;
TLock = record
Next:PLock;
FirstFound:PFound; // Это некий указатель, неважно какой
StrandsAndLoops:array [0..5] of TStrandOrLoop;
Num:integer;
end;
где
TStrandOrLoop = record
Chain:char;
S, E:integer;
Sequence:string;
end;
Создаю это дело через New, вроде бы все должно работать. И все работает, но на таком вот участке кода получаю AV
var pl1,pl:PLock;
for i:=0 to 5 do begin
pl1^.StrandsAndLoops[i].Chain:=pl^.StrandsAndLoops[i].Chain;
pl1^.StrandsAndLoops[i].S:=pl^.StrandsAndLoops[i].S;
pl1^.StrandsAndLoops[i].E:=pl^.StrandsAndLoops[i].E;
pl1^.StrandsAndLoops[i].Sequence:=pl^.StrandsAndLoops[i].Sequence;
end;
Аналогично будет AV, если написать
for i:=0 to 5 do
pl1^.StrandsAndLoops[i]:=pl^.StrandsAndLoops[i];
Ctrl-F7 на pl^ показывает полную ерунду, которая никак не соотвествует тем значениям, которые присвоены этому pl. То, что изначально они присвоены правильно - в этом я точно уверен. Но складывается впечатление, что в этом месте pl указывает совсем непонятно куда, где лежит какая-то лажа.
В чем тут может быть дело.
PS. Понимаю, что трудно ответить на такой вопрос, не перекопав исходники всего проекта, но вдруг ...
Digitman (2004-09-10 16:14:00) [21]
> И все работает
а что, собссно, работает-то ? New() ?