In our previous episode, Ryan Joseph said:
> I would like short strings so I can do concatenation easily but I need to 
> pass pchar to a C function. Is there anyway to do this on the stack instead 
> of allocating a string each time? I feel like it was possible to do some type 
> casting but I don?t remember how.
> 
> pname := StrAlloc(Length(name) + 1);
> StrPCopy(pname, name);
> result := glGetUniformLocation(programID, pname);
> StrDispose(pname);

When creating the content of name append #0 (name:=whateverexpression+#0 ); , 
then do
  result = glGetUniformLocation(programID, @name[1]);

Of course this reduces the maximum length of the shortstring by one. In
Paleo times I've seen TP frameworks that always allocated an extra char
field in records after the shortstring, so that a #0 could always be
appended, even if the string was max.

But the best way is to design out shortstrings.
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to