2012-04-19 2 views
3

Я создал приложение WCF, которое будет использоваться классом Delphi 7. AFAIK, C# string тип UTF16 и Delphi's 7 string тип Ansi.WCF и Delphi - Должен ли я использовать байты [] или строку?

Вопрос в том, что из-за типов строк C# и Delphi разные, следует ли объявить все мои функции с помощью bytes[] вместо string? У меня будут проблемы с использованием strings по моим методам?

+4

Delphi 7 также предлагает 'WideString', что эквивалентно типу Windows' BSTR'. –

+1

Возможно, импортер знает, что он делает. Работает ли ваша программа? Мой комментарий был в основном направлен на людей C#, которые будут отвечать на этот вопрос, чтобы напомнить им, что доступно в Delphi. –

+0

Да, до Delphi 2007 (я думаю) строка aliais была AnsiString, но Delphi (поскольку Delphi 2) имеет WideString для 16-битных символов, однако я не верю, что она указывает кодировку, используемую в WideString. –

ответ

1

Я думаю, вам нужно декальровать все WideString в Delphi.

Вы говорите, что сделали службы .NET WCF и там должны быть использованы клиентами Delphi 7, но являются ли клиенты также под вашим контролем? ваш вопрос, кажется, подразумевает, что это так. Я отвечаю, полагая, что это правда.

Даже если ваш [OperationContract] s на стороне .NET имеет параметры типа byte [], все серийные сериализаторы по умолчанию (SOAP, JASON и т. Д.) Будут использовать форматирование .NET XML, и это (AFAK) все UTF-16.

Таким образом, в то время как вы могли бы поместить свои параметры в явные массивы байтов, полезными данными сообщения будут все UTF-16 XML.

Смежные вопросы