[fpc-pascal] Is it possible to redefine FreePascal types?

Ewald bloody.middlefinger at yellowcouch.org
Wed Nov 21 20:46:00 CET 2012


Once upon a time, on 11/21/2012 08:37 PM to be precise, Frank Church said:
> Lets say I am using some string variables, but I want to ensure that
> there are no typing errors in some code I am using.
> so I define newString as a new string type and declare a variable as
> ANewString.
>
> That way if I create a function such as functionUsingNewString(a:
> newString) and I pass a plain string as a parameter to
> functionNewString the compiler declares an error.
>
> If c is string and b is newString and I do b := c the compiler should
> generate an error unless I do b := newString(c);
>
> Is this possible?
If you declare something like

Type
    NewString = Record
        Data: Array of Char;
    End;

And a function:
    Function ToNewString(a: String): NewString;
    Begin
        SetLength(Result.Data, Length(a));
        Move(a[1], Result.Data[0], Length(a) * SizeOf(Char));
    End;

; The compiler should generate an error when you try to typecast a
String to a NewString.

-- 
Ewald




More information about the fpc-pascal mailing list