2009-07-07 19 views
0

Delphi 2009に変換するアプリケーションが非常に多く、pAnsiCharsを返す多くの外部インターフェイスがあります。誰もがこれらをpCharsにキャストするための素早く簡単な方法を持っていますか? pAnsiCharには文字列がたくさんありますが、それ以外のところで多く見つけることができます。Delphi 2009でPansiCharをPcharにキャストする方法がありますか

+0

'pChr = PChar(string(AnsiString(pAnsiChr)))'あなたが探しているのは? – Fr0sT

答えて

2

Delphi 2009にRawByteStringという新しい文字列型が追加されました。あなたはPAnsiStringとして入ってくるバイナリデータを保存する必要がある場合は、これを使用することができます

type 
    RawByteString = type AnsiString($ffff); 

:次のように定義されます。以前はAnsiStringを使った方法と同じようにRawByteStringを使用できるはずです。

ただし、推奨される長期的な解決方法は、プログラムをUnicodeに変換することです。

+0

RawByteStringには注意が必要です。他の文字列型と同様に、RawByteStringにはコードページが関連付けられており、Unicode文字列への/からの割り当て時にそのコードページが使用されます。唯一の違いは、RawByteStringは実行時にコードページを動的に変更できますが、他の文字列型は変更できないことです。 RawByteStringは、スタンドアロンの文字列型として使用するためのものではありません。元のAnsi文字データにどのコードページが使用されているかを気にしない関数パラメータでの主な(そして唯一推奨される)使い方。 –

+0

これはアップグレードプロジェクトであり、Windows(ANSI文字が予期して返される)と通信するコードで問題が発生します。 –

2

PAnsiCharをPCharに「キャスト」する方法はありません。 PCharはDelphi 2009のUnicodeです。Ansiのデータは単純にUnicodeにキャストすることはできず、その逆もありません。実際のデータ変換を実行する必要があります。いくつかのデータへのPAnsiCharポインタがあり、データをUnicode文字列に入れたい場合は、最初にPAnsiCharデータをAnsiStringに割り当て、必要に応じてAnsiStringをUnicode文字列に割り当てます。同様に、Unicode文字列をPAnsiCharに渡す必要がある場合は、最初にデータをAnsiStringに代入する必要があります。 Delphi 2009の移行に関する問題を抱えるEmbarcadero'sTeamB'sのブログサイトに関する記事があります。

+0

私は逃げ出していました。今私は変換を行うために私自身の関数ライブラリを持っています。 –

関連する問題