Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / fpc-pascal / 2018-02

Better way to convert short string to pchar?

3 messages · 2 people ·

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Ryan Joseph

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);

Regards,
Ryan Joseph

Marco van de Voort
to Ryan Joseph

In our previous episode, Ryan Joseph said:

Show quoted text 6 lines
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.

Ryan Joseph
to Marco van de Voort
On Feb 23, 2018, at 6:51 PM, Marco van de Voort wrote: When creating the content of name append #0 (name:=whateverexpression+#0 ); , then do result = glGetUniformLocation(programID, @name[1]);

Thanks now I remember. That was driving me crazy.

Regards,
Ryan Joseph