I have this problem with my source code in that I am currently using 6 link
list structures. Five of then are used for displaying saved files ( two way
link list )and one for seting up the window coordinates on the screen. It
seems that these pointers because they run at the same time and that I do
not dispose of them I keep on getting a heap overflow error. But here is
the tricky part I try to dispose of then and they still give me the error or
pascal tells me that this is a invalid pointer operation.
What can I do?
Here is my code:
{
?
o PROCEDURE PutClubData o
?
PROCEDURE PutClubData; (* Club Record*)
{Transfers the saved data into the link list}
(*------------------- INSERTCLUBLIST ----------------- -----------------*)
PROCEDURE InsertClublist;
{enters data into the linklist.}
(*------------------ ENTERDATAC ---------------------- -----------------*)
PROCEDURE EnterDataC;
{Saves the data into the link list}
BEGIN
IF Activated_Main = 1 THEN
(* Loads data of persons who are borrowers *)
BEGIN
IF Club.Borrower = True THEN
BEGIN
WITH CurrC^ DO
(* Assigns saved data to their
repective pointers*)
BEGIN
ID_number :=
Club.ID_number;
Name :=
Club.Name;
Address1 :=
Club.Address1;
PhoneNum :=
Club.PhoneNum;
City :=
Club.City;
END
END
ELSE
Exit;
END
ELSE
WITH CurrC^ DO
(* Assigns saved data to their repective pointers*)
BEGIN
ID_number :=
Club.ID_number;
Name := Club.Name;
Date := Club.Date;
Surname := Club.Surname;
END;
END;
(*------------INSERTCLUBLIST-------------------------- -----------------*)
BEGIN
IF FirstC = nil THEN
(* If data not loaded into list*)
BEGIN
New( CurrC );
EnterDataC;
CurrC^.Next := Nil;
CurrC^.Prev := Nil;
FirstC := CurrC;
TempC := CurrC;
END
ELSE
BEGIN
PrevC := tempC;
New( CurrC );
EnterdataC;
PrevC^.next := CurrC;
CurrC^.next := Nil;
CurrC^.prev := PrevC;
TempC := CurrC;
END;
END;
(*--------------------------------------*)
BEGIN
Done := False;
Reset( Clubfile );
SizeOfRec := 0;
SizeOfRec := fileSize( Clubfile );
(* Sets the file size of club file *)
FOR I:= 0 TO Pred( SizeOfRec ) DO
BEGIN
Seek( ClubFile, I );
Read( ClubFile, Club );
InsertClublist;
(* Inserts the records into a two dimensional link
list structure*)
END;
Close( ClubFile );
END; {PutClubData}
{
?
o PROCEDURE Setupwindow o
?
PROCEDURE setupwindow;
(* Sets up the screen to allow mutiple screens to be used at
the sametime *)
VAR
I : Integer;
BEGIN
New(activewin);
FOR I := 0 TO maxwin DO
New(windows[I]);
WITH activewin^ DO
BEGIN
winx1 := 1;
winy1 := 1;
winx2 := 80;
winy2 := 25;
WITH Scr DO
BEGIN
curx := wherex;
cury := wherey;
END;
END;
Activewin := Ptr( vidseg, $0000 );
CurrentWindow := 0;
WITH Windows[currentwindow]^ DO
BEGIN
winx1 := 1;
winy1 := 1;
winx2 := 80;
winy2 := 25;
WITH Scr DO
BEGIN
curx := 1;
cury := 1;
END;
END;
END(* setupscreen *);
-----------== Posted via Deja News, The Discussion Network ==----------
http://www.dejanews.com/ Search, Read, Discuss, or Start Your Own