Главная страница
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.037 c
2-1123366404
msm
2005-08-07 02:13
2005.09.11
Преобразование минуты:секунды в секунды


14-1124170032
Установщик
2005-08-16 09:27
2005.09.11
Delphi 2005


3-1122618282
Jamik
2005-07-29 10:24
2005.09.11
Как можно изменить свойства ячейки Excel с помощю DDE


14-1123920047
Копир
2005-08-13 12:00
2005.09.11
Один довод для усиления мусульманской диаспоры в развитых странах


8-1114859632
Vladimir D Belousov
2005-04-30 15:13
2005.09.11
Не пойму как работает CopyMode у TCanvas