2012-04-19 6 views
3

私はDelphi 7クラスで使用されるWCFアプリケーションを作成しました。 AFAIK、C#stringタイプはUTF16であり、Delphi's 7 stringタイプはAnsiです。WCFとDelphi - バイト[]または文字列を使用する必要がありますか?

質問:C#とDelphiの文字列型が異なるため、stringではなくbytes[]ですべての関数を宣言する必要がありますか?自分のメソッドにstringsを使用して問題が発生するのでしょうか?

+4

Delphi 7ではWindowsの 'BSTR'型に相当する' WideString'も提供しています。 –

+1

おそらく、輸入業者はそれが何をしているのかを知っているでしょう。あなたのプログラムは機能しますか?私のコメントは主に、Delphiで利用できるものを思い出させるために、この質問に答えるC#の人たちを対象としていました。 –

+0

はい、Delphi 2007まで(私は)Aliais文字列はAnsiStringでしたが、Delphi(Delphi 2以降)では16ビット文字用のWideStringを持っていますが、WideStringで使用されているエンコーディングを指定しているとは思われません。 –

答えて

1

私はあなたがDelphiのすべてのWideStringをデカル化する必要があると思います。

あなたは.NET WCFサービスを作成し、Delphi 7クライアントで消費されると言いますが、クライアントもあなたの管理下にありますか?あなたの質問はそうであることを暗示しているようです。私はそれが真実であると仮定して答えます。

.NET側の[OperationContract]にbyte []型のパラメータがあっても、すべての既定の契約ワイヤシリアライザ(SOAP、JASONなど)は.NET XML形式を使用しますが、 AFAK)はすべてUTF-16です。

したがって、パラメータを明示的なバイト配列に入れることができますが、メッセージペイロードはすべてUTF-16 XMLになります。

関連する問題