a proposal about "with" syntax

classic Classic list List threaded Threaded
64 messages Options
1234
Reply | Threaded
Open this post in threaded view
|

a proposal about "with" syntax

Xiangrong Fang
Suppose I have the following class:

type
  TMyClass = class
  public
    property Caption: string read FCaption write FCaption;
    property Items[Index: Integer]: string read GetItem write SetItem; default;
    function Count: Integer;
  end;

I would like to do this:

with MyClassInstance as mci
, SomethingElse do begin
  Caption := 'A new caption';
  for i := 0 to Count - 1 do
    mci[i] := UpperCase(mci[i]);
end;


That is, to add an optional "as" clause to the with statement so that access array element in a structure is made easier.

_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: a proposal about "with" syntax

Sven Barth-2

Am 16.03.2013 07:14 schrieb "Xiangrong Fang" <[hidden email]>:
>
> Suppose I have the following class:
>
> type
>   TMyClass = class
>   public
>     property Caption: string read FCaption write FCaption;
>     property Items[Index: Integer]: string read GetItem write SetItem; default;
>     function Count: Integer;
>   end;
>
> I would like to do this:
>
> with MyClassInstance as mci, SomethingElse do begin
>   Caption := 'A new caption';
>   for i := 0 to Count - 1 do
>     mci[i] := UpperCase(mci[i]);
> end;
>
> That is, to add an optional "as" clause to the with statement so that access array element in a structure is made easier.

This was already requested multiple times and also reported on the bugtracker... Nevertheless in your specific case you can just use "Items[i]" instead of "mci[i]".

Regards,
Sven


_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: a proposal about "with" syntax

Xiangrong Fang
In reply to this post by Xiangrong Fang
In my example, you can use Items[], but in my real project it is a record with


发送自魅族MX

-------- 原始邮件 --------
发件人:Sven Barth <[hidden email]>
时间:3月16日 17:12 周六
收件人:FPC-Pascal users discussions <[hidden email]>
主题:Re: [fpc-pascal] a proposal about "with" syntax

Am 16.03.2013 07:14 schrieb "Xiangrong Fang" <[hidden email]>:
>
> Suppose I have the following class:
>
> type
>   TMyClass = class
>   public
>     property Caption: string read FCaption write FCaption;
>     property Items[Index: Integer]: string read GetItem write SetItem; default;
>     function Count: Integer;
>   end;
>
> I would like to do this:
>
> with MyClassInstance as mci, SomethingElse do begin
>   Caption := 'A new caption';
>   for i := 0 to Count - 1 do
>     mci[i] := UpperCase(mci[i]);
> end;
>
> That is, to add an optional "as" clause to the with statement so that access array element in a structure is made easier.

This was already requested multiple times and also reported on the bugtracker... Nevertheless in your specific case you can just use "Items[i]" instead of "mci[i]".

Regards,
Sven


_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: a proposal about "with" syntax

Xiangrong Fang
Sorry, the email was interrupted, but sent by the phone in background...

So the decision of this "feature" is that it is not worth to add, right?

Thanks.



2013/3/16 Xiangrong Fang <[hidden email]>
In my example, you can use Items[], but in my real project it is a record with


发送自魅族MX

-------- 原始邮件 --------
发件人:Sven Barth <[hidden email]>
时间:3月16日 17:12 周六
收件人:FPC-Pascal users discussions <[hidden email]>
主题:Re: [fpc-pascal] a proposal about "with" syntax


Am 16.03.2013 07:14 schrieb "Xiangrong Fang" <[hidden email]>:
>
> Suppose I have the following class:
>
> type
>   TMyClass = class
>   public
>     property Caption: string read FCaption write FCaption;
>     property Items[Index: Integer]: string read GetItem write SetItem; default;
>     function Count: Integer;
>   end;
>
> I would like to do this:
>
> with MyClassInstance as mci, SomethingElse do begin
>   Caption := 'A new caption';
>   for i := 0 to Count - 1 do
>     mci[i] := UpperCase(mci[i]);
> end;
>
> That is, to add an optional "as" clause to the with statement so that access array element in a structure is made easier.

This was already requested multiple times and also reported on the bugtracker... Nevertheless in your specific case you can just use "Items[i]" instead of "mci[i]".

Regards,
Sven



_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: a proposal about "with" syntax

shiruba2012
In reply to this post by Xiangrong Fang
Hi,

I also think this would be useful, but for other reasons, often times I end up with code like the following:

With BigLongThingIDontWantToWriteOutEverySingleTime do
  begin
     Height := 100;
     Width := 200;
    ...
     SomeOtherObject.Submit(BigLongThingIDontWantToWriteOutEverySingleTime);
  end;

Notice how I have to write the long thing out again at the bottom.  There must be a way around that (Something like "Self", but that refers to whatever you are using in With).  In Xiangrong's example, this could be mci, but even it it was a static name it would be useful.  (If this exists and I am just not aware, please let me know!)

Thank you,
   Noah Silva

On 2013/03/16, at 15:13, Xiangrong Fang <[hidden email]> wrote:

Suppose I have the following class:

type
  TMyClass = class
  public
    property Caption: string read FCaption write FCaption;
    property Items[Index: Integer]: string read GetItem write SetItem; default;
    function Count: Integer;
  end;

I would like to do this:

with MyClassInstance as mci
, SomethingElse do begin
  Caption := 'A new caption';
  for i := 0 to Count - 1 do
    mci[i] := UpperCase(mci[i]);
end;


That is, to add an optional "as" clause to the with statement so that access array element in a structure is made easier.
_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/mailman/listinfo/fpc-pascal


_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: a proposal about "with" syntax

Daniel Gaspary
On Sat, Mar 16, 2013 at 3:02 PM, 印場 乃亜 <[hidden email]> wrote:

> With BigLongThingIDontWantToWriteOutEverySingleTime do
>   begin
>      Height := 100;
>      Width := 200;
>     ...
>      SomeOtherObject.Submit(BigLongThingIDontWantToWriteOutEverySingleTime);
>   end;
>
> Notice how I have to write the long thing out again at the bottom.  There
> must be a way around that (Something like "Self", but that refers to
> whatever you are using in With).

You can use a Class Helper:

http://pastebin.com/pFL49byh

But you gonna need to use a type cast. And with a "SomethingElse" at
the with, as showed by Xiangrong, things can become messy.
_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: a proposal about "with" syntax

Xiangrong Fang
[hidden email]'s example is better than mine, and was exactly the reason I posted this suggestion.

I don't think a class helper is worth for this stuff, if I need to write a helper I would rather do this:

longobj := BigLongThingIDontWantToWriteOutEverySingleTime;
With longobj do begin
  Height := 100;
  Width := 200;
  ...
  SomeOtherObject.Submit(longobj
);
end;

That's not elegant, but it is really not worth for a helper in this case, IMHO.  "with" itself is a convenience syntax anyway, why adding an "as" to make it more convenient a bad idea?  I don't know what's make it complex if there are 2 or more subject in the with?


2013/3/17 Daniel Gaspary <[hidden email]>
On Sat, Mar 16, 2013 at 3:02 PM, 印場 乃亜 <[hidden email]> wrote:
> With BigLongThingIDontWantToWriteOutEverySingleTime do
>   begin
>      Height := 100;
>      Width := 200;
>     ...
>      SomeOtherObject.Submit(BigLongThingIDontWantToWriteOutEverySingleTime);
>   end;
>
> Notice how I have to write the long thing out again at the bottom.  There
> must be a way around that (Something like "Self", but that refers to
> whatever you are using in With).

You can use a Class Helper:

http://pastebin.com/pFL49byh

But you gonna need to use a type cast. And with a "SomethingElse" at
the with, as showed by Xiangrong, things can become messy.

_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: a proposal about "with" syntax

Daniel Gaspary
On Sat, Mar 16, 2013 at 7:55 PM, Xiangrong Fang <[hidden email]> wrote:
> I don't think a class helper is worth for this stuff, if I need to write a
> helper I would rather do this:

I am not sure that I understand your point.

The Class helper was a way to show how it's possible. And with that
helper, ALL objects could use it's method. You could use it as
library.

> why adding an "as" to make it more convenient a bad idea?

I don't mean that. The Type cast is necessary in my solution, just that.

>  I don't know what's make it complex if there are 2 or more subject in the with?

Context. A conflict case the two object were of the same class.
_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: a proposal about "with" syntax

Xiangrong Fang
>  I don't know what's make it complex if there are 2 or more subject in the with?

Context. A conflict case the two object were of the same class.

Are you saying this case:


with MyClassInstance1 as m, MyClassInstance2 do begin
  m.Property1 := 123;
  Property2 := 456;
end;

Here you don't know Property2 belongs to which object instance??  If so, this is not a problem at all, because even without "as" you still cannot distinguish, so the compiler should deny this kind of usage anyway, however, with "as", you can do this:

with MyClassInstance1 as m1, MyClassInstance2 as m2 do begin
  m1.Property1 := 123;
  m2.Property2 := 456;
end;


To summarize, "as" does NOT try to eliminate context ambiguity (also it won't make a clear context ambiguous), but provided some convenience when needed.

_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: a proposal about "with" syntax

etrusco
On Sat, Mar 16, 2013 at 10:14 PM, Xiangrong Fang <[hidden email]> wrote:

>> >  I don't know what's make it complex if there are 2 or more subject in
>> > the with?
>>
>> Context. A conflict case the two object were of the same class.
>
>
> Are you saying this case:
>
> with MyClassInstance1 as m, MyClassInstance2 do begin
>   m.Property1 := 123;
>   Property2 := 456;
> end;
>
> Here you don't know Property2 belongs to which object instance??

No, he's saying that *his hack* using class helper wouldn't cover this
case (two objects in the same 'with' clause).

Daniel, I find this hack as ingenious as atrocious ;-)
But thinking about it a bit, when FPC gets generic methods you can
make this kind of workable!

> (...)
> To summarize, "as" does NOT try to eliminate context ambiguity (also it
> won't make a clear context ambiguous), but provided some convenience when
> needed.

As Sven said this feature has already been requested a few times.
I don't remember whether it was permanently vetoed by FPC developers
or just is in the to-do, but vaguely remember people arguing it's
"un-pascal" because of the local variable/scope - which is
unfortunate, because IMO the 'with' syntax is one of the most
abominable un-pascal things Borland introduced in the language, and
*forcing* the AS syntax (but probably with some other keyword like
ALIAS) would make it much more palatable.

Best regards,
Flávio
_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: a proposal about "with" syntax

shiruba2012
In reply to this post by Xiangrong Fang
Hi,

Also with using the "longobj" below, you have to declare it first (yet more manual temporary/helper variables).  
Also, once you do that, you don't need with as much to begin with since you could use a single char. variable name.

BTW, I don't think Daniel was suggesting that we actually use a class helper for such cases - just demonstrating that it's possible.  I have to admit I didn't even think of using a class helper, so that's fairly creative.  It could also be a possible implementation pathway if someone decides to implement it - but I doubt it since if you have access to internal compiler structures, you already know what "with" is referring to.

I am not sure anyone has decided that "as" is specifically a bad idea. (Correct me if I am wrong).  Look at it the opposite way, though.  For every request, there has to be somebody capable of implementing it in the compiler who has free time and considers it to be more important than all of the other things outstanding.  

I fully support having an "as" operator or something effectively similar, however I also know than submitting a patch is better than making a feature request.  

Also, I am happy just to have "with" at all.  My "other" main language (ABAP) has lots of awesome stuff like Native DB integration, but somehow doesn't have WITH!  (From the my limited Java experience, it seems Java doesn't have an easy alternative either).

Thank you,
    Noah Silva

On 2013/03/17, at 7:55, Xiangrong Fang <[hidden email]> wrote:

[hidden email]'s example is better than mine, and was exactly the reason I posted this suggestion.

I don't think a class helper is worth for this stuff, if I need to write a helper I would rather do this:

longobj := BigLongThingIDontWantToWriteOutEverySingleTime;
With longobj do begin
  Height := 100;
  Width := 200;
  ...
  SomeOtherObject.Submit(longobj
);
end;

That's not elegant, but it is really not worth for a helper in this case, IMHO.  "with" itself is a convenience syntax anyway, why adding an "as" to make it more convenient a bad idea?  I don't know what's make it complex if there are 2 or more subject in the with?


2013/3/17 Daniel Gaspary <[hidden email]>
On Sat, Mar 16, 2013 at 3:02 PM, 印場 乃亜 <[hidden email]> wrote:
> With BigLongThingIDontWantToWriteOutEverySingleTime do
>   begin
>      Height := 100;
>      Width := 200;
>     ...
>      SomeOtherObject.Submit(BigLongThingIDontWantToWriteOutEverySingleTime);
>   end;
>
> Notice how I have to write the long thing out again at the bottom.  There
> must be a way around that (Something like "Self", but that refers to
> whatever you are using in With).

You can use a Class Helper:

http://pastebin.com/pFL49byh

But you gonna need to use a type cast. And with a "SomethingElse" at
the with, as showed by Xiangrong, things can become messy.
_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/mailman/listinfo/fpc-pascal


_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: a proposal about "with" syntax

shiruba2012
In reply to this post by etrusco
Hi,

On 2013/03/17, at 11:37, Flávio Etrusco <[hidden email]> wrote:
>
> No, he's saying that *his hack* using class helper wouldn't cover this
> case (two objects in the same 'with' clause).
>
Well, more to the point, it only works with OOP.  I use WITH on structures, etc. all the time, so ... yes implementing it in the compiler/RTL would be preferable of course.

> Daniel, I find this hack as ingenious as atrocious ;-)
> But thinking about it a bit, when FPC gets generic methods you can
> make this kind of workable!

No comment, but the fact that he replied with his "solution" so quickly makes me wonder if he has actually used it before!

>
>> (...)
>> To summarize, "as" does NOT try to eliminate context ambiguity (also it
>> won't make a clear context ambiguous), but provided some convenience when
>> needed.
>
> As Sven said this feature has already been requested a few times.
> I don't remember whether it was permanently vetoed by FPC developers
> or just is in the to-do, but vaguely remember people arguing it's
> "un-pascal" because of the local variable/scope - which is
> unfortunate, because IMO the 'with' syntax is one of the most
> abominable un-pascal things Borland introduced in the language, and
> *forcing* the AS syntax (but probably with some other keyword like
> ALIAS) would make it much more palatable.

I'm a bit confused on this point.  To me, WITH has been around for a long time, and is to me very Pascal.  Probably because PAscal is one of the only languages that allows nested procedures, etc., and "with" seems similar to me.  (Also, pretty much to me Borland = Pascal).  Although I just wanted a keyword (like "self"), the AS proposal makes more sense if you use more than one item in the same WITH.  (I usually don't because they would have the same fields anyway...)  

I think having functions/procedures with no arguments callable with procedurename() is un-pascal-like as well, but it hardly bothers me that FPK allows it.  Just because I don't love it doesn't mean others don't.  (There is a lot of C like syntax that has creeped into FPK, but I assume that'S either because it was easy to implement and a few people wanted it, or because it made porting C stuff to Pascal easier).  One could say OOP isn't Pascal like because the original inventor didn't come up with TObject...

Actually the only thing that makes me uncomfortable about the keyword "as", is that it strangely reminds me of SQL.  I suppose that isn't a bad thing though.  

 Thank you,
       Noah Silva
>
> Best regards,
> Flávio
> _______________________________________________
> fpc-pascal maillist  -  [hidden email]
> http://lists.freepascal.org/mailman/listinfo/fpc-pascal

_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: a proposal about "with" syntax

etrusco
> Actually the only thing that makes me uncomfortable about the keyword "as", is that
> it strangely reminds me of SQL.  I suppose that isn't a bad thing though.

No problem with SQL, but "as" is already safe typecast, remember? ;-)

-Flávio
_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: a proposal about "with" syntax

Daniel Gaspary
In reply to this post by shiruba2012
On Sun, Mar 17, 2013 at 12:07 AM, 印場 乃亜 <[hidden email]> wrote:
> On 2013/03/17, at 11:37, Flávio Etrusco <[hidden email]> wrote:
>> Daniel, I find this hack as ingenious as atrocious ;-)
>> But thinking about it a bit, when FPC gets generic methods you can
>> make this kind of workable!

I was thinking about this, not specifically generic methods, but some
new generic resource.


> No comment, but the fact that he replied with his "solution" so quickly makes me wonder if he has actually used it before!

I never used it, but indeed I have thought before about a way to do this.

I would like to have option to use a kind of self in with statement,
but I understand the compiler team that it is a superfluous resource.
_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: a proposal about "with" syntax

etrusco
On Sun, Mar 17, 2013 at 12:16 AM, Daniel Gaspary <[hidden email]> wrote:
> On Sun, Mar 17, 2013 at 12:07 AM, 印場 乃亜 <[hidden email]> wrote:
>> On 2013/03/17, at 11:37, Flávio Etrusco <[hidden email]> wrote:
>>> Daniel, I find this hack as ingenious as atrocious ;-)
>>> But thinking about it a bit, when FPC gets generic methods you can
>>> make this kind of workable!
>
> I was thinking about this, not specifically generic methods, but some
> new generic resource.

Indeed. What I was thinking would actually need generic functions,
bounded generics and generics with type-erasure ;-)
So you'd write, say:
>>>>
  type generic TAlias1<T: TObject> = class(TObject)
    function Alias1: T;
  end;

 function<T: TObject> Alias1(Source: T): TAlias1<T>;
<<<<

And yet you wouldn't be able to name the alias...

-Flávio

PS. I can't believe Embarcadero went for ":" instead of "=" for
declaring bounded/restricted generics :-/
_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: a proposal about "with" syntax

leledumbo
Administrator
> PS. I can't believe Embarcadero went for ":" instead of "=" for
declaring bounded/restricted generics :-/

That's correct, since : means "of type" in a declaration.
Reply | Threaded
Open this post in threaded view
|

Re: a proposal about "with" syntax

Sven Barth-2
In reply to this post by shiruba2012
On 17.03.2013 04:07, 印場 乃亜 wrote:
> I think having functions/procedures with no arguments callable with procedurename() is un-pascal-like as well, but it hardly bothers me that FPK allows it.  Just because I don't love it doesn't mean others don't.  (There is a lot of C like syntax that has creeped into FPK, but I assume that'S either because it was easy to implement and a few people wanted it, or because it made porting C stuff to Pascal easier).

The reason that FPC allows to call parameterless functions and
procedures with "()" is because Delphi (and maybe TP) allows it as well.
For procedure/function variables (in non-Delphi modes) it is required
however, because this way the compiler can know for sure that a procvar
is called instead of just being used as a normal variable.

Regards,
Sven

_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: a proposal about "with" syntax

Sven Barth-2
In reply to this post by etrusco
On 17.03.2013 06:00, Flávio Etrusco wrote:

> On Sun, Mar 17, 2013 at 12:16 AM, Daniel Gaspary <[hidden email]> wrote:
>> On Sun, Mar 17, 2013 at 12:07 AM, 印場 乃亜 <[hidden email]> wrote:
>>> On 2013/03/17, at 11:37, Flávio Etrusco <[hidden email]> wrote:
>>>> Daniel, I find this hack as ingenious as atrocious ;-)
>>>> But thinking about it a bit, when FPC gets generic methods you can
>>>> make this kind of workable!
>>
>> I was thinking about this, not specifically generic methods, but some
>> new generic resource.
>
> Indeed. What I was thinking would actually need generic functions,
> bounded generics and generics with type-erasure ;-)
> So you'd write, say:
>>>>>
>    type generic TAlias1<T: TObject> = class(TObject)
>      function Alias1: T;
>    end;
>

This already works.

>   function<T: TObject> Alias1(Source: T): TAlias1<T>;

I don't really get what you want to express with that...

Regards,
Sven
_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: a proposal about "with" syntax

Luca Olivetti-2
In reply to this post by etrusco
Al 17/03/13 03:37, En/na Flávio Etrusco ha escrit:

> unfortunate, because IMO the 'with' syntax is one of the most
> abominable un-pascal things Borland introduced in the language, and
> *forcing* the AS syntax (but probably with some other keyword like
> ALIAS) would make it much more palatable.

I checked on google books and it doesn't seem to be a Borland addition

http://books.google.es/books?hl=ca&id=mHSZRZnDp60C&q=with#search_anchor

Texas Instruments' Pascal had an extension of the with statement, IIRC
it used = instead of AS

With a=VeryLongNameForARecord, b=AnotherRecordWithAVeryLongName do ...

Bye
--
Luca


_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: a proposal about "with" syntax

Sven Barth-2
On 17.03.2013 11:07, Luca Olivetti wrote:

> Al 17/03/13 03:37, En/na Flávio Etrusco ha escrit:
>
>> unfortunate, because IMO the 'with' syntax is one of the most
>> abominable un-pascal things Borland introduced in the language, and
>> *forcing* the AS syntax (but probably with some other keyword like
>> ALIAS) would make it much more palatable.
>
> I checked on google books and it doesn't seem to be a Borland addition
>
> http://books.google.es/books?hl=ca&id=mHSZRZnDp60C&q=with#search_anchor
>
> Texas Instruments' Pascal had an extension of the with statement, IIRC
> it used = instead of AS
>
> With a=VeryLongNameForARecord, b=AnotherRecordWithAVeryLongName do ...

Now THAT is really unpascalish... either ":=" or the already suggested
"as"...

Regards,
Sven

_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/mailman/listinfo/fpc-pascal
1234