![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Access Violation [D6, WinXP]
nitrino © (2005-08-18 16:24:00)Hi Всем!
Может кто подскажет в чем проблема...
Есть
type
TCellState = record
IsActive : Boolean;
Letter : Char;
Description : string [255];
end;
TCW = array of array of TCellState;
var
CW : TCW;
при попытке в другой процедуре написать
var
NewCell : TCellState;
..
CW[X,Y] := NewCell;
вылетает с Access Violation.
Спасибо!
nitrino (2005-08-18 16:56:00) [1]О! заработало :)) спасибо!
MetalFan (2005-08-18 16:52:00) [2]
> var
> CellState : TCellState;
> begin
> CellState.IsActive := Active;
> CellState.Letter := Letter;
> CellState.Description := Description;
> CW[X,Y] := CellState;
а зачем так, если можно написать:
> begin
> CW[X,Y].IsActive := Active;
> CW[X,Y].Letter := Letter;
> CW[X,Y].Description := Description;
?
nitrino (2005-08-18 16:40:00) [3]Ой, забыл :)
procedure TfrmMain.CreateNewCW(X,Y : Integer);
var
I,K : Integer;
begin
SetLength (CW,X,Y);
for I := 0 to X-1 do
for K := 0 to Y-1 do
SetCellState (I,K,True,#0,'');
end;
nitrino (2005-08-18 16:38:00) [4]Полный вариант:
procedure SetCellState (X, Y : Integer; Active : Boolean; Letter : Char; Description : string);
type
TCellState = record
IsActive : Boolean;
Letter : Char;
Description : string [255];
end;
TCW = array of array of TCellState;
var
CW : TCW;
...
procedure TfrmMain.SetCellState(X, Y : Integer; Active : Boolean; Letter : Char;
Description : string);
var
CellState : TCellState;
begin
CellState.IsActive := Active;
CellState.Letter := Letter;
CellState.Description := Description;
CW[X,Y] := CellState;
end;
Anatoly Podgoretsky (2005-08-18 16:36:00) [5]nitrino © (18.08.05 16:35) [3]
А точно есть? А процедура тоже точно?
nitrino (2005-08-18 16:35:00) [6]SetLength есть, до вызова процедуры:
SetLength (CW,I,K);
..
CW[X,Y] := NewCell; //попадает в диапазон памяти
MetalFan (2005-08-18 16:33:00) [7]а где SetLength?
Anatoly Podgoretsky (2005-08-18 16:31:00) [8]За памятью надо следить.