[fpc-pascal]Linked List/ pointers/ casting/ OOP Question

Ron Weidner xecronix at yahoo.com
Fri Jul 9 23:54:12 CEST 2004


I thought I was getting closer to understanding
pointers but it appears that I'm still not getting it.
 I wrote the following code fragment but it doesn't
compile.  the errors I get are...

Widget_container_class.pas(80,27) Error: Illegal
qualifier
Widget_container_class.pas(88,23) Error: Illegal
qualifier
Widget_container_class.pas(88,29) Error: Illegal
expression
Widget_container_class.pas(88,29) Fatal: Syntax error,
";" expected but "(" found

I numbered lines 80 and 88 in comments so that the
error messages make sense.  (to the experienced
programmer like yourself :) )Please let me know if you
see what the problems are.  

{$H+}
unit Widget_container_class;
interface
uses
Attribute_class,Widget_class,Widget_entity_class,web;
type PWidgetList=^TWidgetList;
TWidgetList=record
	widget:pointer;
	next:PWidgetList;
end;

type PWidgetContainer=^TWidgetContainer;
TWidgetContainer=Object(TWidget)
	private 
		PCurWidget,PHeadWidget:PWidgetList;
		text:string;
	public	
		constructor init(ATag:string);	
		procedure Render();
		procedure SetText(str:string);
		function GetText():string;	
		procedure MoveFirstWidget();
		procedure MoveLastWidget();
		procedure AddWidget(PWidget:pointer);
		procedure RenderWidgets();
end;

procedure TWidgetContainer.RenderWidgets();
begin
	MoveFirstWidget();
	while (PCurWidget^.next <> nil) do
	begin
		PCurWidget^.widget:=PWidget(PCurWidget^.widget); //
cast the pointer to a widget pointer
		if (PCurWidget^.widget^.meta = 'ENTITY') then //
this is line 80
		begin
		
PCurWidget^.widget:=PWidgetEntity(PCurWidget^.widget);
		end
		else
		begin
		
PCurWidget^.widget:=PWidgetContainer(PCurWidget^.widget);
		end;
		PCurWidget^.widget^.Render(); //line 88
		PCurWidget:=PCurWidget^.next;
		dispose(PHeadWidget);
		PHeadWidget:=PCurWidget;		
	end;
end;

Ron_W


		
__________________________________
Do you Yahoo!?
New and Improved Yahoo! Mail - Send 10MB messages!
http://promotions.yahoo.com/new_mail 




More information about the fpc-pascal mailing list