نمایش نتایج 1 تا 5 از 5

نام تاپیک: مشکل حذف کارکترهای XML در ClientDataSet

  1. #1
    کاربر تازه وارد آواتار iman_Delphi
    تاریخ عضویت
    اسفند 1388
    محل زندگی
    زیر پوست شهر
    پست
    89

    مشکل حذف کارکترهای XML در ClientDataSet

    با سلام
    من دارم با 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


  2. #2

    نقل قول: مشکل حذف کارکترهای XML در ClientDataSet

    چه نسخه ایی از دلفی؟ می تونید یه نمونه پروژه آماده کامپایل کوچیک اینجا بذارید که بشه دیباگش کرد؟


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

  3. #3
    کاربر تازه وارد آواتار iman_Delphi
    تاریخ عضویت
    اسفند 1388
    محل زندگی
    زیر پوست شهر
    پست
    89

    نقل قول: مشکل حذف کارکترهای XML در ClientDataSet

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

    XML_Sample.rar

  4. #4

    نقل قول: مشکل حذف کارکترهای XML در ClientDataSet

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


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

  5. #5
    کاربر تازه وارد آواتار iman_Delphi
    تاریخ عضویت
    اسفند 1388
    محل زندگی
    زیر پوست شهر
    پست
    89

    نقل قول: مشکل حذف کارکترهای XML در ClientDataSet

    بررسی کردم
    متشکرم

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

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

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •