Source Code for Error 203 Heap Overflow error (Urgent Help needed)

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

?

Quote
}

                 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

?

Quote
}

                 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