Кодирование мемо-полей набора данных странных деталей в TClientDataSet
Добрый день всем!
Я использую TClientDataSet, связанный с набором данных master-detail. Сначала сохраните данные (для дальнейшего обмена данными)
cdsImpExp.SaveToFile (aFileName, dfXML);
В полученном файле мемо-поля записываются во внутренней кодировке (какая кодировка, кстати?): T_PATIENTS_MEMO="!?@02:0 4;O МБ>9 " - для основного набора данных
T_OBSERVATION_MEMO="!?@02:0 4;O МБ>9 " - для набора подробных данных
Сейчас делаю
cdsImpExp.LoadFromFile(aFileName);
и попробуйте обработать каждое поле. Я получаю очень странное поведение для содержимого мемо-полей. Сначала я попытался прочитать эти поля как:
FieldValue: = Field.AsString;
В блоке данных основного набора данных содержится правильная строка в нужной кодировке (win-1251). Подробно мемо-поле набора данных содержит ту же последовательность символов, что и во входном файле (!?@02:0 4;O МБ>9). Хорошо. Я пытаюсь это:
if Field.DataType = ftMemo then
begin
ms := TMemoryStream.Create;
TMemoField(Field).SaveToStream(ms);
ms.Position := 0;
SetString(FieldValue, PChar(ms.Memory), ms.Size);
И FieldValue содержит что-то вроде 'Справка㐠㬄 right этой㼠䀄㸄' (некоторые символы правильные, а некоторые символы в японской кодировке).
Что я делаю не так? Как я могу прочитать значения памятного поля из xml-файла для подробного набора данных? Спасибо за вашу помощь.
У меня Delphi XE Update 1.