**************************Error Message*************************
Project p_bingo6.exe raised exception class EAccessViolation with message 'Access violation at address 004435B0 in module 'P_BINGO.EXE', Read of address 'FFFFFFFF',
Process stopped. Use Step or Run to continue.
프로그램 시작할때 발생하네요. ㅡ.ㅡ
CLASS 쓰는데에 약간 문제가 있어보이네요.
완전쵸보라 한번 막히니 해결할 길이 없슴당. 꼭 좀 도와주세용~~
*********SOURCE***********
type
t = Array[1..25] of Integer;
TPan = class
A: t;
c: Array[1..25] of Boolean;
bet: integer;
bingo, onetowin: Boolean;
constructor CREATE;
end;
TForm1 = class(TForm)
Button1: TButton;
.
.
procedure Button1Click(Sender: TObject);
.
.
);
private
{ Private declarations }
public
function price: integer;
function random25(temparray: t): t;
{ Public declarations }
end;
var
Form1: TForm1;
pan1, pan2, pan3, pan4, pan5, pan6 : TPan;
B: t;
numorder: integer;
playing: boolean;
credit: integer;
implementation
procedure TForm1.FormShow(Sender: TObject);
Begin
credit:=40;
newgame;
end;
procedure tform1.newgame;
begin
initvar;
pan1.CREATE;
pan2.CREATE;
pan3.CREATE;
pan4.CREATE;
pan5.CREATE;
pan6.CREATE;
.
.
constructor Tpan.CREATE;
var
i : integer;
begin
bingo:=FALSE; <------------------------이부분에 에러발생합니다.
onetowin:=FALSE;
bet:=0;
For I:=1 to 25 do C[I]:=FALSE;
For I:=1 to 25 do A[I]:= I;
//For I:=1 to 25 do B[I]:= I;
end;
자신만의 코딩 규칙이 필요합니다.
제 경우 많은 에러와 버그를 수정하며 얻은 저만의 버그와 에러를 피하는 코딩습관이 있습니다.
님도 코딩 규칙을 만들어서 자연스럽게 몸에 배이게 해야 합니다.
에러가 나는 원인은 생성되지 않은 인스턴스에 메모리를 핸들링하려고 해서 그렇습니다. 쉽게 말해서 클래스를 생성하지 않고, 클래스의 변수를 쓰려고 했습니다.
Pan.Create ---> Pan := TPan.Create;
수정하시면 됩니다.
수고하세요..
사족: 사실 이런 버그가 찾기 힘듭니다. 습관적으로 치기 때문에 오류가 없다고 믿어 버리거든요. 저두 가끔씩 헤메곤 하죠.. 하하..