Re: [fpc-pascal] class property accessor static
07.02.2017 18:10, Mattias Gaertner wrote: The getter/setter of a class-property must be "static" (Delphi compatible). If I understand "static" correctly, then "static" simply omits passing the class as parameter. So a static class procedure is just a dumber version of a normal class procedure. What is the advantage of using "static" for class property accessors? Aka: Why did Delphi choose static here? Class properties has apperared together with class constants and class variables (which are static by their nature). They were introduced (as I understand) to give access to private/protected static elements. -- Best regards, Paul Ishenin. ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] class property accessor static
On Tue, 7 Feb 2017 23:20:18 +0100 Sven Barthwrote: > Am 07.02.2017 19:59 schrieb "Maciej Izak" : > > > > > > 2017-02-07 19:49 GMT+01:00 Mattias Gaertner : > >> > >> In FPC static class methods can be virtual as well. > > > > > > So we have bug... > > Indeed... A useful bug. Mattias ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] class property accessor static
Am 07.02.2017 19:59 schrieb "Maciej Izak": > > > 2017-02-07 19:49 GMT+01:00 Mattias Gaertner : >> >> In FPC static class methods can be virtual as well. > > > So we have bug... Indeed... Regards, Sven ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] class property accessor static
2017-02-07 19:49 GMT+01:00 Mattias Gaertner: > In FPC static class methods can be virtual as well. So we have bug... -- Best regards, Maciej Izak ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] class property accessor static
On Tue, 7 Feb 2017 19:23:52 +0100 Sven Barthwrote: >[...] > Oh and don't forget that non-static class methods can be virtual (sometimes > I really miss that in C++). In FPC static class methods can be virtual as well. Mattias ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] class property accessor static
Am 07.02.2017 14:31 schrieb "Graeme Geldenhuys" < mailingli...@geldenhuys.co.uk>: > I never understood Object Pascal's class methods/properties either? > Unlike Java, not everything needs to be in a class. We are allowed to > have procedures or functions, and global ones at that. So in Object > Pascal we could simply have a unit called FooStuff where everything > related to Foo is defined, then have a global function F() and then use > it as follows... It allows for grouping. This way one can directly see (by using the completion window or by peeking at the declaration oneself) that there is a routine F() that belongs somehow to TFoo. If you put that into a separate unit however then it isn't clear by itself that the stuff relates to TFoo. In the end it's a question of taste. I personally like class methods and class properties. Oh and don't forget that non-static class methods can be virtual (sometimes I really miss that in C++). Regards, Sven ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] class property accessor static
On 2017-02-07 13:35, Mattias Gaertner wrote: > Class methods can be overridden. But then you would have to define a new type first. In that case you can simply have a instance variable too. Personally, it just doesn't make much sense to me in Object Pascal. But thanks for clarifying the difference. Regards, Graeme -- fpGUI Toolkit - a cross-platform GUI toolkit using Free Pascal http://fpgui.sourceforge.net/ My public PGP key: http://tinyurl.com/graeme-pgp ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] class property accessor static
2017-02-07 14:35 GMT+01:00 Mattias Gaertner: > > I never understood Object Pascal's class methods/properties either? > > Unlike Java, not everything needs to be in a class. We are allowed to > > have procedures or functions, and global ones at that. So in Object > > Pascal we could simply have a unit called FooStuff where everything > > related to Foo is defined, then have a global function F() and then use > > it as follows... > > Class methods can be overridden. not static. btw. class property is not my idea :P. Don't forget that you can use property as array and is possible to use index keyword. type TFoo = class class function F(i: integer): byte; static; class property P1: byte index 10 read F; class property P2[idx: integer]: byte read F; end; -- Best regards, Maciej Izak ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] class property accessor static
On Tue, 7 Feb 2017 13:31:10 + Graeme Geldenhuyswrote: >[...] > Couldn't that simply be > > Writeln(TFoo.F); Yes. > I never understood Object Pascal's class methods/properties either? > Unlike Java, not everything needs to be in a class. We are allowed to > have procedures or functions, and global ones at that. So in Object > Pascal we could simply have a unit called FooStuff where everything > related to Foo is defined, then have a global function F() and then use > it as follows... Class methods can be overridden. Mattias ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] class property accessor static
On 2017-02-07 13:19, Maciej Izak wrote: > "class property" is used for code where class instance (nor assign to meta > class) is not needed. Some variance/idea of singleton pattern. TFoo might > be used as namespace: > > ===code begin=== > var > Foo: TFooClass; // or Foo: TFoo > begin > WriteLn(Foo.F); > end; > ===code end=== Couldn't that simply be Writeln(TFoo.F); ??? I never understood Object Pascal's class methods/properties either? Unlike Java, not everything needs to be in a class. We are allowed to have procedures or functions, and global ones at that. So in Object Pascal we could simply have a unit called FooStuff where everything related to Foo is defined, then have a global function F() and then use it as follows... Writeln(F); Regards, Graeme -- fpGUI Toolkit - a cross-platform GUI toolkit using Free Pascal http://fpgui.sourceforge.net/ My public PGP key: http://tinyurl.com/graeme-pgp ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] class property accessor static
2017-02-07 13:51 GMT+01:00 Mattias Gaertner: > Why is that "more handy"? "static" does not have a Self. That > is less handy, isn't it? > by "handy" I mean usage of "class properties" instead of "static methods". > I can't follow you here. Are we still talking about why Delphi choose > static instead of normal? > "class property" is used for code where class instance (nor assign to meta class) is not needed. Some variance/idea of singleton pattern. TFoo might be used as namespace: ===code begin=== var Foo: TFooClass; // or Foo: TFoo begin WriteLn(Foo.F); end; ===code end=== for regular "property" with "class methods" you need something like this: ===code begin=== var Foo: TFooClass; begin Foo := TFoo; WriteLn(Foo.E); end; ===code end=== and for normal property: ===code begin=== var Foo: TFoo; begin Foo := TFoo.Create; WriteLn(Foo.D); end; ===code end=== > True. > OTOH you loose some possibilities. > True. -- Best regards, Maciej Izak ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
[fpc-pascal] fphttpserver and streaming ?
Hello. Is it possible to do a web-streaming-server with fphttpserver ? If yes, are there examples ? If no, what are the steps to realize it? In a loop, a buffer of float is filled at each loop. What must be done for: - Prepare the server to welcome that buffer. - On each loop, copy the buffer to the server, ready to use for clients. - For the clients, what url-adress must be used. Huh and who can become a web-streaming-server, can it be on a commun laptop, connected with a commun wifi hotspot ? Many thanks. Fre;D ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] class property accessor static
On Tue, 7 Feb 2017 13:25:16 +0100 Maciej Izakwrote: > 2017-02-07 13:11 GMT+01:00 Mattias Gaertner : >[...] > > Sorry, I don't get it. > > Why is using a static method as accessor an advantage? > > > > You can use Get/Set pair of static methods in "property" form. Might be > more handy. Why is that "more handy"? "static" does not have a Self. That is less handy, isn't it? > > > and second: will work for improper implemented code ;) > > > (which is maybe disadvantage?): > > > > > > TFoo($1).F; > > > TFooClass($1).F; > > > > I don't see why these calls require static instead of normal. > > In other scenario (for normal "property") this call will raise AV. I can't follow you here. Are we still talking about why Delphi choose static instead of normal? > btw. "class property" is probably slightly faster ;) because don't pass > "self" parameter. True. OTOH you loose some possibilities. Mattias ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] class property accessor static
On Tue, 7 Feb 2017, Maciej Izak wrote: I don't see why these calls require static instead of normal. In other scenario (for normal "property") this call will raise AV. btw. "class property" is probably slightly faster ;) because don't pass "self" parameter. In other words, there is no real reason why the method must be static. Michael. ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] class property accessor static
2017-02-07 13:11 GMT+01:00 Mattias Gaertner: > That's an advantage of static methods. > But how is that related to class properties? > How can you use class properties with "methods designed for > callbacks from external API"? > Is not related. AFAIK "class property" exist for complexity of language (otherwise usage of "static" methods would be impossible for "property" syntax). > Sorry, I don't get it. > Why is using a static method as accessor an advantage? > You can use Get/Set pair of static methods in "property" form. Might be more handy. > > and second: will work for improper implemented code ;) > > (which is maybe disadvantage?): > > > > TFoo($1).F; > > TFooClass($1).F; > > I don't see why these calls require static instead of normal. > In other scenario (for normal "property") this call will raise AV. btw. "class property" is probably slightly faster ;) because don't pass "self" parameter. -- Best regards, Maciej Izak ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] class property accessor static
On Tue, 7 Feb 2017 12:30:26 +0100 Maciej Izakwrote: > 2017-02-07 12:10 GMT+01:00 Mattias Gaertner : >[...] > Generally "static" means no hidden parameter "self". "static" for methods > is used for methods designed for callbacks from external API. That's an advantage of static methods. But how is that related to class properties? How can you use class properties with "methods designed for callbacks from external API"? > We have 3 possibilities: > > ===code begin=== > type > TFooClass = class of TFoo; > TFoo = class > function A: Int32; // self as instance > class function B: Int32; // self as meta class of TFoo > class function C: Int32; static; // no self > > property D: Int32 read A; > property E: Int32 read B; > class property F: Int32 read C; > ===code end=== > > "class property" has two advantages. First: you can use "static" methods > for properties Sorry, I don't get it. Why is using a static method as accessor an advantage? > and second: will work for improper implemented code ;) > (which is maybe disadvantage?): > > TFoo($1).F; > TFooClass($1).F; I don't see why these calls require static instead of normal. Mattias ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] class property accessor static
2017-02-07 12:10 GMT+01:00 Mattias Gaertner: > The getter/setter of a class-property must be "static" (Delphi > compatible). > If I understand "static" correctly, then "static" simply omits passing > the class as parameter. So a static class procedure is just a dumber > version of a normal class procedure. > > What is the advantage of using "static" for class property accessors? > Aka: Why did Delphi choose static here? > Generally "static" means no hidden parameter "self". "static" for methods is used for methods designed for callbacks from external API. We have 3 possibilities: ===code begin=== type TFooClass = class of TFoo; TFoo = class function A: Int32; // self as instance class function B: Int32; // self as meta class of TFoo class function C: Int32; static; // no self property D: Int32 read A; property E: Int32 read B; class property F: Int32 read C; ===code end=== "class property" has two advantages. First: you can use "static" methods for properties and second: will work for improper implemented code ;) (which is maybe disadvantage?): TFoo($1).F; TFooClass($1).F; -- Best regards, Maciej Izak ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
[fpc-pascal] class property accessor static
Hi, The getter/setter of a class-property must be "static" (Delphi compatible). If I understand "static" correctly, then "static" simply omits passing the class as parameter. So a static class procedure is just a dumber version of a normal class procedure. What is the advantage of using "static" for class property accessors? Aka: Why did Delphi choose static here? Mattias ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] Parameterless constructors are not allowed in records or record/type helpers
Thanks got it now. Not ideal but it works and is a small improvement over a function. > On Feb 6, 2017, at 2:06 PM, Sven Barthwrote: > > You need to add the "static" modifier to the method. Class functions in > records can't have a self parameter and the "static" disables that. That's > why. > > Regards, Ryan Joseph ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal