ورود

View Full Version : مشکل حذف کارکترهای XML در ClientDataSet



iman_Delphi
یک شنبه 24 مهر 1390, 14:06 عصر
با سلام
من دارم با XMLTransformProvider و یک ClientDataSet به یک فایل XML متصل میشوم(فایل xtr را هم با xml Maper دلفی ساخته ام) - که در این فایل XML تعدادی فیلد وجود دارد. یک فیلد دارد از نوع BLOB که به حالت Base64 و استرینگی در آمده است (عکس رو به صورت Base64 در خود ذخیره کرده)که دیتاست آن را به صورت MEMO میشناسد. تا اینجای کار درست......

حالا زمانی که مثلا" فیلد CliendDataset.fieldByname('Image').asString رو می خوام در یک فایل متنی ذخیره کنم تعدادی از کارکترهای آن جا می افتد و اصلا" هیچ مقداری هم به جای آن قرار نمیگیرد و از حروف " < > استفاده میکند.(همان فیلد استرینگی Base64 که در بالا گفتم) (طول فیلد من هم حدود 22000 کارکتر است که مشکلی ندارد) طبیعتا" ریپلیس کردن مشکل را حل نمی کند .همچنین از UTF8 استفاده میکنم در فرمت فایل

نمونه هایی از این جا افتادن از قبیل زیر میباشد(بالایی جافتاده ها - پائینی اصلی) :


FIRST - pI7MKMAA94IHbc3KInQDPqEF8sAoAHXVZB7220kDQMgc9p9eyi UhdGF4Zhu
SECOND - q7VKDpI7MKMAA94IHbc3KInQDPqEF8sAoAHXVZB7220kDQMgc9 p9eyiUhdGF4Zhu

FIRST - J5g09PhQwGTLVCy0/A06TdUWdp9nuftLqm47ksCAggD/gUDgkFg0HhEJhULhk
SECOND - gciJ5g09PhQwGTLVCy0/A06TdUWdp9nuftLqm47ksCAggD/gUDgkFg0HhEJhULhk

FIRST - 7zAOA0KqieL1QOi0MoKpzPgKjytJMvoEsaxr5J8/auK8gsToE/cXIIjzXgqza
SECOND - gik7zAOA0KqieL1QOi0MoKpzPgKjytJMvoEsaxr5J8/auK8gsToE/cXIIjzXgqza

FIRST - 28oTk1gwaTOTrfI8lyfKcrHTv6KxyF6FqWx34uGObef9KyfVLx vK86evSkkKz
SECOND - lVA28oTk1gwaTOTrfI8lyfKcrHTv6KxyF6FqWx34uGObef9Kyf VLxvK86evSkkKz

FIRST - OygjzwQ3C6HzESBQ+BbutigjZoE+sOAI0T8xg8L+H/CcTx9H8gSDIUhyItD
SECOND - qAzyDOygjzwQ3C6HzESBQ+BbutigjZoE+sOAI0T8xg8L+H/CcTx9H8gSDIUhyItD

FIRST - xb5rUzoFjCRgpwaBuHdR2IHPp4bBHu88dx6zoCIA/4FA4JBYNB4RCYVC4ZDYd
SECOND - lEhxb5rUzoFjCRgpwaBuHdR2IHPp4bBHu88dx6zoCIA/4FA4JBYNB4RCYVC4ZDYd

vcldeveloper
دوشنبه 25 مهر 1390, 01:29 صبح
چه نسخه ایی از دلفی؟ می تونید یه نمونه پروژه آماده کامپایل کوچیک اینجا بذارید که بشه دیباگش کرد؟

iman_Delphi
دوشنبه 25 مهر 1390, 10:35 صبح
سلام
من از دلفی 2010 استفاده می کنم .
فایل ضمیمه نمونه سورس کامپایل شده است. همراه با فایل XML ,XTR
به دلیل محدودیت حجم; فایل EXE رو نتونستم بزارم - با عرض پوزش لطفا" کامپایل کنید دوست عزیز

76694

vcldeveloper
دوشنبه 25 مهر 1390, 14:31 عصر
بررسی کردم؛ کد مشکلی نداره و روی سیستم من با دلفی 2010 به درستی عمل میکنه. در ضمن، برای ذخیره در فایل نیازی نیست که از توابع قدیمی Turbo Pascal استفاده کنید. TMemoField خودش متد SaveToFile داره.

iman_Delphi
دوشنبه 25 مهر 1390, 16:09 عصر
بررسی کردم
متشکرم


روی سیستم من با دلفی 2010 به درستی عمل میکنه
من مجددا" همین پروژه رو تست کردم مهندس; اما مشکل همچنان وجود دارد . ببینید اگر همان فیلد Image رو با متد SaveToFile ذخیره نمائید و به فایل مربوطه مراجعه کنید با یک استرینگ طولانی مواجه میشوید. مثلا" برای رکورد اول این کا رو انجام بدید و فایل رو با برنامه نــــوتــــپـــــد باز کنید اگر به دنبال کارکتر " یا > یا < بگردید میبینید که در بعضی از قسمت های این استرینگ این کارکتر ها افتاده است که اگر به خود فایل XML مراجعه کنید این کارکترها نیستند.
البته روی سیستم من این خطا است و با چند تا دیگه از کامپیوتر های شرکت هم تست کردم که از نظر سیستم عامل با هم متفاوت بودند اما متائسفانه باز هم این مشکل همچنان پابرجا بود.

برای ذخیره در فایل نیازی نیست که از توابع قدیمی Turbo Pascal استفاده کنید. TMemoField خودش متد SaveToFile داره.
بله - ممنون

------------
احتمالش هست که مشکل مربوط به تنظیمات کامپایلر باشد ؟ - اگر هست چگونه میشود پیگیری کرد ؟