Re: [fpc-pascal] pointer to char vs pchar
Am 24.03.2023 um 15:04 schrieb Benito van der Zander via fpc-pascal: why is a pointer to a char not a pchar (for type helpers)? Because that's how helpers work in Delphi as well: The address operator has as a result an expression that allows the use of a helper for the raw Pointer type (no matter if $TypedAddress is enabled or not). Regards, Sven ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] pointer to char vs pchar
On Fri, 24 Mar 2023, Peter B via fpc-pascal wrote: On 24/03/2023 14:29, Martin Frb via fpc-pascal wrote: On 24/03/2023 15:04, Benito van der Zander via fpc-pascal wrote: why is a pointer to a char not a pchar (for type helpers)? My guess: For the same reason that "p2" fails in the below. Distinct type. May be assignment compatible, but a type of it's own. My understanding is that pchars are supposed to be null terminated, while the char in a pointer to a char might not be. This is not quite correct. By itself, a PChar can point to anything. Only if you typecast a valid ansistring to a pchar then the result of the typecast is guaranteed to be null-terminated. Michael. ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] pointer to char vs pchar
On 24/03/2023 14:29, Martin Frb via fpc-pascal wrote: On 24/03/2023 15:04, Benito van der Zander via fpc-pascal wrote: why is a pointer to a char not a pchar (for type helpers)? My guess: For the same reason that "p2" fails in the below. Distinct type. May be assignment compatible, but a type of it's own. My understanding is that pchars are supposed to be null terminated, while the char in a pointer to a char might not be. ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] pointer to char vs pchar
On 24/03/2023 15:04, Benito van der Zander via fpc-pascal wrote: why is a pointer to a char not a pchar (for type helpers)? My guess: For the same reason that "p2" fails in the below. Distinct type. May be assignment compatible, but a type of it's own. Imagine you had a different helper, with a different "toString" on pchar2, then which one should @char get? program Project1; {$Mode objfpc}{$H+} {$ModeSwitch typehelpers} type pchar = ^char; pchar2 = ^char; type TPcharHelper = type helper for pchar function toString(length: integer): string; end; function TPcharHelper.toString(length: integer): string; begin end; var p: pchar; p2: pchar2; begin p.toString(1); p2.toString(1); // error end. ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
[fpc-pascal] pointer to char vs pchar
Hallo, why is a pointer to a char not a pchar (for type helpers)? program Project1; {$Mode objfpc}{$H+} {$ModeSwitch typehelpers} type TPcharHelper = type helper for pchar function toString(length: integer): string; end; function TPcharHelper.toString(length: integer): string; begin SetString(result, self, length); end; var c: char; begin c := 'x'; writeln((@c).toString(1)); //does not compile writeln(pchar(@c).toString(1)); end. Bye, Benito ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal