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

Вниз

Access Violation   Найти похожие ветки 

 
nitrino ©   (2005-08-18 16:24) [0]

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.

Спасибо!


 
Anatoly Podgoretsky ©   (2005-08-18 16:31) [1]

За памятью надо следить.


 
MetalFan ©   (2005-08-18 16:33) [2]

а где SetLength?


 
nitrino ©   (2005-08-18 16:35) [3]

SetLength есть, до вызова процедуры:
SetLength (CW,I,K);

..

CW[X,Y] := NewCell; //попадает в диапазон памяти


 
Anatoly Podgoretsky ©   (2005-08-18 16:36) [4]

nitrino ©   (18.08.05 16:35) [3]
А точно есть? А процедура тоже точно?


 
nitrino ©   (2005-08-18 16:38) [5]

Полный вариант:

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;


 
nitrino ©   (2005-08-18 16:40) [6]

Ой, забыл :)

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;


 
MetalFan ©   (2005-08-18 16:52) [7]


> 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:56) [8]

О! заработало :)) спасибо!



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

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

Наверх




Память: 0.48 MB
Время: 0.044 c
9-1116081379
Sakhnov K S
2005-05-14 18:36
2005.09.11
Всех прошу о помощи! - протестируйте игрушку


1-1124699699
Andrushk
2005-08-22 12:34
2005.09.11
Нужен компонент типа TPanel но с полосами прокрутки


2-1123531110
Nox7777
2005-08-08 23:58
2005.09.11
Как убрать мелькания при прорисовке изображений


14-1124261048
phpbb
2005-08-17 10:44
2005.09.11
Подскажите хороший форум по phpbb


9-1114964155
Drinkino
2005-05-01 20:15
2005.09.11
тест газосварщика