# پایگاه‌های داده > سایر پایگاه‌های داده > Foxpro >  برنامه پشتیبان گیری از اطلاعات

## پدرخوانده

می خواستم برنامه ایی جهت پشتیبان گیری از اطلاعات (جداول و...) بنویسیم 
با قابلیت های :
1 - تعیین مسیر ذخیره پشتیبان گیری 
می توان از listbox با قابلیت تنظیم files برای بخش rowsourcetype استفاده کرد ولی دارای مشکلی است که متاسفانه با کلیک تغییر مسیر می دهد (معمولا در برنامه های مشابه با دابل کلیک اینکار انجام می شود) و دیگر اینکه مسیر جاری برنامه را تغییر می دهد (یعنی به هنگام انتخاب مسیر , مسیر جاری به مسیر انتخاب شده تغییر پیدا می کند) و دیگر اینکه برای اینکه فایل ها را نمایش ندهد یک پسوند آننرمال را به عنوان rowsource وارد کنیم تا اینگونه باشد
حال به دنبال یا رفع اشکال موارد فوق در ابزار فوق هستم و یا اینکه نمونه کد یا ... برای اینکار (نمایش مسیرها (درایو و شاخه ها) با قابلیت انتخاب و عدم تغییر مسیر جاری)

2 - می خواهم اطلاعات را فشرده کنم 
برای این منظور مدیر محترم آقای حیدری کیا برنامه ای جهت این منظور در بخش قرار داده اند ولی متاسفانه نیازمند نصب برنامه winzip در سیستم می باشد 
حال به دنبال نصب ضمیمه ای (dll یا ocx یا ...) جهت نصب به هنگام نصب اصلی برنامه هستم که دیگر نیازی به نصب برنامه winzip (منظور به صورت کامل هست ) نباشد و بهتر از این , آنکه از توابع api (در ویندوز xp موجود هست) برای اینکار استفاده شود و یا از ocx دیگری که بصورت کپی کردن در کنار برنامه اصلی یا شاخه ویندوز قابل اجرا باشد.
(البته یک نمونه تو سایت universalthread پیدا کردم ولی متاسفانه فایل اجرایی است و مناسب نیست) 

3 - امکان رایت اطلاعات توسط رایتر
چگونه تشخیص دهیم که بر روی سیستم رایتر نصب است 
و دیگر اینکه چگونه اطلاعات را رایت کنیم 
(با معرفی دوست عزیز آقای حسینی (با اسم کاربر بی نیاز) موفق به پیدا کردن برنامه ای به این منظور شدم Data Burner ActiveX Control ولی متاسفانه ک شده نیست (دوستانی که ک آن را دارند ممنون می شم که بصورت پیام خصوصی آن را به بنده نیز بدهند) بدنبال ابزار رایگان یا ک برای اینکار هستم 
(البته لازم به ذکر است که کراک آن (حتی برای نسخه شماره یک و شماره یک آن را دانلود کردم) نیز پیدا کردم ولی باز هم مشکل دارد (در اصل برنامه هم مشکل دارد چرا که اصلا رایتر را نمی شناسد) 
البته راه حلی دیگری نیز دارد و آن اینکه از طریق خود ویندوز XP اینکار را انجام دهیم ولی حال چگونه مسیر موقت برای این کار را بدست آورم 
(البته مسیر موقت آن را دارم (با جستجو در همین سایت) ولی چگونه به ویندوز دستور دهم آن را رایت کند) 
(مسیر document and setting\username\local setting\application data\Microsoft\cdburning) 
و البته برخی نیز برنامه nero را معرفی کرده اند که در یکی از بحثها معرفی شده بود ولی نیاز به یکسری کتابخانه و فایل جهت runtime برای اجرا دارند که معرفی نشده اند)
و البته یکی از دوستان (علیرضا وافی) نیز برنامه رایتر را از سایت دیگری معرفی کردند و البته ....)
و همچنین بحثهای بسیار دیگری ولی متاسفانه هیچ کدام به جواب قطعی نرسید (و البته شاید رسید بنده نتونستم به اون جواب دست پیدا بکنم)  به هر ممنون میشم کسی دراین رابطه به جواب قاطع رسید ما را هم مطلع کند

با تشکر از دوستان

----------


## javad_hosseiny

1 - برای مورد اول می تونید از تابع getdir استفاده کنید که بسیار مناسب است برای این منظور

lcNewPath = getdir("", "Path Data", "Choice a Path For BackUp", 64)
 
2 - برای مورد دوم نیز می تونید از ابزارهای 
RSP GZip Compressor OCX  
(http://www.downloadjunction.com/prod...998/index.html)
http://www.downloadjunction.com/prod.../4/index2.html
و یا ابزار فشرده سازی *Chilkat Zip ActiveX*
http://www.chilkatsoft.com/downloads.asp
که راهنمایی و نحوه استفاده از آن در محیط ویژوال فاکس را نیز در آدرس زیر بدست آورید
http://www.example-code.com/foxpro/zip.asp
جهت کد ک نیز می تونید از سایت crackzplanet.com  استفاده کنید

والبته ابزارهای دیگری همچون xzip 
http://www.xstandard.com/page.asp?p=...0-2267ED6763A7
و... نیز هستند

  برای بدست آوردن مسیرهای خاص ویندوز نیز می تونید از طریق توابع api اینکار را انجام دهید 
رجوع شود به 
http://support.microsoft.com/default...b;en-us;194702

----------


## rezaTavak

سلام

من یک فرم دارم که مخصوص این کار است. در اولین فرصت جمع و جورش می کنم و ارسال می کنم.

----------


## rezaTavak

راستی راجع به رایت توی ویندوز نمی دونم چکار کنم. البته بهتر به کاربرتون بگید که خودش رایت کنه بهتره.

مگه حجم اطلاعاتون چقدره؟؟؟؟

----------


## پدرخوانده

با تشکر از دوستان
حجم اطلاعات متغیر است (از حدود 2 مگابایت تا 200 مگابایت)
می خواهم این امکان در قسمت پشتیبان گیری باشد که کاربر بتواند اطلاعات را رایت کند
من اطلاعات را در مسیر موردنظر جهت رایت در ویندوز xp کپی کرده ام 
حالا می خواهم بدانم چگونه می توانم به ویندوز xp دستور دهم که اطلاعات موجود در شاخه burn را رایت کند (فکر کنم یک فایل اجرایی یا یک کد api برای این منظور باشد)
و یا اینکه چگونه پنجره mycomputer را با توجه به نام درایو رایتر باز کنم که کاربر گزینه write these to cd را انتخاب کند (یعنی چطور نام درایو رایتر را پیدا کنم)
و دیگر اینکه چطور تشخیص دهیم روی سیستم رایتر هست (اکنون من از طریق تست وجود فولدر مربوطه document and setting\username\local setting\application data\Microsoft\cdburning اینکار را انجام میدهم )

----------


## alirezavafi

دوست عزیز برای رایت میتونی از اکتیو ایکس های data burner ( که با سمپل ویژوال فاکس پرو ش هست ) یا NTC Disk Maker استفاده کنی که هر دو تاش تو سایت www.softpedia.com هست. 
( تو قسمت programming --> component and libraries )

----------


## javad_hosseiny

برنامه ای ساده جهت پشتیبان گیری از اطلاعات شما 
با استفاده از فایل xzip.dll (البته دقت باید داشته باشید که dll باید در رجیستری ویندوز ثبت شود)
regsvr32 xzip.dll -s
(البته لینک های قبلی هم مناسب بودند ولی این یکی دیگه خیلی ساده است)

----------


## javad_hosseiny

اگر اصرار بر استفاده از قابلیت رایت خود ویندوز xp دارید این فایل dll می تونه کمک خوبی باشه
کافی است تا شیء با توجه به این dll ایجاد کنید
foo = CreateObject("BaydenBurn.XPBurn")
و سپس با استفاده از پارامترهای آن مسیر و نام درایو رایتر و آماده بودن آن را چک کنید
foo.Burnarea  تعیین مسیر موقت موجود در ویندوز جهت آماده سازی اطلاعات جهت رایت
foo.BurnerDrive تعیین نام درایو رایتر
foo.Equipped  آماده بودن رایتر
foo.AddFolder() انتقال فولدر به پوشه رایتر ویندوز
ffo.addfile() انتقال فایل به پوشه رایتر ویندوز
foo.BurnSize حجم اطلاعات آماده برای رایت
foo.LastError برگرداندن کد خطایی ایجاد شده جهت رایت (در صورت بروز خطا)
foo.StartBurn و نهایتا شروع عملیات رایت

----------


## shamim_41

> اگر اصرار بر استفاده از قابلیت رایت خود ویندوز xp دارید این فایل dll می تونه کمک خوبی باشه
> کافی است تا شیء با توجه به این dll ایجاد کنید
> foo = CreateObject("BaydenBurn.XPBurn")
> و سپس با استفاده از پارامترهای آن مسیر و نام درایو رایتر و آماده بودن آن را چک کنید
> foo.Burnarea تعیین مسیر موقت موجود در ویندوز جهت آماده سازی اطلاعات جهت رایت
> foo.BurnerDrive تعیین نام درایو رایتر
> foo.Equipped آماده بودن رایتر
> foo.AddFolder() انتقال فولدر به پوشه رایتر ویندوز
> ffo.addfile() انتقال فایل به پوشه رایتر ویندوز
> ...


سلام استاد یک سوال داشتم من از برنامه شما یک فرم(2) ساختم که اون فرم از داخل یک فرم اصلی(1) که دارای منو  هم هست اجرا می شه مشکل اینجاست که وقتی به تنهایی فرم(2) را اجرا می کنم عملیات رایت صورت می گیرد و هیچ مشکلی نیست ولی وقتی از فرم(1) فرم اول رو صدا میزنم هنگام رایت  *foo.StartBurn*    پنجره رایتر ویندوز میره زیر فرم اصلی فرم(1) مشکلم کجاست لطفا راهنمایی کنید. با تشکر

----------


## kia1349

اینم برنامه ای که من استفاده میکنم
البته باید winzip روی سیستم نصب باشه

----------


## shamim_41

سلام استاد 
این برنامه خیلی جالبه با اجازه تون ازش تو برنامه ام استفاده می کنم ولی مشکل من حل نشد من می خوام از اطلاعات روی سی دی کپی بگیرم و این کار رو با dll جناب آقای حسین زاده انجام دادم مشکل اینجاست که فرم رایت ویندوز(پنجره رایت) رو میبره زیر فرم اصلی نشون میده می خواستم ببینم که آیا پارامتری داره که بشه  فرم رو روی همه فرمها قرار بدیم مثل allways on top یا zorder یا با دستورات api با تشکر فراوان.

----------


## هادی-محمد

> اینم برنامه ای که من استفاده میکنم
> البته باید winzip روی سیستم نصب باشه


 با سلام 
با تشكر از شما من از برنامه شما استفاده كردم ولي با توجه به انتخاب مسير ها هيچ كاري انجام نشد برنامه اعلام مي كند كه عمليات پايان يافته ولي هيچ كاري صورت نمي گيرد ضمنا winzip در رايانه نصب است لطفا راهنمائي بفرمائيد.

----------

