[Lazarus] Converting pchar to pcchar

Alex du Plessis alexdup.main at gmail.com
Mon Aug 15 09:17:32 CEST 2011


On 14/08/2011 20:30, Sven Barth wrote:
> On 14.08.2011 18:45, Alex du Plessis wrote:
>> Hi List,
>>
>> Could anyone tell me what is the difference between a pchar and a
>> pcchar? |And how does one create the one from the other.
>>
>
> If you look into the unit "ctypes" (located in $fpcdir/rtl/inc) you'll 
> see that "ppchar" is defined as "^cchar" and "cchar" is defined as 
> "cint8" which in turn is defined as "shortint". While SizeOf(ShortInt) 
> = SizeOf(Char) is true ("Char" is the base of "PChar"), ShortInt=Char 
> is not.
>
> I personally would just cast one to the other:
>
> === source begin ===
>
> var
>   pcc: PCChar;
>   pc: PChar;
> begin
>   pc := 'Hello World'; // I hope one can assign strings to PChars 
> directly O.o
>   pcc := PChar(pc);
> end;
>
> === source end ===
>
>> I have a library that was written in c++ and need to enter a string
>> parameter into one of the (crucial) functions. When I used h2pas to
>> convert the c header file it replaced the parameter type with a pcchar
>> on that function. As far as I can determine, the two types are not
>> compatible - the type checking in the compiler throws an error and
>> refuses to compile.
>>
>> I could state the question differently as well. How do I get a string
>> into a pcchar variable?
>
> You first need to cast the String to PChar (so that the compiler's 
> String->PChar magic can do its work) and then you can cast it to PCChar.
>
> Regards,
> Sven
>
> PS: You might be better of posting such questions on fpc-pascal, as 
> more compiler devs are there.
>
> -- 
> _______________________________________________
> Lazarus mailing list
> Lazarus at lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
Thanks Sven - that seems to have done the trick :)




More information about the Lazarus mailing list