[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