PDA

View Full Version : نحوه کار با Buffer



AliReza Vafakhah
شنبه 11 دی 1389, 13:44 عصر
سلام دوستان

من همییشه تو مبحث بافرینگ و کار با بافر مشکل داشتم و هم اکنون هم دارم.

به عنوان مثال هنگامی که فضایی رو به یک بافر اختصاص میدهیم و بعد از آن داده ای را در آن میریزیم و در آخر خواند داده ها ،چگونه هست؟

و یا تو مبحث فایل ها که مقداری از فایل در بافر ریخته میشه و سپس از بافر در فایل و این کار تا زمانی انجام میشه تا فایل به طور کامل کپی بشه.

اگر میشه دوستان نحوه کار با بافر در مباحث گفته شده را ذکر کنید .با تشکر

tdkhakpur
یک شنبه 12 دی 1389, 00:57 صبح
عنوان مثال هنگامی که فضایی رو به یک بافر اختصاص میدهیم و بعد از آن داده ای را در آن میریزیم و در آخر خواند داده ها ،چگونه هست؟

این کار به نحوه کاربرد برنامه ای دارد که شما طراحی میکنید به فرض وقتی برنامه ای احتیاج به یک لینک لیست به عنوان ذخیره ساز رکورد در حافظه برای دسترسی موقت داشته باشد شما با یک ساختار از قبل مشخص شده داده ها را داخل فضایی از حافظه قرار میدید و این فضا آدرسی دارد که شما از این آدرس برای ارجاعات خودتان استفاده میکنید و به همین ترتیب به هنگام خواندن بابد همان نظمی را دنبال کنید که به هنگام قرار دادن داده ها انجام دادید.

و یا تو مبحث فایل ها که مقداری از فایل در بافر ریخته میشه و سپس از بافر در فایل و این کار تا زمانی انجام میشه تا فایل به طور کامل کپی بشه
شباهت این کار مثل تغییر محتوای دو متغییر هست یعنی شما از متغییر سوم برای این جابجایی استفاده میکنید و در مورد کپی دو فایل هم قضیه به این شکل هست دو فایل مانند متغییرها هستند و حافظه متغییر سوم به حساب می آید تا عمل جابجایی داده ها را بین دو فایل محقق کند.

AliReza Vafakhah
یک شنبه 12 دی 1389, 01:24 صبح
خیلی ممنون دوست عزیز tdkhakpur (http://barnamenevis.org/member.php?99732-tdkhakpur)
مشکل من اینجاست که سردرنمیارم چرا تو مباحث بافرینگ یه بار متغییر بافر از نوع TByte تعریف میشه و یا جایی دیگه از نوع PChar تعریف میشه و ... و یا اینکه چه طوری تخصیص حافظه به بافر انجام میشه؟مثل SetLength .

Felony
یک شنبه 12 دی 1389, 06:30 صبح
مشکل من اینجاست که سردرنمیارم چرا تو مباحث بافرینگ یه بار متغییر بافر از نوع TByte تعریف میشه و یا جایی دیگه از نوع PChar تعریف میشه و ... و یا اینکه چه طوری تخصیص حافظه به بافر انجام میشه؟مثل SetLength .
یه موقع هست شما میخواین اطلاعات خاصی رو که از قبل برای دلفی یا ... تعریف شده هست داخل بافر بریزید ( مثلا همون PChar ) ، اون وقت نوع داده ای معلوم هست و از نوع مربوطه استفاده میشه ، یه موقع هست نوع داده ای از پیش تعریف نشده هست یا براش نوع خاصی در نظر گرفته نشده ( مثل MP3 یا ... ) اون وقت باید بافر طوری پیاده سازی شده باشه که همه نیازها رو پاسخگو باشه ، در کل بافر چیز خاصی نیست ، قسمتی از حافظه هست که به عنوان میانجی برای برنامه عمل میکنه و شما به وسیله آدرس اون قسمت بهش دسترسی دارید و چون روی رم قرار داره به مراتب سرعت بالاتری نسبت به حافظه جانبی داره .

در مورد نحوه تخصیص حافظه هم بستگی به نحوه پیاده سازی خودتون داره ، عموما بافر یک متغییر یا آرایه هست گه در این موارد خود مدیر حافظه وظیفه تخصیص و آزاد سازی اون رو برعهده میگیره ، در موارد دیگر هم بسته به نوع پیاده سازی ممکنه مدیریت با خود دلفی باشه یا بر عهده شما .

AliReza Vafakhah
یک شنبه 12 دی 1389, 11:27 صبح
یه موقع هست شما میخواین اطلاعات خاصی رو که از قبل برای دلفی یا ... تعریف شده هست داخل بافر بریزید ( مثلا همون PChar ) ، اون وقت نوع داده ای معلوم هست و از نوع مربوطه استفاده میشه ، یه موقع هست نوع داده ای از پیش تعریف نشده هست یا براش نوع خاصی در نظر گرفته نشده ( مثل MP3 یا ... ) اون وقت باید بافر طوری پیاده سازی شده باشه که همه نیازها رو پاسخگو باشه ، در کل بافر چیز خاصی نیست ، قسمتی از حافظه هست که به عنوان میانجی برای برنامه عمل میکنه و شما به وسیله آدرس اون قسمت بهش دسترسی دارید و چون روی رم قرار داره به مراتب سرعت بالاتری نسبت به حافظه جانبی داره .


آقای تاجیک میشه یک مثال هم در مورد داده ها تعریف نشده (مثل همون Mp3) بزنید

Felony
یک شنبه 12 دی 1389, 14:26 عصر
http://barnamenevis.org/showthread.php?209792-%D8%B3%D9%88%D8%B1%D8%B3%D9%87%D8%A7%D9%8A-%D9%86%D9%85%D9%88%D9%86%D9%87-%D8%A2%D9%85%D9%88%D8%B2%D8%B4%D9%8A&p=1179989&viewfull=1#post1179989