Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2013.06.02;
Скачать: [xml.tar.bz2];

Вниз

Формат пакета TClientDataSet D7 и XE2   Найти похожие ветки 

 
Медвежонок Пятачок ©   (2013-01-28 20:49) [0]

Ищется элегантный временный костыль.
Реанимируется самопальная трехзвенка десятилетней давности, в которой используется TClientdataset. (D7 -> XE2)
Первым этапом мигрирует апп-сервер, обеспечивая поддержку древних клиентов (их сто триллионов тысяч).

Суть проблемы:
Длинное имя поля клиент-датасета (длиннее чем 16 символов) в семерке:

<DATAPACKET Version="2.0">
<METADATA>
<FIELDS>
 <FIELD fieldname="очень длинное имя поля датасета" attrname="очень_длинное_имя_поля_датасета" fieldtype="string" WIDTH="50"/>
</FIELDS>

Оно же в XE2
<DATAPACKET Version="2.0">
<METADATA>
 <FIELDS>
  <FIELD fieldname="" attrname="очень_длинное_им&#65533;" fieldtype="string" WIDTH="50">
   <PARAM Name="FIELDNAME" Value="очень длинное имя поля датасета" Roundtrip="True"/>
  </FIELD>
 </FIELDS>

Как видно филднейм пустой, аттрнейм обрезан до 16 символов, в конце встален символ нечитаемый парсерами, а нормальное имя переехало в чайлд узел.
Та же картина и в узлах с данными.
Семерочный клиентдатасет такого пакета не понимает.

Засада в том, что добавленный гадский символ не дает мне открыть пакет как xml и пофиксить его перед отправкой старому клиенту.
Вот.

Временно решено с помощью DLL собранной на семерке, которую юзает аппсервер.


 
DVM ©   (2013-01-28 23:04) [1]


> Медвежонок Пятачок ©   (28.01.13 20:49) 


> Как видно филднейм пустой, аттрнейм обрезан до 16 символов,
>  в конце встален символ нечитаемый парсерами

Какие парсеры пробовал, кроме msxml?


 
sniknik ©   (2013-01-29 07:57) [2]

это TClientdataset так коверкает данные? замени его на TAdoDataset. функциональности в основном хватает (чего нет, мне встретилось, так это возможности отобрать/фильтровать измененные данные. остальное вроде присутствует).


 
sniknik ©   (2013-01-29 08:11) [3]

> не дает мне открыть пакет как xml и пофиксить его перед отправкой старому клиенту.
а ты открывай как текст...

и с TAdoDataset тоже придется подгонять формат xml под старого клиента, т.к. отличается, но вот такого как описано не будет. он работает одинаково (т.к. не зависит) на любой версии дельфи.


 
Медвежонок Пятачок ©   (2013-01-29 08:55) [4]

Заменить клиент датасет не проблема. Но надо чтобы старые клиенты остались рабочими.
Парсер думаю любой обломается, так так там символ BCD1 все остальное - честный utf-8.
В общем пока остановился на двух вариантах.
Сохранить, убрать символ, загрузить в дом, исправить имена.
Или семерочная длл.


 
sniknik ©   (2013-01-29 10:07) [5]

> Но надо чтобы старые клиенты остались рабочими.
предполагал, что ты подсунешь им xml старого формата... просто для начала вместо -
> Сохранить, убрать символ, загрузить в дом, исправить имена.
будет на шаг меньше, типа с - загрузить в дом, подкорректировать структуру под старое.

хотя сейчас думаю текстом было бы проще символ "выкусить", без сохранения, одним stringreplace. т.к. структуры ADO и Client сильно отличаются.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2013.06.02;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.003 c
15-1358949798
Вопрошающий
2013-01-23 18:03
2013.06.02
полный Language Reference для FB2.5 - где?


15-1359384923
Error0xDEADBEEF
2013-01-28 18:55
2013.06.02
Пересесть с Delphi на Java/Android


15-1358945710
{ dmitry }
2013-01-23 16:55
2013.06.02
защитить приложение от клонов


15-1359173042
Студент
2013-01-26 08:04
2013.06.02
Сломался USB-Разъём.


15-1359033022
картман
2013-01-24 17:10
2013.06.02
отопление





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский