<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body><div>Here an example for you:<br></div>
<div> </div>
<div>type<br></div>
<div> </div>
<blockquote><div>{ IFile }<br></div>
<div> </div>
<div>IFile = interface<br></div>
<div>function GetName: string;<br></div>
<div>procedure SetName(AValue: string);<br></div>
<div>property Name: string read GetName write SetName;<br></div>
<div>end;<br></div>
<div> </div>
<div>TFileList=specialize TFPGList<IFile>;<br></div>
<div> </div>
<div> </div>
<div>{ TVideoFile }<br></div>
<div> </div>
<div>TVideoFile = class(TInterfacedPersistent, IFile)<br></div>
<div>private<br></div>
<div>FName: string;<br></div>
<div>FWidth: integer;<br></div>
<div>function GetName: string;<br></div>
<div>procedure SetName(AValue: string);<br></div>
<div>public<br></div>
<div>property Name: string read GetName write SetName;<br></div>
<div>property Width: integer read FWidth write FWidth;<br></div>
<div>end;<br></div>
<div>{ TAudioFile }<br></div>
<div> </div>
<div>TAudioFile = class(TInterfacedPersistent, IFile)<br></div>
<div>private<br></div>
<div>FName: string;<br></div>
<div>FArtist: string;<br></div>
<div>function GetName: string;<br></div>
<div>procedure SetName(AValue: string);<br></div>
<div>public<br></div>
<div>property Name: string read GetName write SetName;<br></div>
<div>property Artist: string read FArtist write FArtist;<br></div>
<div>end;<br></div>
<div> </div>
<div>var<br></div>
<div>Form1: TForm1;<br></div>
<div> </div>
<div>implementation<br></div>
<div> </div>
<div>{$R *.lfm}<br></div>
<div> </div>
<div>{ TAudioFile }<br></div>
<div> </div>
<div>function TAudioFile.GetName: string;<br></div>
<div>begin<br></div>
<div>Result:=FName;<br></div>
<div>end;<br></div>
<div> </div>
<div>procedure TAudioFile.SetName(AValue: string);<br></div>
<div>begin<br></div>
<div>FName:=AValue;<br></div>
<div>end;<br></div>
<div> </div>
<div>{ TVideoFile }<br></div>
<div> </div>
<div>function TVideoFile.GetName: string;<br></div>
<div>begin<br></div>
<div>Result:=FName;<br></div>
<div>end;<br></div>
<div> </div>
<div>procedure TVideoFile.SetName(AValue: string);<br></div>
<div>begin<br></div>
<div>FName:=AValue;<br></div>
<div>end;<br></div>
<div> </div>
<div> </div>
<div>{ TForm1 }<br></div>
<div> </div>
<div>procedure TForm1.FormCreate(Sender: TObject);<br></div>
<div>var<br></div>
<div>V1,V2:TVideoFile;<br></div>
<div>A1,A2:TAudioFile;<br></div>
<div>Fl:TFileList;<br></div>
<div>begin<br></div>
<div>Fl:=TFileList.Create;<br></div>
<div>V1:=TVideoFile.Create;<br></div>
<div>V1.Name:='V';<br></div>
<div>V1.Width:=100;<br></div>
<div>A1:=TAudioFile.Create;<br></div>
<div>A1.Name:='A';<br></div>
<div>A1.Artist:='Art';<br></div>
<div>FL.Add(V1);<br></div>
<div>FL.Add(A1);<br></div>
<div>V2:=TVideoFile(FL.Items[0]);<br></div>
<div>A2:=TAudioFile(Fl.Items[1]);<br></div>
<div>ShowMessage(V2.Name);<br></div>
<div>ShowMessage(A2.Name);<br></div>
<div>end;<br></div>
</blockquote><div> </div>
<div>What you think?<br></div>
<div> </div>
<div>Ara<br></div>
<div> </div>
<div>On Thu, Mar 12, 2015, at 05:26 AM, Marcos Douglas wrote:<br></div>
<div>> On Thu, Mar 12, 2015 at 8:39 AM, aradeonas <aradeonas@operamail.com><br></div>
<div>> wrote:<br></div>
<div>> ><br></div>
<div>> > For example I have interface for filetypes that have type,size,name but<br></div>
<div>> > have class for video,audio and picture and I want to add them in the<br></div>
<div>> > list and then get them and get name and size and other propertice<br></div>
<div>> > considering type.<br></div>
<div>> > Regards,<br></div>
<div>> > Ara<br></div>
<div>><br></div>
<div>> So work using objects directly.<br></div>
<div>> Why do you want to use interfaces if you will use casting for a concrete<br></div>
<div>> class?<br></div>
<div>><br></div>
<div>> Marcos Douglas<br></div>
<div>><br></div>
<div>> --<br></div>
<div>> _______________________________________________<br></div>
<div>> Lazarus mailing list<br></div>
<div>> Lazarus@lists.lazarus.freepascal.org<br></div>
<div>> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus<br></div>
<div> </div>
<pre>
-- 
http://www.fastmail.com - A no graphics, no pop-ups email service
</pre>
</body>
</html>