ورود

View Full Version : نحوه Copy/Paste شدن متن های فرمت دار



hakan648
یک شنبه 06 فروردین 1391, 10:05 صبح
سلام

حتما تا حالا متن فرمت داری از یک برنامه در یک محیط دیگه کپی کردید و دیدید که گاهی اوقات فرمت اولیه حفظ میشه در طی کپی کردن - اما زمانی که همین متن در NotePad کپی میشه , بدون فرمت هست .

مثلا یک تکه کد رو از نرم افزار Visual Studio کپی میکنیم در Yahoo Messenger و میبینیم که فرمت متن هم حفظ شده ولی وقتی کپی میکنیم در notepad , متن بصورت ساده کپی میشه .

حالا سوال من اینه , که مگه متنی که ما داخل حافظه سیستم کپی میکنیم , یک محتوای ثابت نیست ؟
پس چطور در بعضی اوقات بصورت متن فرمت دار ظاهر میشه و در بعضی اوقات بدون فرمت ؟

یعنی اگه متن , مثلا دارای تعریفی مثل رنگ , نوع فونت و ... هست , پس چرا وقتی در Notepad کپی میکنیم , این فرمت بندی قابل مشاهده نیست ؟

امیدوارم منظورم رو درست رسونده باشم .
با تشکر از دوستان عزیز ...

علیرضا حسن زاده
یک شنبه 06 فروردین 1391, 10:59 صبح
حالا سوال من اینه , که مگه متنی که ما داخل حافظه سیستم کپی میکنیم , یک محتوای ثابت نیست ؟
بله محتوای ثابتی هست شما می تونید از برنامه هایی که محتوای کلیپ بورد ویندوز رو نشون میده استفاده کنی و متن کپی شده رو ببینی (البته فرمت واقعی که کپی شده)

پس چطور در بعضی اوقات بصورت متن فرمت دار ظاهر میشه و در بعضی اوقات بدون فرمت ؟
فرمت های زیادی برای کلیپ بورد وجود داره و هر وقت شما متن یا عکس و ... رو تو کلیپ بود کپی میکنی برنامه منبع با فرمت مناسب خودش آبجکت رو تو حافظه میفرسته ولی وقتی تو برنامه مقصد می خوای از اون استفاده کنی برنامه مقصد اول نوع فرمت ابجکتی که تو حافظه هست رو کنترل میکنه و بر اساس همون عملکرد مناسب رو انجام میده مثلا شما اگه یه عکس رو کپی کنید نمی تونید تو Notepad همون رو Paste کنید یعنی با زدن Ctrl+V هیچ اتفاقی نمی افته ولی اگه تو Wordpad یا Word امتحان کنی عکس به صورت یه آبجکت نمایش داده میشه

Felony
یک شنبه 06 فروردین 1391, 11:11 صبح
فرمت کپی رو نرم افزار مبداء مشخص میکنه ، این فرمت میتونه یک فرمت استاندارد ویندوز باشه یا یک فرمت خاص که خود اون برنامه مبداء در ویندوز ثبت میکنه ، فرمت Paste شدن رو نرم افزار مقصد بررسی میکنه ، اگر فرمت استانداردی بود و براش قابل فهم بود بدون تغییر دریافتش میکنه در غیر اینصورت سعی میکنه اون رو به فرمت استانداردی تغییر بده و نمایش بده ، در آخر اگر نتونست فرمت رو بشناسه یا به فرمت استانداردی درش بیاره بیخیال میشه ...

Notepad فقط از Plain Text پشتیبانی میکنه ، پس متن های فرمت بندی شده رو نمیتونه نمایش بده و اگر متنی فرمت بندی شده باشه اون رو به Plain Text تغییر میده و نمایشش میده .

returnx
یک شنبه 06 فروردین 1391, 11:29 صبح
اصولا متن هایی که دارای قالب خاصی هستند از قالب rtf(Rich Text Format) استفاده می کنند مثلا متن Salam در این قالب با رنگ قرمز و سایز 11 و با فونت Calibriبه اینصورت نمایش داده میشه :

{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl {\f0\fnil\fcharset0 Calibri;}}
{\colortbl ;\red255\green0\blue0;}
{\*\generator Msftedit 5.41.21.2509;}\viewkind4\uc1\pard\sa200\sl276\slmu lt1\cf1\lang9\f0\fs22 salam\cf0\par
}
در واقع زمانی که شما کلمه ی salam رو کپی میکنی صرفا salam کپی نمیشه بلکه قالب بالا کپی میشه و در نرم افزار مقصد paste میشه ، در صورتی که نرم افزار مقصد این قالب رو پشتیبانی کنه با همون شکل اولیه salam را نمایش میده در غیر اینصورت یا کل قالب بالا را نمایش میده یا مثل Notpad به Plain Text تبدیل میکنه و بعد نمایش میده...

hakan648
یک شنبه 06 فروردین 1391, 11:45 صبح
خیلی ممنون از توضیحات شما بزرگواران !! ( نمیدونم چرا دکمه تشکر رو نمیبینم ؟؟ )

در مورد Object هایی مثل عکس و فایل متوجه عملکرد شدم .
اما در مورد متن , نه !

ممکنه در مورد متن های فرمت شده هم توضیحی بدید ؟

اینکه این فرمت به چه صورت اعمال میشه ؟ آیا ساختاری مثل فرمت دهی HTML داره ؟
یعنی مثلا برای نمایش دادن یک متن بصورت Bold , متن رو بین دو تگ b قرار میده ؟

اگه به این صورت فرمت دهی میکنه , اونوقت Paste در NotePad , باعث میشه که برنامه خودش فرمت دهی رو حذف کنه ؟
یا اینکه فرمت دهی به یک شکل دیگه اعمال میشه ؟

بازهم ممنون

eshpilen
یک شنبه 06 فروردین 1391, 15:51 عصر
اینکه این فرمت به چه صورت اعمال میشه ؟ آیا ساختاری مثل فرمت دهی HTML داره ؟
یعنی مثلا برای نمایش دادن یک متن بصورت Bold , متن رو بین دو تگ b قرار میده ؟بله HTML هم میتونه باشه.
در کلیپبورد میشه با فرمتهای مختلف ذخیره کرد (اگر در زمینهء برنامه نویسی دسکتاپ مطالعه داشته باشید بهش برخورد کردید).
مثلا MS Word ممکنه بیاد یک نسخهء Plain text و یک نسخهء HTML (و همچنین انواع دیگر مثل فرمت RTF و شاید فرمتهای اختصاصی خودش) از متنی رو که توی ورد کپی میکنید در کلیپبورد ذخیره کنه. اینا هرکدام بصورت یک آبجکت جداگانه ذخیره میشه که غیر از محتوا شامل اطلاعات مربوط به نوع داده های اون آبجکت هم میشه، و هر برنامه ای میتونه نوع هرکدام رو بخونه و اونی رو که میخواد دریافت کنه. فکر میکنم احتمالا نوع این آبجکت ها با استاندارد MIME مشخص میشه.
حالا اون نرم افزاری که توش فرمان Paste میدید میاد نوع آبجکت های موجود در کلیپبورد رو بررسی میکنه و اون انواعی رو که میشناسه و ساپورت میکنه انتخاب میکنه.
مثلا نوتپد میاد و نسخهء Plain text رو برمیداره چون نوتپد یک ادیتور ساده و قدیمی و بدون امکان فرمت متن است.