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
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to