Re: [fpc-pascal]How to use Linux libraries?
Hi, Marco! On Thu, 24 Jul 2003, Marco van de Voort wrote: | Howrever the site is still up: | | http://www.nomssi.de/pasjpeg/pasjpeg.html I know this site, and I know 'pasjpeg' from its name. I tried multiple times to get it working, but I always had the same problems, it does not compile. In the silent hope that this "toolbox" may have changed in the last year, I downloaded version 1.1 today. Well, the author still has some "problems" with upper/lowercase in his ZIP's (everything extract as uppercase, but he references the files in lowercase inside his code), a typical identification that the files were created in a DOS environment. So I am not surprised that the code is primarily for WINDOWS and does not compile on Linux. :-/ mfg Ing. Rainer Hantsch ___ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal
[fpc-pascal]The state of FPC - wrap up
Hello, I think the point about users finding include files cumbersome to use, and developers who require maintainability, has been made clear. We can discuss about this for ages, and never agree. So I would like to conclude the discussion with a proposal. My proposal is as follows: If someone contributes a tool which does the necessary preprocessing i.e. including needed files, then I will set up a system where the source files are 'assembled' into single-source units for a given platform/cpu combination. These single-source units can be distributed with each platform or separately downloaded. This tool can be run on a daily basis on our CVS server, and zips can be made available as a service to the FPC users. As for the tool, I ask only 3 things: 1. It should compile with FPC and should be cross-platform. 2. Should obey {$ifdefs}/{$define} and the like, such as run-time platform selection. (linux based tool must generate sources for e.g. win32) 3. As for the rest, it would be good to have the command-line options which match the compiler's: -d define symbol -u undefine symbol -I/-Fi set include path -T select target os/cpu -FE set output name. If someone makes this tool, I will do the rest. Hopefully, this proposal helps to end an otherwise lengthy discussion. Michael. ___ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal]How to use Linux libraries?
On Fri, 25 Jul 2003, Rainer Hantsch wrote: > Hi, Marco! > > On Thu, 24 Jul 2003, Marco van de Voort wrote: > | Howrever the site is still up: > | > | http://www.nomssi.de/pasjpeg/pasjpeg.html > > I know this site, and I know 'pasjpeg' from its name. I tried multiple times > to get it working, but I always had the same problems, it does not compile. > In the silent hope that this "toolbox" may have changed in the last year, I > downloaded version 1.1 today. > > Well, the author still has some "problems" with upper/lowercase in his ZIP's > (everything extract as uppercase, but he references the files in lowercase > inside his code), a typical identification that the files were created in a > DOS environment. So I am not surprised that the code is primarily for WINDOWS > and does not compile on Linux. :-/ It uses some windows bitmap structures, and cannot be compiled on Linux as is. For the rest it compiles 100% fine. You could cut&paste the needed definitions from the windows unit and put them between {$ifndef win32}..{$endif} But you will not find it to your liking. Contrary to my earlier statement (based on the paszlib units) it is not TP style, but uses Delphi style to do the streaming. Michael. ___ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal]A suggestion.
On vrijdag, jul 25, 2003, at 08:30 Europe/Brussels, A.J. Venter wrote: I miss being able to put the cursor on a function/procedure/reserved word name and hitting F1 to see the help section for it. The text mode IDE already has support for this (using the html documentation). Jonas ___ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal]MMSYSTEM problem...
In reply to your message of July 25, 2003 > Here are the complete instructions on how you can obtain the unit that > you want: Thanks. The reason I wanted this was that it's got the direct-play MCI function in it. MCIWndCreate lets you hand MCI a filename and it will play anything mci can handle... which is how windows sounds are done. - L D Blake ___ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal]The state of FPC - wrap up
Michael Van Canneyt wrote: Hello, I think the point about users finding include files cumbersome to use, and developers who require maintainability, has been made clear. We can discuss about this for ages, and never agree. So I would like to conclude the discussion with a proposal. My proposal is as follows: If someone contributes a tool which does the necessary preprocessing i.e. including needed files, then I will set up a system where the source files are 'assembled' into single-source units for a given platform/cpu combination. These single-source units can be distributed with each platform or separately downloaded. This tool can be run on a daily basis on our CVS server, and zips can be made available as a service to the FPC users. As for the tool, I ask only 3 things: 1. It should compile with FPC and should be cross-platform. 2. Should obey {$ifdefs}/{$define} and the like, such as run-time platform selection. (linux based tool must generate sources for e.g. win32) 3. As for the rest, it would be good to have the command-line options which match the compiler's: -d define symbol -u undefine symbol -I/-Fi set include path -T select target os/cpu -FE set output name. If someone makes this tool, I will do the rest. Hopefully, this proposal helps to end an otherwise lengthy discussion. Hmmm, this could be easily done by the compiler but I see no real use for it. I think it would be much more useful, if fpdoc could be extended to include the file name and line number into the docs ... ___ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal]The state of FPC - wrap up
On Fri, 25 Jul 2003, Florian Klaempfl wrote: > Michael Van Canneyt wrote: > > Hello, > > > > I think the point about users finding include files cumbersome to use, > > and developers who require maintainability, has been made clear. > > > > We can discuss about this for ages, and never agree. So I would like to > > conclude the discussion with a proposal. > > > > My proposal is as follows: > > > > If someone contributes a tool which does the necessary preprocessing > > i.e. including needed files, then I will set up a system where the > > source files are 'assembled' into single-source units for a given > > platform/cpu combination. These single-source units can be distributed > > with each platform or separately downloaded. > > > > This tool can be run on a daily basis on our CVS server, and zips can be > > made available as a service to the FPC users. > > > > As for the tool, I ask only 3 things: > > 1. It should compile with FPC and should be cross-platform. > > 2. Should obey {$ifdefs}/{$define} and the like, such as > >run-time platform selection. > >(linux based tool must generate sources for e.g. win32) > > 3. As for the rest, it would be good to have the command-line options > >which match the compiler's: > >-d define symbol > >-u undefine symbol > >-I/-Fi set include path > >-T select target os/cpu > >-FE set output name. > > > > If someone makes this tool, I will do the rest. > > > > Hopefully, this proposal helps to end an otherwise lengthy discussion. > > Hmmm, this could be easily done by the compiler but I see no real use > for it. I think it would be much more useful, if fpdoc could be extended > to include the file name and line number into the docs ... This can be done too. But that will not solve the problem of the 'include' files. You saw that many people don't want to have the docs as an in-between. But it's noted as a feature for fpdoc. It's a good idea. Michael. ___ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal]The state of FPC - wrap up
> If someone contributes a tool which does the necessary preprocessing > i.e. including needed files, then I will set up a system where the > source files are 'assembled' into single-source units for a given > platform/cpu combination. These single-source units can be distributed > with each platform or separately downloaded. This was all I ever really wanted to be honest. > This tool can be run on a daily basis on our CVS server, and zips can be > made available as a service to the FPC users. Cool, that sounds like a good idea. > As for the tool, I ask only 3 things: > 1. It should compile with FPC and should be cross-platform. > 2. Should obey {$ifdefs}/{$define} and the like, such as >run-time platform selection. >(linux based tool must generate sources for e.g. win32) > 3. As for the rest, it would be good to have the command-line options >which match the compiler's: >-d define symbol >-u undefine symbol >-I/-Fi set include path >-T select target os/cpu >-FE set output name. > > If someone makes this tool, I will do the rest. I will look at it. I will initially write it in Delphi, simply because that is to hand, but will get it to compile under FPC 1.1x when I have got it to work here. One question, do you want a recursive batch job, or single file operation. i.e, do all in one go, respecting commandd like options, or simply the files passed to the command line. Think of the difference between gcc and fpc. gcc expects explicitly to be given all files at command line, fpc will look for them automatically. I have no preference and may simply add this as an option. > Hopefully, this proposal helps to end an otherwise lengthy discussion. Done ;-) Matt ___ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal]The state of FPC - wrap up
[ Charset ISO-8859-1 unsupported, converting... ] > > If someone contributes a tool which does the necessary preprocessing > > i.e. including needed files, then I will set up a system where the > > source files are 'assembled' into single-source units for a given > > platform/cpu combination. These single-source units can be distributed > > with each platform or separately downloaded. > > This was all I ever really wanted to be honest. > > > This tool can be run on a daily basis on our CVS server, and zips can be > > made available as a service to the FPC users. > > Cool, that sounds like a good idea. > > > As for the tool, I ask only 3 things: > > 1. It should compile with FPC and should be cross-platform. > > 2. Should obey {$ifdefs}/{$define} and the like, such as > >run-time platform selection. > >(linux based tool must generate sources for e.g. win32) > > 3. As for the rest, it would be good to have the command-line options > >which match the compiler's: > >-d define symbol > >-u undefine symbol > >-I/-Fi set include path > >-T select target os/cpu > >-FE set output name. > > > > If someone makes this tool, I will do the rest. > > > I will look at it. I will initially write it in Delphi, simply because that > is to hand, but will get it to compile under FPC 1.1x when I have got it to > work here. > > One question, do you want a recursive batch job, or single file operation. > i.e, do all in one go, respecting commandd like options, or simply the files > passed to the command line. Think of the difference between gcc and fpc. gcc > expects explicitly to be given all files at command line, fpc will look for > them automatically. I have no preference and may simply add this as an > option. I think it can be done better to match the commandline behaviour to the compiler as close as possible. AND to generate an empty .ppu and .o file for each access, and also a .a file if there is a -CX parameter. This will make sure that simply running make all PP= OPT='other parameters to your tools like rootdirectory of the output' visits the same units that would be build in a release build. It would also avoid the trouble of keeping what units need to be generated. However it doesn't have to do unit search, since you don't have to access dependant units (uses clauses) ___ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal]XChat plugins using FPC
Hi, if you are successful, I would be glad to receive the ported Header files and a small example. Holger James Mills schrieb: Hi, I can successully compile and test the plugin source listed at http://xchat.org/docs/plugin20.html written in C. However I don't like C much and am wondering if it's possible to do the same thing in pascal... ? I know it has to be possible, but I need someone to start me off in the right direction... cheers James ___ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal]The state of FPC - wrap up
On Fri, 25 Jul 2003, Matt Emson wrote: > > If someone contributes a tool which does the necessary preprocessing > > i.e. including needed files, then I will set up a system where the > > source files are 'assembled' into single-source units for a given > > platform/cpu combination. These single-source units can be distributed > > with each platform or separately downloaded. > > This was all I ever really wanted to be honest. > > > This tool can be run on a daily basis on our CVS server, and zips can be > > made available as a service to the FPC users. > > Cool, that sounds like a good idea. > > > As for the tool, I ask only 3 things: > > 1. It should compile with FPC and should be cross-platform. > > 2. Should obey {$ifdefs}/{$define} and the like, such as > >run-time platform selection. > >(linux based tool must generate sources for e.g. win32) > > 3. As for the rest, it would be good to have the command-line options > >which match the compiler's: > >-d define symbol > >-u undefine symbol > >-I/-Fi set include path > >-T select target os/cpu > >-FE set output name. > > > > If someone makes this tool, I will do the rest. > > > I will look at it. I will initially write it in Delphi, simply because that > is to hand, but will get it to compile under FPC 1.1x when I have got it to > work here. > > One question, do you want a recursive batch job, or single file operation. Single file operation: name of a input unit file, name of output file. (plus command-line options for where to find include files, and defines) Michael. ___ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal]XChat plugins using FPC
On Fri, Jul 25, 2003 at 01:04:14PM +0200, Holger Peters wrote: > Hi, > > if you are successful, I would be glad to receive the ported Header > files and a small example. rofl! :) Make me do all the hard work :( This is the first time I've converted any c headers of any sort... I'm getting close though I think I'll end up writing a unit interface to the c functions though. I don't want to end up writing plugins and having to remember every bloody xchat interface command :) do you ? cheers James > > Holger > > > James Mills schrieb: > > >Hi, > > > >I can successully compile and test the plugin source listed at > >http://xchat.org/docs/plugin20.html written in C. > > > >However I don't like C much and am wondering if it's possible to do the > >same thing in pascal... ? I know it has to be possible, but I need > >someone to start me off in the right direction... > > > >cheers > >James > > > > > > > ___ > fpc-pascal maillist - [EMAIL PROTECTED] > http://lists.freepascal.org/mailman/listinfo/fpc-pascal -- - - James Mills Zero Defect Software Engineers Group - ZDSEG ___ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal]A suggestion.
On Fri, Jul 25, 2003 at 10:33:19AM +0200, Jonas Maebe wrote: > > On vrijdag, jul 25, 2003, at 08:30 Europe/Brussels, A.J. Venter wrote: > > >I miss being able to put the cursor on a function/procedure/reserved > >word name and hitting F1 to see the help section for it. > > The text mode IDE already has support for this (using the html > documentation). I use to use borland's turbo pascal ide once too, but I don't miss this feature :) Nowadays vim suits be better cheers James > > > Jonas > > > ___ > fpc-pascal maillist - [EMAIL PROTECTED] > http://lists.freepascal.org/mailman/listinfo/fpc-pascal -- - - James Mills Zero Defect Software Engineers Group - ZDSEG ___ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal]A suggestion.
Trouble is, that is the only feature I miss ! Everything else about the borland IDE is downright annoying in it's primitiveness. Had this not been the case, I would have been using the fp ide anyway. I use vim myself. Hence my thought of a separate proggie that can do this. The easy way here would be to extract the section of the fp ide that does this, and create a modified standalone version that simply dumps the results to standard out. No sense reinventing the wheel, except for one tiny downside - we have no access to the ide sources. Perhaps someone who does could mail me just the part in question, I will do the rest. I cannot imagine I am the only one who would like this. Mind you, it would even make a nifty plugin for lazarus. A.J. On Fri, 2003-07-25 at 14:11, James Mills wrote: > On Fri, Jul 25, 2003 at 10:33:19AM +0200, Jonas Maebe wrote: > > > > On vrijdag, jul 25, 2003, at 08:30 Europe/Brussels, A.J. Venter wrote: > > > > >I miss being able to put the cursor on a function/procedure/reserved > > >word name and hitting F1 to see the help section for it. > > > > The text mode IDE already has support for this (using the html > > documentation). > > I use to use borland's turbo pascal ide once too, but I don't miss this > feature :) Nowadays vim suits be better > > cheers > James > > > > > > > Jonas > > > > > > ___ > > fpc-pascal maillist - [EMAIL PROTECTED] > > http://lists.freepascal.org/mailman/listinfo/fpc-pascal -- Do not try to think outside the box. That's impossible. Instead only try to realise the truthThere is no box. A.J. Venter Tech Guru DireqLearn. ___ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal]A suggestion.
On vrijdag, jul 25, 2003, at 14:17 Europe/Brussels, A.J. Venter wrote: No sense reinventing the wheel, except for one tiny downside - we have no access to the ide sources. Sure you do, checkout the module "ide" from cvs. The problem with the IDE is that you can't build the version we distribute, because of the problems with the Free Vision license. Jonas ___ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal]XChat plugins using FPC
On Thu, Jul 24, 2003 at 11:17:53AM +0200, Michael Van Canneyt wrote: > > > On Thu, 24 Jul 2003, James Mills wrote: > > > On Wed, Jul 23, 2003 at 08:50:35AM +0200, Michael Van Canneyt wrote: > > > > > > > > > On Wed, 23 Jul 2003, James Mills wrote: > > > > > > > On Wed, Jul 23, 2003 at 03:28:55AM +0200, Marco van de Voort wrote: > > > > > > I can successully compile and test the plugin source listed at > > > > > > http://xchat.org/docs/plugin20.html written in C. > > > > > > > > > > > > However I don't like C much and am wondering if it's possible to do the > > > > > > same thing in pascal... ? I know it has to be possible, but I need > > > > > > someone to start me off in the right direction... > > > > > > > > > > Probably yes, but you'll need to convert headers of xchat-plugin.h. The > > > > > "h2pas" util can be handy for this. (or at least it can save a lot of time) > > > > > > > > Okay I've converted the headers (step 1) :P > > > > > > > > $ h2pas -S -D -p -l xchat xchat-plugin.h > > > > at line 6 error : syntax error > > > > Illegal character in line 6 > > > > "#define XCHAT_IFACE_VERSION((XCHAT_IFACE_MAJOR * 1) + \" > > > > at line 7 error : syntax error > > > > Illegal character in line 7 > > > > "(XCHAT_IFACE_MINOR * 100) + \" > > > > > > > > > > > > > > > > What do I do with these errors though ? > > > > > > run the file through the gcc preprocessor: > > > > > > gcc -E xchat-plugin.h -o xchat-plugin.hp > > > h2pas -S -D -p -l xchat xchat-plugin.hp > > > > > > Note that this destroys all '#define' constants, so you'll have to > > > run h2pas a second time to get all constants. > > > > > > Michael. > > > > > > > > > ___ > > > fpc-pascal maillist - [EMAIL PROTECTED] > > > http://lists.freepascal.org/mailman/listinfo/fpc-pascal > > > > I've sucessfully now done all this and now have the headers converted... > > I have a problem though when trying to compiling a test plugin: > > > > $ fpc test > > Free Pascal Compiler version 1.0.6 [2002/08/10] for i386 > > Copyright (c) 1993-2002 by Florian Klaempfl > > Target OS: Linux for i386 > > Compiling test.pas > > Compiling xchatplugin.pas > > xchatplugin.pas(49,24) Error: Identifier not found XCHAT_PLUGIN > > xchatplugin.pas(49,36) Error: Error in type definition > > xchatplugin.pas(50,22) Error: Identifier not found XCHAT_LIST > > xchatplugin.pas(50,32) Error: Error in type definition > > xchatplugin.pas(51,22) Error: Identifier not found XCHAT_HOOK > > xchatplugin.pas(51,32) Error: Error in type definition > > xchatplugin.pas(55,25) Error: Identifier not found XCHAT_CONTEXT > > xchatplugin.pas(55,38) Error: Error in type definition > > xchatplugin.pas(61,24) Error: Duplicate identifier _XCHAT_PLUGIN > > xchatplugin.pas(61,24) Error: Duplicate identifier _XCHAT_PLUGIN > > xchatplugin.pas(62,60) Error: Identifier not found PXCHAT_PLUGIN > > xchatplugin.pas(62,96) Error: Type identifier expected > > xchatplugin.pas(62,96) Fatal: Syntax error, ) expected but FUNCTION found > > > > > > What's going on here ? > > The unit is not correct. There are things that h2pas doesn't 'know' > about. C is case sensitive. Pascal is not. so duplicate identifiers can > exist. the C construct "xchat_plugin *" is translated to > 'Pxchat_plugin', but that may or may not be defined already. > > In general, a generated file may still need some manual editing before > it is compilable. This is perfectly normal. I'm a little confused as to what manual editing is necessary... What about the: const External_library='xchat'; {Setup as you need} What does this need to be ? Does the unit need to be linked with anything ? (There are no xchat libraries I am aware of). Help me out here :P (please) cheers James > > Michael. > > > ___ > fpc-pascal maillist - [EMAIL PROTECTED] > http://lists.freepascal.org/mailman/listinfo/fpc-pascal -- - - James Mills Zero Defect Software Engineers Group - ZDSEG ___ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal]How to use Linux libraries?
On Fri, 25 Jul 2003, Michael Van Canneyt wrote: | It uses some windows bitmap structures, and cannot be compiled on Linux as | is. For the rest it compiles 100% fine. You could cut&paste the needed | definitions from the windows unit and put them between {$ifndef | win32}..{$endif} So, in fact, the whole 'pasjpeg' does not exist at all, because converting such a thing will require that knowledge which I currently do not have. The only way to learn from source code is to analyze a _working_ one. It makes no sense to analyze windows-dependent code when Linux code is (so I guess) nearely the opposite -- otherwise it would not be so complicated to port Windoze-Software to Linux... So I return to my initial question in the hope that somebody has already done such things... What I need for my first steps, is some source code which compiles without any change on Linux and uses Linux' shared libraries for reading/writing data from/to image files in jpeg/gif/tif/... format. I definitely prefer procedural and/or OOP style before Delphi Style, because this is easier to understand and also matches better to my already existing code. A good sample for doing first steps would be a program which reads a little JPEG image into RAM, hereby decoding it into a simple structure (i.e. an array of pixels, one for every color, so that I can get the RGB or CMYK values out easily for every pixel. Next step would be to store this structure back into a file. With this two steps I can start. Nobody here who can help? Ing. Rainer Hantsch ___ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal
[fpc-pascal]runtime 201 with swapword function
Hi, Why does the following result in a runtime error ? program example; const THE_PORT = ; function swapWord(w: Word): Word; begin swapWord := (w SHL 8) OR (w SHR 8); end; var port: Word; begin port := swapWord(THE_PORT) end. $ ./swapword Runtime error 201 at 0x08052AA2 0x08052AA2 0x08052AC2 0x080480B0 cheers James -- - -Zero Defect Software Engineers Group - ZDSEG - -You need only two tools. WD-40 and duct tape. -If it doesn't move and it should, use WD-40. -If it moves and shouldn't, use the tape. ___ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal]How to use Linux libraries?
On Fri, Jul 25, 2003 at 04:04:47PM +0200, Rainer Hantsch wrote: > On Fri, 25 Jul 2003, Michael Van Canneyt wrote: > | It uses some windows bitmap structures, and cannot be compiled on Linux as > | is. For the rest it compiles 100% fine. You could cut&paste the needed > | definitions from the windows unit and put them between {$ifndef > | win32}..{$endif} > > So, in fact, the whole 'pasjpeg' does not exist at all, because converting > such a thing will require that knowledge which I currently do not have. The > only way to learn from source code is to analyze a _working_ one. It makes no > sense to analyze windows-dependent code when Linux code is (so I guess) > nearely the opposite -- otherwise it would not be so complicated to port > Windoze-Software to Linux... > > > So I return to my initial question in the hope that somebody has already done > such things... > > What I need for my first steps, is some source code which compiles without any > change on Linux and uses Linux' shared libraries for reading/writing data > from/to image files in jpeg/gif/tif/... format. > I definitely prefer procedural and/or OOP style before Delphi Style, because > this is easier to understand and also matches better to my already existing > code. > > A good sample for doing first steps would be a program which reads a little > JPEG image into RAM, hereby decoding it into a simple structure (i.e. an array > of pixels, one for every color, so that I can get the RGB or CMYK values out > easily for every pixel. > Next step would be to store this structure back into a file. > > With this two steps I can start. Nobody here who can help? I could write you up a set of such procedures or classes to do this, however I'm starting back at uni. New semester :) Anyway, I'm sure there are others here on this mailing list that could do the same. Question: Why can't you do it yourself ? It isn't that hard to grab the specs of the JPEG image format and learn it and write your own data structures to contain the jpeg image data, decode it into pixel arrays... It's all there in the specs :) cheers James > > > Ing. Rainer Hantsch > > > > ___ > fpc-pascal maillist - [EMAIL PROTECTED] > http://lists.freepascal.org/mailman/listinfo/fpc-pascal -- - -Zero Defect Software Engineers Group - ZDSEG - -You need only two tools. WD-40 and duct tape. -If it doesn't move and it should, use WD-40. -If it moves and shouldn't, use the tape. ___ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal]runtime 201 with swapword function
On Fri, Jul 25, 2003 at 04:21:36PM +0200, Jonas Maebe wrote: > > On vrijdag, jul 25, 2003, at 16:22 Europe/Brussels, James Mills wrote: > > >Why does the following result in a runtime error ? > > > >program example; > > > >const > > THE_PORT = ; > > > >function swapWord(w: Word): Word; > >begin > > swapWord := (w SHL 8) OR (w SHR 8); > >end; > > In Pascal, all calculations are performed using the base type (which is > longint in FPC), so if w > 255, then w shl 8 > high(word) and will > result in a range check error when assigning to swapWord. Even if we > calculated everything using words, you'd still get an overflow error, > this time when doing the shl. How can I correct this ? This bit of code was taken directly from server.pp in one of the old 2002 mailing threads... cheers James > > > Jonas > > > ___ > fpc-pascal maillist - [EMAIL PROTECTED] > http://lists.freepascal.org/mailman/listinfo/fpc-pascal -- - -Zero Defect Software Engineers Group - ZDSEG - -You need only two tools. WD-40 and duct tape. -If it doesn't move and it should, use WD-40. -If it moves and shouldn't, use the tape. ___ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal]runtime 201 with swapword function
On vrijdag, jul 25, 2003, at 16:22 Europe/Brussels, James Mills wrote: Why does the following result in a runtime error ? program example; const THE_PORT = ; function swapWord(w: Word): Word; begin swapWord := (w SHL 8) OR (w SHR 8); end; In Pascal, all calculations are performed using the base type (which is longint in FPC), so if w > 255, then w shl 8 > high(word) and will result in a range check error when assigning to swapWord. Even if we calculated everything using words, you'd still get an overflow error, this time when doing the shl. Jonas ___ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal]runtime 201 with swapword function
On vrijdag, jul 25, 2003, at 16:32 Europe/Brussels, James Mills wrote: In Pascal, all calculations are performed using the base type (which is longint in FPC), so if w > 255, then w shl 8 > high(word) and will result in a range check error when assigning to swapWord. Even if we calculated everything using words, you'd still get an overflow error, this time when doing the shl. How can I correct this ? Use a typecast: function swapWord(w: Word): Word; begin swapWord := Word((w SHL 8) OR (w SHR 8)); end; Jonas ___ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal]runtime 201 with swapword function
[EMAIL PROTECTED] wrote: Why does the following result in a runtime error ? program example; const THE_PORT = ; function swapWord(w: Word): Word; begin swapWord := (w SHL 8) OR (w SHR 8); end; How can I correct this ? This bit of code was taken directly from server.pp in one of the old 2002 mailing threads... swapWord := ((w AND $FF) SHL 8) OR (w SHR 8); ___ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal]runtime 201 with swapword function
James Mills wrote: On Fri, Jul 25, 2003 at 04:21:36PM +0200, Jonas Maebe wrote: On vrijdag, jul 25, 2003, at 16:22 Europe/Brussels, James Mills wrote: Why does the following result in a runtime error ? program example; const THE_PORT = ; function swapWord(w: Word): Word; begin swapWord := (w SHL 8) OR (w SHR 8); end; In Pascal, all calculations are performed using the base type (which is longint in FPC), so if w > 255, then w shl 8 > high(word) and will result in a range check error when assigning to swapWord. Even if we calculated everything using words, you'd still get an overflow error, this time when doing the shl. How can I correct this ? This bit of code was taken directly from server.pp in one of the old 2002 mailing threads... Turn range checking off for this piece of code or do function swapWord(w: Word): Word; begin swapWord := ((w SHL 8) OR (w SHR 8)) and $; end; ___ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal]runtime 201 with swapword function
On Fri, Jul 25, 2003 at 04:30:24PM +0200, Jonas Maebe wrote: > > On vrijdag, jul 25, 2003, at 16:32 Europe/Brussels, James Mills wrote: > > >>In Pascal, all calculations are performed using the base type (which > >>is > >>longint in FPC), so if w > 255, then w shl 8 > high(word) and will > >>result in a range check error when assigning to swapWord. Even if we > >>calculated everything using words, you'd still get an overflow error, > >>this time when doing the shl. > > > >How can I correct this ? > > Use a typecast: > > function swapWord(w: Word): Word; > begin > swapWord := Word((w SHL 8) OR (w SHR 8)); > end; Excellent thank you :) James > > > Jonas > > > ___ > fpc-pascal maillist - [EMAIL PROTECTED] > http://lists.freepascal.org/mailman/listinfo/fpc-pascal -- - -Zero Defect Software Engineers Group - ZDSEG - -You need only two tools. WD-40 and duct tape. -If it doesn't move and it should, use WD-40. -If it moves and shouldn't, use the tape. ___ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal]runtime 201 with swapword function
> On Fri, Jul 25, 2003 at 04:21:36PM +0200, Jonas Maebe wrote: > > > > On vrijdag, jul 25, 2003, at 16:22 Europe/Brussels, James Mills wrote: > > > > >Why does the following result in a runtime error ? > > > > > >program example; > > > > > >const > > > THE_PORT = ; > > > > > >function swapWord(w: Word): Word; > > >begin > > > swapWord := (w SHL 8) OR (w SHR 8); > > >end; > > > > In Pascal, all calculations are performed using the base type (which is > > longint in FPC), so if w > 255, then w shl 8 > high(word) and will > > result in a range check error when assigning to swapWord. Even if we > > calculated everything using words, you'd still get an overflow error, > > this time when doing the shl. change to swapword word (w shl 8) OR word (w shr 8); or temporarily disable {$R+} there. > > How can I correct this ? > This bit of code was taken directly from server.pp in one of the old > 2002 mailing threads... But was it under {$R+} there? ___ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal]runtime 201 with swapword function
On Fri, Jul 25, 2003 at 04:30:35PM +0200, Florian Klaempfl wrote: > James Mills wrote: > >On Fri, Jul 25, 2003 at 04:21:36PM +0200, Jonas Maebe wrote: > > > >>On vrijdag, jul 25, 2003, at 16:22 Europe/Brussels, James Mills wrote: > >> > >> > >>>Why does the following result in a runtime error ? > >>> > >>>program example; > >>> > >>>const > >>> THE_PORT = ; > >>> > >>>function swapWord(w: Word): Word; > >>>begin > >>> swapWord := (w SHL 8) OR (w SHR 8); > >>>end; > >> > >>In Pascal, all calculations are performed using the base type (which is > >>longint in FPC), so if w > 255, then w shl 8 > high(word) and will > >>result in a range check error when assigning to swapWord. Even if we > >>calculated everything using words, you'd still get an overflow error, > >>this time when doing the shl. > > > > > >How can I correct this ? > >This bit of code was taken directly from server.pp in one of the old > >2002 mailing threads... > > Turn range checking off for this piece of code or do > > function swapWord(w: Word): Word; > begin > swapWord := ((w SHL 8) OR (w SHR 8)) and $; > end; Least now I know the reason :) cheers James > > > ___ > fpc-pascal maillist - [EMAIL PROTECTED] > http://lists.freepascal.org/mailman/listinfo/fpc-pascal -- - -Zero Defect Software Engineers Group - ZDSEG - -You need only two tools. WD-40 and duct tape. -If it doesn't move and it should, use WD-40. -If it moves and shouldn't, use the tape. ___ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal]runtime 201 with swapword function
On Sat, 26 Jul 2003, James Mills wrote: > Hi, > > Why does the following result in a runtime error ? > > program example; > > const > THE_PORT = ; > > function swapWord(w: Word): Word; > begin > swapWord := (w SHL 8) OR (w SHR 8); > end; > > var > port: Word; > begin > port := swapWord(THE_PORT) > end. > > $ ./swapword > Runtime error 201 at 0x08052AA2 > 0x08052AA2 > 0x08052AC2 > 0x080480B0 This is a range check error. (w SHL 8) OR (w SHR 8) is evaluated as a longint. i.e. the result may not fit in a longint. And I think it should be: ((w and $FF) SHL 8) OR (w SHR 8) Michael. ___ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal]The state of FPC - wrap up
Hello, Just for adding my few cents : I'm not keen on FPC , and rather know a little about FPC design but I think this is academical disscuss becouse Pascal never used preprocessor like C++ and becouse of that was so fast, but also so complicated when using it in multiplatform envinronment. Look into wxWindows details and You will find that an platform independent code and platform dependent library working very good together ! And even processor specific such like type declaration or machines with different byte orders is doable that way. I'm not insist that it is the right solution for FPC, but looking into it could help. Boguslaw - Original Message - From: "Michael Van Canneyt" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Friday, July 25, 2003 10:12 AM Subject: [fpc-pascal]The state of FPC - wrap up > > Hello, > > I think the point about users finding include files cumbersome to use, > and developers who require maintainability, has been made clear. > > We can discuss about this for ages, and never agree. So I would like to > conclude the discussion with a proposal. > > My proposal is as follows: > > If someone contributes a tool which does the necessary preprocessing > i.e. including needed files, then I will set up a system where the > source files are 'assembled' into single-source units for a given > platform/cpu combination. These single-source units can be distributed > with each platform or separately downloaded. > > This tool can be run on a daily basis on our CVS server, and zips can be > made available as a service to the FPC users. > > As for the tool, I ask only 3 things: > 1. It should compile with FPC and should be cross-platform. > 2. Should obey {$ifdefs}/{$define} and the like, such as >run-time platform selection. >(linux based tool must generate sources for e.g. win32) > 3. As for the rest, it would be good to have the command-line options >which match the compiler's: >-d define symbol >-u undefine symbol >-I/-Fi set include path >-T select target os/cpu >-FE set output name. > > If someone makes this tool, I will do the rest. > > Hopefully, this proposal helps to end an otherwise lengthy discussion. > > Michael. > > > ___ > fpc-pascal maillist - [EMAIL PROTECTED] > http://lists.freepascal.org/mailman/listinfo/fpc-pascal ___ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal]runtime 201 with swapword function
Doesn't system contain a routine called 'swap' that does this exact thing?? This program would seem to work in both Delphi and FPC1.1: program test; {$APPTYPE CONSOLE} uses sysutils; var i, j: word; begin i := $9988; writeln( IntToHex(i, 4) ); //output '9988' j := swap( i ); writeln( IntToHex(j, 4)); //output '8899' readln; end. No need to go to the trouble of writing your won routine!! ;-) Matt > Hi, > > Why does the following result in a runtime error ? > > program example; > > const > THE_PORT = ; > > function swapWord(w: Word): Word; > begin > swapWord := (w SHL 8) OR (w SHR 8); > end; > > var > port: Word; > begin > port := swapWord(THE_PORT) > end. > > $ ./swapword > Runtime error 201 at 0x08052AA2 > 0x08052AA2 > 0x08052AC2 > 0x080480B0 > > > cheers > James > > -- > - > -Zero Defect Software Engineers Group - ZDSEG > - > -You need only two tools. WD-40 and duct tape. > -If it doesn't move and it should, use WD-40. > -If it moves and shouldn't, use the tape. > > ___ > fpc-pascal maillist - [EMAIL PROTECTED] > http://lists.freepascal.org/mailman/listinfo/fpc-pascal > ___ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal]The state of FPC - wrap up
> Just for adding my few cents : I'm not keen on FPC , and rather know a > little about FPC design but I think this is academical disscuss becouse > Pascal never used preprocessor like C++ and becouse of that was so fast, but > also so complicated when using it in multiplatform envinronment. > Look into wxWindows details and You will find that an platform independent > code and platform dependent library working very good together ! And even > processor specific such like type declaration or machines with different > byte orders is doable that way. We can be short about this: The complexity of a few includefiles pales by the magnitude of complexity of bringing a C/C++ macro preprocessor. The average C system is a mess in this respect. People that disagree, are welcome to make a fully automatic (read: perfect) header translator for C header files to Pascal. Or at least come up with a design that _could_ work. It doesn't have to be compiler independant, just basic C+preprocessor macro's are enough. If you succeed, the gratitude and the glory would be immense :-) Moreover The average C system that interfaces to a multitude of OSes or other deeper libraries have the exact same solution as FPC. A directory per item (OS, GUI toolkit) that contains a wrapper if needed + headers that are independant of the system, and a common include dir. They use "make" to hide it. (check nearly every project, GDB, GCC, libc, _anything_), and you will find OS (or GUI toolkit, or both) directories. > I'm not insist that it is the right solution for FPC, but looking into it > could help. The C preprocessor is a kludge from an historical perspective. The main reason for it was to defer preprocessing from the actual compiler, so that the actual compiler needs less memory. Later it was extended to make up for other problems of C. (most of which reasons were valid then, but not now, to make the compiler more lightweight). C/C++ designers know that too, and have known it for a long time. You just have to read all C standards, and study the C++ design, and you see that the preprocessor got less and less important with time. ___ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal]How to use Linux libraries?
Hello, James! On Sat, 26 Jul 2003, James Mills wrote: | I could write you up a set of such procedures or classes to do this, | however I'm starting back at uni. New semester :) Good success at Uni! What are you studying? | Anyway, I'm sure there are others here on this mailing list that could | do the same. Possibly, yes. But you are the _first_ one who answered, so the number of people still seems to be very small... ;-) | Question: Why can't you do it yourself ? It isn't that hard to grab the | specs of the JPEG image format and learn it and write your own data | structures to contain the jpeg image data, decode it into pixel arrays... | It's all there in the specs :) Something about me: I started programming in Pascal roughly 15 years ago, on CP/M (Z80 CPU, 4MB RAM, 10MB HDD,...), later I changed to DOS with finally Borland Pascal, but I kept consequently away from Windoze programming. Finally I changed to Linux, which is more what I like DOS, than Windoze... But all this years I never wrote one line in assembly language, nor was there any need for me to include external code. I did everything in plain Pascal language, without any hacking and tweaking, which was perfect for writing all this userspecific software. So my primary problem is that I never got experience about how to solve such things like linking to external libraries. Of course, I could sit down and hope to find it out by myself with trial & error, but this is extremely inefficient and time consuming. Also success will be very low in this case. Another thing is: Why should I start re-inventing the wheel and writing my own JPEG/TIFF/.../units from scratch, when there exist a lot of ready made libraries? Isn't it the purpose of libraries to do exactly this? So I am looking for some help in form of _working_ samples which I can analyze and try to understand. It will also be very helpful if there would be somebody who could "teach" me a little bit and guide me to my first success. mfg Ing. Rainer Hantsch ___ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal]How to use Linux libraries?
Hi Rainer Pasjpeg is basically just a Pascal translation of sources originally written in ANSI C by IJG, Independent JPEG Group. You can find this C code with documentation at http://www.ijg.org/. At these URL there are also some informations about JPEG file coding (actually JFIF, JPEG is a standard for compressing image data and JFIF is a file format that uses JPEG compression; JFIF stands for "JPEG File Interchange Format"). But you will not find there a complete specification of JPEG format and, to be honest, I don't know where you can find it on the internet. Definitely, coding JPEG [de]compression by yourself is really an advanced topic and I would not advice you this. Besides, Pasjpeg can really do all that you want. Pasjpeg contains some extra units not found in IJG code - mainly Jeg.pas and Pasjpeg.pas. The first one implements a class that loads a jpeg image into a TGraphic class descendant from Graphics unit. Graphics unit comes from Delphi's VCL and it's not available with FPC - but I know Lazarus tries to implement library compatible with VCL (but Lazarus does it for FPC and for many platforms FPC supports), so maybe you could integrate Jpeg with Lazarus (I don't know, maybe they even already did that in Lazarus ?). So that's the first option you can try. The second option is to take Jpeg unit and tweak it so that it is capable of reading and storing jpeg images in your preferable format, like simple two-dimensional array of RGB. For that you will definitely need IJG documentation to understand how Jpeg unit works - it's really too big subject to describe it in this letter. Third option is probably the easiest one - you can use Pasjpeg unit to convert jpeg files into BMP files. Than you can learn how to read BMP files, it's really simple, and after doing that you will be able to read both BMP and JPEG images in quite the same way, you will only have to "filter" JPEG images through Pasjpeg. Not very elegant way to read JPEG images, but simple and working. There is also a forth option, probably the hardets one : read IJG documentation and write your own code to handle pasjpeg library without Pasjpeg and Jpeg units (I hope you don't get confused when I sometimes use "pasjpeg" to name the whole "pasjpeg library" and sometimes to name the specific unit named "Pasjpeg.pas" in that library). Actually, if you learn how to do that you will not need pasjpeg library - under Linux there is usually a libjpeg.so shared library that contains whole IJG code, so you will not have to use pasjpeg library - just link dynamically to libjpeg.so (or statically to libjpeg.a). Final words : what do I advise : take the easiest way - learn how to read BMP images and than use Pasjpeg unit. Also, there is a question - do you really need the JPEG format ? If you want just ANY image format than thinking about JPEG is a big mistake - there are many image formats MUCH easier to read. E.g. PPM (the simplest possible image format, you can handle it with a few lines of code), PNG (nice format with lots of capabilities and lossless compression (you DO know that JPEG compression is lossy, do you?), very easily readable with libpng) and so on. BMP format is somewhere between, it's a bit more complicated and a bit more functional than PPM - if you don't care about JPEGs anymore I would advice you PPM (or more general PNM) or PNG formats. And remember there are many programs that can convert JPEG images into other formats (like PPM and PNG). Oh, one more thing - Pasjpeg unit uses TStream classes and you said you dont like Classes. But, really, they are so simple - I guarantee that you will be glad when you learn how to use them and when you see what TStream and it's descendants can do for you. Hope this helps, -- Michalis Kamburelis [EMAIL PROTECTED] http://www.camelot.homedns.org/~michalis/ ___ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal]How to use Linux libraries?
On Fri, Jul 25, 2003 at 06:18:48PM +0200, Rainer Hantsch wrote: > Hello, James! > > On Sat, 26 Jul 2003, James Mills wrote: > | I could write you up a set of such procedures or classes to do this, > | however I'm starting back at uni. New semester :) > > Good success at Uni! What are you studying? Bachelor of Engineering in Software Engineering at Griffith University (Australia, QLD) > > > | Anyway, I'm sure there are others here on this mailing list that could > | do the same. > Possibly, yes. But you are the _first_ one who answered, so the number of > people still seems to be very small... ;-) > > > | Question: Why can't you do it yourself ? It isn't that hard to grab the > | specs of the JPEG image format and learn it and write your own data > | structures to contain the jpeg image data, decode it into pixel arrays... > | It's all there in the specs :) > > Something about me: I started programming in Pascal roughly 15 years ago, on > CP/M (Z80 CPU, 4MB RAM, 10MB HDD,...), later I changed to DOS with finally > Borland Pascal, but I kept consequently away from Windoze programming. > Finally I changed to Linux, which is more what I like DOS, than Windoze... > > But all this years I never wrote one line in assembly language, nor was there > any need for me to include external code. I did everything in plain Pascal > language, without any hacking and tweaking, which was perfect for writing all > this userspecific software. > > So my primary problem is that I never got experience about how to solve such > things like linking to external libraries. Of course, I could sit down and > hope to find it out by myself with trial & error, but this is extremely > inefficient and time consuming. Also success will be very low in this case. > Another thing is: Why should I start re-inventing the wheel and writing my own > JPEG/TIFF/.../units from scratch, when there exist a lot of ready made > libraries? Isn't it the purpose of libraries to do exactly this? > > > So I am looking for some help in form of _working_ samples which I can analyze > and try to understand. It will also be very helpful if there would be somebody > who could "teach" me a little bit and guide me to my first success. As you'll read in other posts just recently there are jpeg units for pascal that do this. I probably have some myself that I'm unaware of :) cheers James > > > > mfg > > Ing. Rainer Hantsch > > > > ___ > fpc-pascal maillist - [EMAIL PROTECTED] > http://lists.freepascal.org/mailman/listinfo/fpc-pascal -- - -Zero Defect Software Engineers Group - ZDSEG - -You need only two tools. WD-40 and duct tape. -If it doesn't move and it should, use WD-40. -If it moves and shouldn't, use the tape. ___ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal]runtime 201 with swapword function
On Fri, Jul 25, 2003 at 04:36:39PM +0100, Matt Emson wrote: > > > Doesn't system contain a routine called 'swap' that does this exact thing?? > > This program would seem to work in both Delphi and FPC1.1: > > program test; > {$APPTYPE CONSOLE} > > uses > sysutils; > > var > i, j: word; > begin > i := $9988; > writeln( IntToHex(i, 4) ); //output '9988' > j := swap( i ); > writeln( IntToHex(j, 4)); //output '8899' > readln; > end. > > No need to go to the trouble of writing your won routine!! ;-) I didn't write it, one of the FPC developers did last year in the mailing list :) cheers James > > Matt > > > > Hi, > > > > Why does the following result in a runtime error ? > > > > program example; > > > > const > > THE_PORT = ; > > > > function swapWord(w: Word): Word; > > begin > > swapWord := (w SHL 8) OR (w SHR 8); > > end; > > > > var > > port: Word; > > begin > > port := swapWord(THE_PORT) > > end. > > > > $ ./swapword > > Runtime error 201 at 0x08052AA2 > > 0x08052AA2 > > 0x08052AC2 > > 0x080480B0 > > > > > > cheers > > James > > > > -- > > - > > -Zero Defect Software Engineers Group - ZDSEG > > - > > -You need only two tools. WD-40 and duct tape. > > -If it doesn't move and it should, use WD-40. > > -If it moves and shouldn't, use the tape. > > > > ___ > > fpc-pascal maillist - [EMAIL PROTECTED] > > http://lists.freepascal.org/mailman/listinfo/fpc-pascal > > > > > > ___ > fpc-pascal maillist - [EMAIL PROTECTED] > http://lists.freepascal.org/mailman/listinfo/fpc-pascal -- - -Zero Defect Software Engineers Group - ZDSEG - -You need only two tools. WD-40 and duct tape. -If it doesn't move and it should, use WD-40. -If it moves and shouldn't, use the tape. ___ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal