私はDelphi 7クラスで使用されるWCFアプリケーションを作成しました。 AFAIK、C#string
タイプはUTF16
であり、Delphi's 7 string
タイプはAnsi
です。WCFとDelphi - バイト[]または文字列を使用する必要がありますか?
質問:C#とDelphiの文字列型が異なるため、string
ではなくbytes[]
ですべての関数を宣言する必要がありますか?自分のメソッドにstrings
を使用して問題が発生するのでしょうか?
私はDelphi 7クラスで使用されるWCFアプリケーションを作成しました。 AFAIK、C#string
タイプはUTF16
であり、Delphi's 7 string
タイプはAnsi
です。WCFとDelphi - バイト[]または文字列を使用する必要がありますか?
質問:C#とDelphiの文字列型が異なるため、string
ではなくbytes[]
ですべての関数を宣言する必要がありますか?自分のメソッドにstrings
を使用して問題が発生するのでしょうか?
私はあなたがDelphiのすべてのWideStringをデカル化する必要があると思います。
あなたは.NET WCFサービスを作成し、Delphi 7クライアントで消費されると言いますが、クライアントもあなたの管理下にありますか?あなたの質問はそうであることを暗示しているようです。私はそれが真実であると仮定して答えます。
.NET側の[OperationContract]にbyte []型のパラメータがあっても、すべての既定の契約ワイヤシリアライザ(SOAP、JASONなど)は.NET XML形式を使用しますが、 AFAK)はすべてUTF-16です。
したがって、パラメータを明示的なバイト配列に入れることができますが、メッセージペイロードはすべてUTF-16 XMLになります。
Delphi 7ではWindowsの 'BSTR'型に相当する' WideString'も提供しています。 –
おそらく、輸入業者はそれが何をしているのかを知っているでしょう。あなたのプログラムは機能しますか?私のコメントは主に、Delphiで利用できるものを思い出させるために、この質問に答えるC#の人たちを対象としていました。 –
はい、Delphi 2007まで(私は)Aliais文字列はAnsiStringでしたが、Delphi(Delphi 2以降)では16ビット文字用のWideStringを持っていますが、WideStringで使用されているエンコーディングを指定しているとは思われません。 –