Re: [Lazarus] Valladolid Programming Contest simple test fails at compile?
yes, it does read from standard input and output file. So there's no need to create textfiles. (It is possible to mention the input and output files in the program declaration such as : program test1(input, output). Adding {$MODE OBJFPC}on Joshyfun's suggestion solved the compiler error. Now I have an time exceeded issue, which doesn't seem too likely as I implemented a rather standard solution. I wonder if the repeat until eof or while eof do is not the issue...the program would be waiting endlessly for another input which isn't coming. Usually one checks the input file is empty by using eof. Is there another way recommended for these contests? Thanks all of you for the help! Thierry Vincent Snijders wrote: waldo kitty schreef: Mehmet Erol Sanliturk wrote: On Thursday 26 March 2009 05:16:32 pm Thierry Coq wrote: TEST PROGRAM program Test1; [CHOMP] until eof; end. END OF TEST PROGRAM ___ At until eof , there should be a file variable name as eof ( FN ) where FN may be var FN : Text ; or var FN : File ... ; not only that, there's nothing that names and opens that file, either... So, it must read from stdin, which seems a reasonable thing in contests. Vincent ___ Lazarus mailing list Lazarus@lazarus.freepascal.org http://www.lazarus.freepascal.org/mailman/listinfo/lazarus ___ Lazarus mailing list Lazarus@lazarus.freepascal.org http://www.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] Interact with M$ Word
I agree with Phil. Automation is completely independent of the language. There are currently three solutions to do what you want, in FPC/Lazarus. a - wait for the next full version of FPC. Automation is scheduled to be included. COM is already available. b - based on the COM layer, build a Word Interface unit to insert your data into the word tables. c - use Excel as an intermediate. Generate your tables there, and ask your user or do a little VB code to load the Excel tables into the Word document. As a help, I am doing a port of Excel Automation of which a very preliminary version is available here: http://tcoq.free.fr/composants.html. It uses the COM layer to provide an easier access to Excel Automation, from FPC/Lazarus. You can use it either as an example to do the b) option, or as a means to do c) option. Good luck, Thierry Mac Programmer wrote: Automation has nothing to do with VBA. That's the whole point of Automation, that it's language independent. As Felipe rightly points out, many Laz users could profit from a library for creating office documents. Ideally it would have 3 notable characteristics: (1) Can create any type of office document programmatically without a particular office app or version being present. For word processing documents, RTF is perfect since it's a text format that is well supported by all word processors. FPC includes a unit for working with RTF documents. I created a thin wrapper for it that allows you to create RTF documents: http://wiki.lazarus.freepascal.org/XDev_Toolkit (2) Can manipulate the resulting RTF file with the office app. On Windows, Automation works great for that purpose. Your only real challenges here are: (a) Figuring out a way to mark the place in the document where the table should be inserted. You can do this in a number of ways, for example if your app or your users create documents based on a template that you provide, you could insert a hidden bookmark in the template and look for this in the document's Fields collection via Automation. (b) FPC 2.2.2 does not fully support Automation yet, it appears. You can insert text into a Word document from the clipboard via Automation with something like this: worddoc.ActiveWindow.Selection.Paste; To insert an RTF file into the document: worddoc.ActiveWindow.Selection.InsertFile(rtffilename, ConfirmConversions:=False); (3) Can do (2) across a variety of word processors in a cross-platform, cross-app way. This includes Word, OO and Apple's Pages. On Windows you can use Automation to manipulate both Word and OO. On OS X you can use AppleScript to manipulate word processors that include a dictionary of classes: http://wiki.lazarus.freepascal.org/Multiplatform_Programming_Guide#Making_do_without_Windows_COM_Automation Thanks. -Phil ___ Lazarus mailing list Lazarus@lazarus.freepascal.org http://www.lazarus.freepascal.org/mailman/listinfo/lazarus ___ Lazarus mailing list Lazarus@lazarus.freepascal.org http://www.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] Free Open Source Diagram Components for Lazarus?
Hello Flàvio, I would hope to have rather a Lazarus-compatible license such as LGPL or Mozilla. Pure GPL for a component is, in my case, somewhat of an issue. I would happily give the work to improve the drawing component, but not necessarily the science that the component represents. Thanks for the link in any case. Essmodel is, indeed, very interesting. Thierry Flávio Etrusco wrote: On Sun, Jan 25, 2009 at 7:41 PM, Thierry Coq t...@free.fr wrote: I'm looking for a diagramming components for Lazarus, to draw circles, rectangles, and connectors between them that are resized or moved when the components are moved. This would be used to create graph editors, for example for designing dynamic models. Do you have ideas about a mature component I could use for this purpose? I've been thinking about using GLScene as a 2D layer, but it seems to be overkill for my purpose (although 3D diagrams... hum.) Best regards, Thierry If GPL is an option, ESS-Model may be of some use: http://essmodel.sourceforge.net/ Best regards, Flávio ___ Lazarus mailing list Lazarus@lazarus.freepascal.org http://www.lazarus.freepascal.org/mailman/listinfo/lazarus ___ Lazarus mailing list Lazarus@lazarus.freepascal.org http://www.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] Free Open Source Diagram Components for Lazarus?
Both SimpleGraph and DiagramDesigner look promising! - SimpleGraph seems easier to understand, and the license is very simple: the original author is not responsible, please mail him the sources changes, and keep his name as original author, - DiagramDesigner has another license: no responsible, but also no changes allowed. So we must ask permission for any changes. I suggest the next step is to ask both authors if they are willing to port these tools to Lazarus, first as a Windows port, then as a multi-OS port, or willing to let US do the porting, and if they are willing to use a recognized license scheme such as Lazarus'. Best regards, Thierry Lee Jenkins wrote: Lee Jenkins wrote: ik wrote: There is the following components (for Delphi, but I think it can be converted): http://angusj.com/delphi/ It's freeware with source, so maybe we shoudl contact the developer if it will be converted to lazarus. Ido This one too is freeware and might make a good candidate to port assuming you could get permission from the author. Great component btw. -- Warm Regards, Lee Forgot the link: http://www.delphiarea.com/products/delphi-components/simplegraph/ -- Warm Regards, Lee ___ Lazarus mailing list Lazarus@lazarus.freepascal.org http://www.lazarus.freepascal.org/mailman/listinfo/lazarus ___ Lazarus mailing list Lazarus@lazarus.freepascal.org http://www.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] Free Open Source Diagram Components for Lazarus?
Yes, I know about StarUML, it's a good tool, but it's dead: little work has been done since 2005. And the code base is so huge, it seems daunting to port the code base to Lazarus as is. What license is it delivered with? BR Thierry Alex Kovacic wrote: - try StarULM (made with delphi?) http://staruml.sourceforge.net/en/ At 02:12 AM 26/01/2009 -0200, you wrote: On Sun, Jan 25, 2009 at 7:41 PM, Thierry Coq t...@free.fr wrote: I'm looking for a diagramming components for Lazarus, to draw circles, rectangles, and connectors between them that are resized or moved when the components are moved. This would be used to create graph editors, for example for designing dynamic models. Do you have ideas about a mature component I could use for this purpose? I've been thinking about using GLScene as a 2D layer, but it seems to be overkill for my purpose (although 3D diagrams... hum.) Best regards, Thierry If GPL is an option, ESS-Model may be of some use: http://essmodel.sourceforge.net/ Best regards, Flávio ___ Lazarus mailing list Lazarus@lazarus.freepascal.org http://www.lazarus.freepascal.org/mailman/listinfo/lazarus Alex Kovacic(PTC,HPTC,MHGSA,BSc,MSc) SENIOR SCIENTICT, FISH Lab CYTOGENETICS UNIT, SEALS,Level 4, Campus Centre, Prince Of Wales Hospital, RANDWICK, NSW, 2031, AUSTRALIA, Tel: (61) (02) 9382 9168 Fax: (61) (02) 9382 9157 email1:a.kova...@unsw.edu.au email2:kovac...@sesahs.nsw.gov.au ___ Lazarus mailing list Lazarus@lazarus.freepascal.org http://www.lazarus.freepascal.org/mailman/listinfo/lazarus ___ Lazarus mailing list Lazarus@lazarus.freepascal.org http://www.lazarus.freepascal.org/mailman/listinfo/lazarus
[Lazarus] Free Open Source Diagram Components for Lazarus?
I'm looking for a diagramming components for Lazarus, to draw circles, rectangles, and connectors between them that are resized or moved when the components are moved. This would be used to create graph editors, for example for designing dynamic models. Do you have ideas about a mature component I could use for this purpose? I've been thinking about using GLScene as a 2D layer, but it seems to be overkill for my purpose (although 3D diagrams... hum.) Best regards, Thierry ___ Lazarus mailing list Lazarus@lazarus.freepascal.org http://www.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] Saving user created component structure to LFM file
Dear Martin, In Delphi, I frequently used the mecanism you described, but I had to use the root WriteComponentRes procedure, not the WriteComponent one, which is only available for subcomponents. I did not use TCollection, which is capable of writing components (too complex for my usage). What I did do, was create container classes with TComponent as Parent. By default, TComponent stores all children. The root component must also give a name to each component, or the storage will not work. The end result is the capability to store a hierarchy of objects in a consistent manner. You should look for WriteComponentResFile in classes.inc and see how this work, with a few tries. Hope this helps, Thierry Martin Friebe wrote: Hi, I have a problem saving a certain component struicture to an LFM (lazarus) file and read it back. since a good amount of code is in FPC, I am not sure which list to go to? There is classes/writer.inc with has TBinaryObjectWriter. This is where things go first. Then, later this gets translated into text. This translation seems to be stricter in terms of what can be nested. Anyway the problem is, that if I want to save a component (that can be of different class/classes) then I can use WriteComponent. But only if I am in a Component that is itself written with WriteComponent. In the final LFM it seems a Component can only be nested in an other component. It does not seem to be possible to put it in: - Not in a subcomponent (because a subcomponent does not write it's class, but just the properties that are visible for the class given by the property property Foo: TPanel read .. write ... writes Foo.Name = 'abc' Foo.Top = 1 ... - Not in a TCollection, or at least I havent managed. Also again a TCollection is restricted to one classs for all Items - Not Using DefineProperties All propwerties with define property are of the kind Name = Value I can add a list, but even inside the list I can not write a component What I want to archive is theFollowing. I have TMainComponent = class (foo) property Options : TPersitentBar read x write x; end If It has to be it can be a TComponent, with SubComponent in TComponentStyle. Problem 1) Options is always created in the constructor, it can not be stored as a nested Component in the LFM. If it was, it would exist twice (once created in the constructor, and once loaded from the lfm) TPersitentBar should have a list of components, variable number, and different subclasses (could inherit from TPersistent, only Component if it makes it easier) How can I get this list saved into the lfm? Each item has a diff class, and diff properties, so they must saved via WriteComponent. (Which does not work for DefineProerties) And of course a default list of items is created in the constructor, so I need to detect if they are loaded, and remove the defaults. Any Idea? Example of the final structure (if only it was valid) object MainComp1 : TMainComponent Options.AllowFoo = 1 Options.AllowABC = 2 object Options.SubOptionsForCars : TCarOptions MAxCar = 4 end object Options.SubOptionsForTrains : TTrainOptions MAxTrain = 1 end end Best Regards Martin ___ Lazarus mailing list Lazarus@lazarus.freepascal.org http://www.lazarus.freepascal.org/mailman/listinfo/lazarus ___ Lazarus mailing list Lazarus@lazarus.freepascal.org http://www.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] Making components interpreted?
Marco van de Voort wrote: On Fri, Dec 05, 2008 at 11:35:26PM +0100, Thierry Coq wrote: The research could be sped up quite fast by looking at how Kylix implemented package loading some time ago. I think it had dynamic loading on Unix. Maybe, but there are both license issues, and also the chance that Kylix solution is a Linux hack looming over htat. One just needs to look at which APIs Kylix used in Linux: there is no chance of a breach of licence there. I'm not suggesting to copy/paste code. After all, I have independtly reimplemented the library loading code in Windows, so it should be possible to do the same kind of trick in Linux. ___ Lazarus mailing list Lazarus@lazarus.freepascal.org http://www.lazarus.freepascal.org/mailman/listinfo/lazarus ___ Lazarus mailing list Lazarus@lazarus.freepascal.org http://www.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] Making components interpreted?
The research could be sped up quite fast by looking at how Kylix implemented package loading some time ago. I think it had dynamic loading on Unix. Best regards, Thierry Marco van de Voort wrote: On Fri, Dec 05, 2008 at 02:36:48PM +0200, Reenen Laurie wrote: I think simply implementing packages would be easier, and also serves other purposes. (it's not just a plugin system for Lazarus, but at the same time for the generated apps) Is this in the short / mid term pipeline? Nobody is currently working on it. There is even a trajectory of research before it. (to come up with the best approach to implement them on *nix) http://wiki.freepascal.org/packages Because I guess that's all I actually wanted, but thought that perhaps an interpreter would be a shortcut. I think the interpreter wouldn't be that much more easy to get workable, its is not just the IDE, but you need to define script-binary interfaces anywhere. But more importantly, it would break compatibility (with delphi, with the current situation) horribly, AND make packages dual language, dual-tool (pascalscript and native pascal). Despite being static, at least the packages system now is both versatile and Delphi pkgs can be ported reasonably fast. IMHO the solution is worse than the problem here. ___ Lazarus mailing list Lazarus@lazarus.freepascal.org http://www.lazarus.freepascal.org/mailman/listinfo/lazarus ___ Lazarus mailing list Lazarus@lazarus.freepascal.org http://www.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] New Excel Interface Component
It may be the same problem I encountered on the Excel translation: Delphi understands DISPID interfaces, while FPC doesn't entirely, for the moment. Using the manner in which ExcelInterface manages DISPID could be a good way to do the same thing for OOO. I'll give it a thought. Thierry Coq Luiz Americo Pereira Camara wrote: Henrique Faria escreveu: Very good. What about something to OpenOffice? It seems fpc OLE support is not good enough to work with OO. Attached are a Lazarus project and a Delphi project that converts a OO document to pdf. Both shares the same unit (OOPdf) and have the same logic. Delphi version works OK. Lazarus one crashes. Using: Lazarus 0.9.27 + fpc 222 TurboDelphi Luiz ___ Lazarus mailing list Lazarus@lazarus.freepascal.org http://www.lazarus.freepascal.org/mailman/listinfo/lazarus ___ Lazarus mailing list Lazarus@lazarus.freepascal.org http://www.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] New Excel Interface Component
Yes, definitively, I've checked, this code seems to be currently geared to use DISPID interfaces. This works in Delphi, but not in FPC for the time being. For example, the following code: fDocument := fDesktop.loadComponentFromURL('file:///'+ StringReplace(FileName, '\', '/', [rfIgnoreCase, rfReplaceAll]) , '_blank', 0, wProperties); declares fDocument as an OleVariant. The author hopefully expects FPC to understand how to go and fetch loadComponentFromURL. It ain't gonna work ;-). It should be done this way: var fDocument : IDispatch; ... fDocument.InvokeDispatch( DISPID_LOADCOMPONENTFROMURL, ...); Thierry Coq Luiz Americo Pereira Camara wrote: Henrique Faria escreveu: Very good. What about something to OpenOffice? It seems fpc OLE support is not good enough to work with OO. Attached are a Lazarus project and a Delphi project that converts a OO document to pdf. Both shares the same unit (OOPdf) and have the same logic. Delphi version works OK. Lazarus one crashes. Using: Lazarus 0.9.27 + fpc 222 TurboDelphi Luiz ___ Lazarus mailing list Lazarus@lazarus.freepascal.org http://www.lazarus.freepascal.org/mailman/listinfo/lazarus ___ Lazarus mailing list Lazarus@lazarus.freepascal.org http://www.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] New Excel Interface Component
Link should be fixed now. Luiz Americo Pereira Camara wrote: Thierry Coq escreveu: Yes, definitively, I've checked, this code seems to be currently geared to use DISPID interfaces. This works in Delphi, but not in FPC for the time being. For example, the following code: fDocument := fDesktop.loadComponentFromURL('file:///'+ StringReplace(FileName, '\', '/', [rfIgnoreCase, rfReplaceAll]) , '_blank', 0, wProperties); declares fDocument as an OleVariant. The author hopefully expects FPC to understand how to go and fetch loadComponentFromURL. It ain't gonna work ;-). It should be done this way: var fDocument : IDispatch; ... fDocument.InvokeDispatch( DISPID_LOADCOMPONENTFROMURL, ...); Thierry Coq I tried to download your component to see the implementation but i'm getting Page not found message for both packages (binary and src) Can you take a look at it? Luiz ___ Lazarus mailing list Lazarus@lazarus.freepascal.org http://www.lazarus.freepascal.org/mailman/listinfo/lazarus ___ Lazarus mailing list Lazarus@lazarus.freepascal.org http://www.lazarus.freepascal.org/mailman/listinfo/lazarus
[Lazarus] Issue with IDispatch.Invoke: Can't set Word.Application.Visible to false?
Hello, I've trying to connect to a Word or Excel application with Lazarus 0.9.26. The IDispatch does not work, I've tried going to the Invoke API, and it still doesn't work. I'm able to create a Word.Application objet, I'm even able to get the pointer to the Visible property. I just can't set the Visible property to true: I get the error message: // -2147352572 = DISP_E_PARAMNOTFOUND: parameter not found Please see attached code. Does somebody know how to call Invoke on IDispatch or better still, how to call directly methods and properties of Word or Excel objects in Lazarus? BR Thierry object Form1: TForm1 Left = 332 Height = 300 Top = 158 Width = 400 Caption = 'Form1' ClientHeight = 300 ClientWidth = 400 ParentFont = False LCLVersion = '0.9.26' object Button1: TButton Left = 96 Height = 25 Top = 70 Width = 75 Caption = 'Test' OnClick = Button1Click TabOrder = 0 end object Memo1: TMemo Left = 24 Height = 141 Top = 121 Width = 272 Lines.Strings = ( 'Memo1' ) TabOrder = 1 end end { Ceci est un fichier ressource généré automatiquement par Lazarus } LazarusResources.Add('TForm1','FORMDATA',[ 'TPF0'#6'TForm1'#5'Form1'#4'Left'#3'L'#1#6'Height'#3','#1#3'Top'#3#158#0#5'Wi' +'dth'#3#144#1#7'Caption'#6#5'Form1'#12'ClientHeight'#3','#1#11'ClientWidth'#3 +#144#1#10'ParentFont'#8#10'LCLVersion'#6#6'0.9.26'#0#7'TButton'#7'Button1'#4 +'Left'#2'`'#6'Height'#2#25#3'Top'#2'F'#5'Width'#2'K'#7'Caption'#6#4'Test'#7 +'OnClick'#7#12'Button1Click'#8'TabOrder'#2#0#0#0#5'TMemo'#5'Memo1'#4'Left'#2 +#24#6'Height'#3#141#0#3'Top'#2'y'#5'Width'#3#16#1#13'Lines.Strings'#1#6#5'Me' +'mo1'#0#8'TabOrder'#2#1#0#0#0 ]); unit FMainTestWord; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls; type { TForm1 } TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); private { private declarations } public { public declarations } end; var Form1: TForm1; implementation uses Windows, Variants, ComObj, ActiveX; { TForm1 } procedure TForm1.Button1Click(Sender: TObject); const ServerName = 'Word.Application'; var Server : OleVariant; Id : TCLSID; GuID : TGUID; aServer : IDispatch; aResult: HRESULT; Member: WideString; lDispID: Integer; Params: TDispParams; ExceptInfo : TExcepInfo; VarResult: OleVariant; ArgErr : DWord; LocalVariantArg : array[0..3] of TPROPVARIANT; dispidNamed : DISPID; begin if Assigned(InitProc) then TProcedure(InitProc); aServer := nil; Id := ProgIDToClassID(ServerName); GuID := ProgIDToClassID(ServerName); dispidNamed := DISPATCH_PROPERTYPUT; Member := 'Visible'; ldispID := 0; FillChar(ExceptInfo, SizeOf(ExcepInfo),0); FillChar(Params, SizeOf(DispParams),0); FillChar(LocalVariantArg,SizeOf(LocalVariantArg),0); Params.rgvarg := @LocalVariantArg; Memo1.Lines.Clear; try //Server := CreateOleObject(ServerName); //Server := CreateComObject(GuiD); aResult := CoCreateInstance(GuiD,nil,CLSCTX_INPROC_SERVER or CLSCTX_LOCAL_SERVER, IDispatch, aServer); Memo1.Lines.Add('CoCreateInstance Result =' +IntToStr(aResult)); //aServer.QueryInterface(IDispatch,Server) //Server := aServer; except Memo1.Lines.Add('Unable to start Word.'); Exit; end; //Server.Visible := True; {Make Word visible} aResult := aServer.GetIDsOfNames(GUID_NULL, @Member, 1, LOCALE_USER_DEFAULT, @lDispID); Memo1.Lines.Add('GetIDsOfNames on Visible Result =' +IntToStr(aResult)); (* Params.rgvarg[0].VT := varError; Params.rgvarg[0].scode := DISP_E_PARAMNOTFOUND; Params.rgvarg[1].VT := varError; Params.rgvarg[1].scode := DISP_E_PARAMNOTFOUND;*) // the first parameter is a bool LocalVariantArg[0].VT := VT_BOOL; LocalVariantArg[0].boolVal := True; Params.cArgs := 1; Params.cNamedArgs := 1; Params.rgdispidNamedArgs:= @dispidNamed; aResult := aServer.Invoke( lDispID, GUID_NULL, 0, DISPATCH_PROPERTYPUT, Params, @VarResult, @ExceptInfo, @ArgErr); Memo1.Lines.Add('Invoke on Visible Result =' +IntToStr(aResult)); // -2147024809 = COR_E_ARGUMENT: wrong parameters // -2147352572 = DISP_E_PARAMNOTFOUND: parameter not found {Open existing document} //Substitute your path and doc //Server.Documents.Open('c:\Test.doc'); end; initialization {$I FMainTestWord.lrs} end. ___ Lazarus mailing list Lazarus@lazarus.freepascal.org http://www.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] [OT] - Small PC Suggestions?
Lee Jenkins wrote: Hi all, I'm wondering if anyone can suggestion a small pc for running a simple gtk lazarus app with synapse on? Basically, I need to mount the small PC onto or close to a 15 flat LCD monitor. It's for a bump bar system. Like you see in fast food restaurants that display customer orders for the kitchen staff to prepare. I've tested lazarus on eeePC and it works. I don't know about alternatives. The screen is only 480 pixels high, so that might be an issue. Depends on what you want to do. Thierry ___ Lazarus mailing list Lazarus@lazarus.freepascal.org http://www.lazarus.freepascal.org/mailman/listinfo/lazarus
[Lazarus] Installing Lazarus + FPC on eeePC
Hi all, I've just bought a new eeePC and I've trying to install FPC and Lazarus on it. No success up to now. I've tried installing libglib1.2, etc. but I still get a segmentation fault on FPC, can't even do a make clean. I've tried both FPC 2.0.0.4 and 2.2.0-1 but no success. Has anyone seen a clear installation procedure on eeePC anywhere? BR Thierry PS. This is a message repeat to have this message in a separate discussion thread. ___ Lazarus mailing list Lazarus@lazarus.freepascal.org http://www.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] FYI: Shared Libraries support
Hello, I don't understand the issue. As Razvan writes, isn't it an OS issue? For example, please find attached a small but complete example I've scratched together this morning to show how one can use dynamically DLLs in Windows. Obviously, a minor variation of the code could easily be done for the various linuxes. FPC and Lazarus therefore do have today the capacity for dynamic loading of DLLs. It may be the compiler could add some syntactic glue, but nothing a competent programmer cannot do on his own with minor work, or encapsulate within a component. See the example. I guess GLScene is doing it already. Or is there something I have missed here? Best regards, Thierry Coq Razvan Adrian Bogdan a écrit : On Linux they used the OS abilities and naming rules to prevent a dll hell, since a typical Linux system contains at least twice (usually much more) the number of libraries and applications than your windows machine, if you have a 64 bit Linux you will see how nice libs are placed and with simple symlinks and version in .so names, there are absolutely no naming conflicts, still with all binaries in one place it manages to avoid the dll hell and make everyone happy. I assume OSX also played it smart but OSX had more planning in the first place. The only platform with dll hell is windows, because it didn't support any type of links until NTFS hard links that few know about or use, on windows Borland was smart enough to include versions in their .bpl files for each Delphi version, maybe M$ should have folowed the example instead of inventing a squared iron wheel covered in rubber named an assembly that tricks your app into dynamically loading whatever dll the user wants you to load, can't we implement such mechanism ourselvs. I like the way Zeos Components make use of such dynamic loading and use different dlls and could even have multiple versions of the same dll loaded at once and change between those at runtime, it is a simple as creating a record structure holding the dlls functions and making instances of this record and dynamically loading every version of the dll, it is even more advanced than the assembly concept because you can chose from the application what dll to load and even use more than one version of it. I think FPC could make dynamic dll loading using the current static dll loading syntax or very similar syntax if you are too lazy to write a dynamic loader but then again how much use would it have to have almost the same syntax, maybe it would help automatic converters. Razvan ___ Lazarus mailing list Lazarus@lazarus.freepascal.org http://www.lazarus.freepascal.org/mailman/listinfo/lazarus ___ Lazarus mailing list Lazarus@lazarus.freepascal.org http://www.lazarus.freepascal.org/mailman/listinfo/lazarus