Tôi đang chuyển đổi các ứng dụng của mình sang Delphi 2009 và gặp phải một vấn đề hấp dẫn với một số cuộc gọi cần chuyển đổi một chuỗi (rộng) thành AnsiString.Chuyển chuỗi thành PAnsiChar ở Delphi 2009
Dưới đây là một ví dụ để chứng minh vấn đề tôi đang gặp:
var
s: PAnsiChar;
...
s := PAnsiChar(Application.ExeName);
Với Delphi 2007 và các phiên bản trước, s: = PChar (Application.ExeName) sẽ quay trở lại con đường ứng dụng exe.
với Delphi 2009, s: = PAnsiChar (Application.ExeName) chỉ trả về 'E'.
Tôi đoán là vì tôi đang chuyển đổi chuỗi unicode thành chuỗi ansi nhưng làm cách nào tôi có thể chuyển đổi chuỗi sao cho PAnsiChar nhận được chuỗi đầy đủ?
Bạn không nên vì nó là một chuyển đổi rõ ràng. Và, có, nó sẽ hoạt động. – gabr
Tôi biết, nhưng việc chuyển đổi sang PAnsiChar cũng là một vấn đề nhỏ. –
Tính năng này hoạt động theo chi phí của chuyển đổi rõ ràng. Có cách nào khác không? Việc chuyển đổi sang PAnsiChar được giải thích trong phần trả lời của tôi dưới đây. – smartins