Reputation: 6866
I want to copy the content in the string to char array.
Can I use this code StrLCopy(C, pChar(@S[1]), high(C));
I am currently using Delphi 2006. Will there be any problems if I upgrade my Delphi version because of Unicode support provided in newer versions?
If not, what can be the code for this conversion?
Upvotes: 16
Views: 31829
Reputation: 163277
When you're copying a string into an array, prefer StrPLCopy
.
StrPLCopy(C, S, High(C));
That will work in all versions of Delphi, even when Unicode is in effect. The character types of C
and S
should be the same; don't try to use that function to convert between Ansi and Unicode characters.
But StrLCopy
is fine, too. You don't need to have so much pointer code, though. Delphi already knows how to convert a string into a PChar:
StrLCopy(C, PChar(S), High(C));
Upvotes: 18
Reputation: 125689
This works, in a quick test:
var
ch: array[0..10] of Char;
c: Char;
x: Integer;
st: string;
begin
s := 'Testing';
StrLCopy(PChar(@ch[0]), PChar(s), High(ch));
x := 100;
for c in ch do
begin
Canvas.TextOut(x, 100, c);
Inc(c, Canvas.TextWidth(c) + 3);
end;
end;
Upvotes: 7