16

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?

2 Answers 2

18

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));
Sign up to request clarification or add additional context in comments.

Comments

7

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;

4 Comments

Can you please tell me the difference between the two STrlCopy statements
Thank you Ken for taking time
The help says: "Warning: The ANSI version of StrLCopy is deprecated. Please use the AnsiStrings unit."
This answer was written more than a decade ago, and the procedure was not deprecated at that time. If you're getting that waning, then add the AnsiStrings unit to your implementation uses clause to stop it. Out of curiosity, why did you choose to comment on my answer instead of the other one, or the question itself?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.