View Full Version : کپی فایل با نمایش مقدار پیشرفت
Esikhoob
دوشنبه 28 خرداد 1386, 21:08 عصر
با سلام
دوستان عزیز ممکن است به من بگویید: چطور می شود فایل را با برنامه نویسی در VFP کپی کرد و آن صفحه که هر چی کپی می شه ،پر میشه (همان طور که توی خود ویندوز کپی میکنیم) را هم نمایش بده؟
با تشکر
ali51prog
سه شنبه 29 خرداد 1386, 07:40 صبح
میتوان فایل مورد نظر رو با fopen() بازکرده و بصورت مثلا 1کیلوبایت به 1 کیلوبایت فایل را read کرده و در مقصد مورد نظر write کرد و در این فرایند حالت روند کپی رو چه بصورت انیمیشن و یا تصویرهای ثابت نشون بدید .
البته در این روش بعضی از فایلها بعد از کپی اجرا نمیشن !! تا اونجایی که من تست کردم .
kia1349
سه شنبه 29 خرداد 1386, 08:00 صبح
برای کپی کردن میتونید با fso یا همون file system object کار کنید. در مورد progressbar کدی ندارم که بهتون بدم ولی فکر نکنم خیلی سخت باشه
mehran_337
سه شنبه 29 خرداد 1386, 09:49 صبح
میتوان فایل مورد نظر رو با fopen() بازکرده و بصورت مثلا 1کیلوبایت به 1 کیلوبایت فایل را read کرده و در مقصد مورد نظر write کرد و در این فرایند حالت روند کپی رو چه بصورت انیمیشن و یا تصویرهای ثابت نشون بدید .
البته در این روش بعضی از فایلها بعد از کپی اجرا نمیشن !! تا اونجایی که من تست کردم .
من روی این مسئله قبلا کار کرده بودم . اما نمی دونم چرا وقتی فایل جدید با همین توابع ایجاد شد خاصیتشو از دست داده بود . مثلا یه تصویر رو کپی کردم اما در فایل مقصد تصویر باز نمی شد .
من برای کپی یک فایل راهی پیدا نکردم (البته یکی از بچه ها گفته بود از توابع app ویندوز می شه) اما مثلا برای کپی چند فایل در برنامه هام (مثل پشتیبانگیری) اول حجم هر کدوم رو محاسبه مب کنم (adir) بعد میزان پیشرفت و نشون می دم .
حالا بازهم دوستان شاید نظرات دیگه داشته باشند
binyaz2003
سه شنبه 29 خرداد 1386, 12:17 عصر
خواهشا دیگه شما نگید که ترجمه کنم چون 10 دقیقه طول کشید تا اینها رو جستجو کنم:
http://www.foxite.com/archives/how-to-know-how-many-byte-had-been-copy-into-computer-0000079594.htm
اینم میتونه کمک کنه
http://www.foxite.com/archives/showing-process-progress-0000080583.htm
farhad_shiri_ex
سه شنبه 29 خرداد 1386, 19:08 عصر
من روی این مسئله قبلا کار کرده بودم . اما نمی دونم چرا وقتی فایل جدید با همین توابع ایجاد شد خاصیتشو از دست داده بود . مثلا یه تصویر رو کپی کردم اما در فایل مقصد تصویر باز نمی شد .
من برای کپی یک فایل راهی پیدا نکردم (البته یکی از بچه ها گفته بود از توابع app ویندوز می شه) اما مثلا برای کپی چند فایل در برنامه هام (مثل پشتیبانگیری) اول حجم هر کدوم رو محاسبه مب کنم (adir) بعد میزان پیشرفت و نشون می دم .
حالا بازهم دوستان شاید نظرات دیگه داشته باشند
با عرض سلام به همه !
برادر مهران عزیز شما و یا ان دوست گرامی بدون اینکه به فرمت فایل توجه کنید اقدام به ساختن یک فایل جدید کرده اید که این اشتباه است چون شا با دستورات سطح پایین فاکس مانند FOPEN,Fcreat,Fseek می توانید یک فایل را باز کنید اما نوشتن در یک فایل مثلا EXEC,COM بدین صورت است که شما باید آدرس بارگذاری در حافظه در پشته های حافظه(SEGMENT,OFFSET) را نیز در نظر بگیرید و همچنین برای فایل های با فرمت JPG نیز باید HEADER FILE مورد نظر را تنظیم نمایید. البته مقوله کپی از یک فایل کاملا با این بحث متفاوت می باشد چون در این جا شما یک کپی از استراکچر فایل SOURCE خوانده و دقیقا با همان آدرسهای حافضه ای به جای دیگری انتقال می دهید.
در مورد کپی یک فایل هم می توانید از تابع CopyFile در kernel32 استفاده نمایید.
در مورد PROGRESS BAR هم یک کلاس خیلی با حال هم هستش که با WIn32API کا میکنه هم معمولی اش هست و هم ترمومترش هست فقط کافی توبرنامه مثل کد زیر صداش کنی!
LOCAL loTherm, lcTask, lnPercent, lnSeconds
loTherm = NewObject("_thermometer",HOME()+"ffc\_therm","",'')
lcTask =''
WITH loTherm
.Show()
FOR i = 1 TO THIS.Parent.spnDuration.Value
lnPercent = m.i/
THIS.Parent.spnDuration.Value*100
.Update(lnPercent, lcTask+" "+TRANS(lnPercent))
lnSeconds = SECONDS()
DO WHILE
lnSeconds+1>SECONDS()
ENDDO
ENDFOR
.Complete()
ENDWITH
ببخشید دیگه چپ و راست دیگه وقت نشد SCRIPT کنم!
امیدوارم میسر باشد.
rahro
چهارشنبه 30 خرداد 1386, 07:45 صبح
با عرض سلام به همه !
برادر مهران عزیز شما و یا ان دوست گرامی بدون اینکه به فرمت فایل توجه کنید اقدام به ساختن یک فایل جدید کرده اید که این اشتباه است چون شا با دستورات سطح پایین فاکس مانند FOPEN,Fcreat,Fseek می توانید یک فایل را باز کنید اما نوشتن در یک فایل مثلا EXEC,COM بدین صورت است که شما باید آدرس بارگذاری در حافظه در پشته های حافظه(SEGMENT,OFFSET) را نیز در نظر بگیرید و همچنین برای فایل های با فرمت JPG نیز باید HEADER FILE مورد نظر را تنظیم نمایید. البته مقوله کپی از یک فایل کاملا با این بحث متفاوت می باشد چون در این جا شما یک کپی از استراکچر فایل SOURCE خوانده و دقیقا با همان آدرسهای حافضه ای به جای دیگری انتقال می دهید.
در مورد کپی یک فایل هم می توانید از تابع CopyFile در kernel32 استفاده نمایید.
در مورد PROGRESS BAR هم یک کلاس خیلی با حال هم هستش که با WIn32API کا میکنه هم معمولی اش هست و هم ترمومترش هست فقط کافی توبرنامه مثل کد زیر صداش کنی!
LOCAL loTherm, lcTask, lnPercent, lnSeconds
loTherm = NewObject("_thermometer",HOME()+"ffc\_therm","",'')
lcTask =''
WITH loTherm
.Show()
FOR i = 1 TO THIS.Parent.spnDuration.Value
lnPercent = m.i/
THIS.Parent.spnDuration.Value*100
.Update(lnPercent, lcTask+" "+TRANS(lnPercent))
lnSeconds = SECONDS()
DO WHILE
lnSeconds+1>SECONDS()
ENDDO
ENDFOR
.Complete()
ENDWITH
ببخشید دیگه چپ و راست دیگه وقت نشد SCRIPT کنم!
امیدوارم میسر باشد.
سلام
شیری جان : ما که تو احوالات شما ماندیم , گاهی اوقات از یک دوازه رد نمیشی و گاهی از یک سوراخ سوزن رد میشی :متفکر: :چشمک: :لبخند:
از لطفتون متشکریم .
ashkan_gorg
چهارشنبه 30 خرداد 1386, 13:09 عصر
تکه کد بالا که error میده .من می خوام ببینم که مثلا یک فایل dbf که 5000 رکورد داره ظرف چند ثانیه تو فایل دیگه کپی میشه.
rahro
چهارشنبه 30 خرداد 1386, 13:32 عصر
تکه کد بالا که error میده .من می خوام ببینم که مثلا یک فایل dbf که 5000 رکورد داره ظرف چند ثانیه تو فایل دیگه کپی میشه.
اصلا چه لزومیه شما از توابع سطح پائین استفاده کنید با فرمان append from و یا رهکارهای ابتکاریه دیگه این کار رو بکنید که با اندکی حوصله میتونید براش نوار پردازش و حتی مدت زمان انجام کار رو بزنید من اینکار رو کردم خیلی راحتر از توابع سطح پائینه.!
ashkan_gorg
چهارشنبه 30 خرداد 1386, 13:49 عصر
اگه لطف کنید اون تکه کدی که تشخصی میده چند ثانیه طول میکشه رو بزارید ممنون میشم چون هرکاری میکنم نمیشه مرسی
rahro
پنج شنبه 31 خرداد 1386, 06:32 صبح
اگه لطف کنید اون تکه کدی که تشخصی میده چند ثانیه طول میکشه رو بزارید ممنون میشم چون هرکاری میکنم نمیشه مرسی
lenx_ = 500
stime = SECONDS()
currecjar = 1
IF INT(currecjar / say_t2) =currecjar / say_t2
etime = SECONDS()
timeekh = etime - stime
tsep = INT(timeekh)
tbag = INT((endx_ -currecjar) *timeekh /currecjar)
th1 = INT(tsep / 3600)
tmx = (tsep - (th1/3600))
tm1 = INT(tmx / 60)
ts1 = INT(tmx - (tm1 * 60))
th2 = INT(tbag / 3600)
tmx = (tbag - (th2 * 3600))
tm2 = INT(tmx / 60)
ts2 = INT(tmx - (tm2 * 60))
thisformset.pardazesh.z_s_sh.Caption=STR(th1,2) +":" +STR(tm1,2) +":" +STR(ts1,2)
thisformset.pardazesh.z_b_m.Caption= STR(th2,2) +":" +STR(tm2,2) +":" +STR(ts2,2)
ENDIF
بفرما
امیدوارم کارت رو راه بیندازه .
omidfox
شنبه 02 تیر 1386, 19:24 عصر
چگونه می توان عکس هارا از درون برنامه اسکن کرد و نمایش داد و در فایل اطلاعاتی ذخیره کرد
وصال1386
شنبه 02 تیر 1386, 22:21 عصر
در مورد اسکن شما نیاز به OCX مربوط به اسکنر مدل مورد استفاده رو دارید که معمولا در
درایورهای دستگاه هست . البته کامپوننتهای عمومی اسکنر ممکنه اسکنر شمارو ساپورت نکنه !!
البته بعضی از اسکنرهای حرفه ای و داکیومنت OCX باهاشون نیست !
در مورد نمایش و ذخیره هم دقیقتر بفرمایید که چی میخواید
ashkan_gorg
یک شنبه 03 تیر 1386, 12:31 عصر
ببخشید ولی من هرکاری میکنم مقدار رو صفر برمیگردونه من میخوام اطلاعات موجود یک dbfرو به dbf دیگر کپی کنم وببینم چند ثانیه اینکار طول می کشه خدائیش موندم توش:گیج:
وصال1386
یک شنبه 03 تیر 1386, 16:38 عصر
بهتر نیست از دستورات scatter و append استفاده و با کمی کدنویسی در این بین نتیجه بگیرید!!
farhad_shiri_ex
یک شنبه 03 تیر 1386, 18:58 عصر
ببخشید ولی من هرکاری میکنم مقدار رو صفر برمیگردونه من میخوام اطلاعات موجود یک dbfرو به dbf دیگر کپی کنم وببینم چند ثانیه اینکار طول می کشه خدائیش موندم توش:گیج:
البته این یکی از روشهاست ! این کاری بسیار ساده است ولی روشهای دیگری هم هست !
SELECT test
GO TOP
SELECT paitent
GO TOP
SaveSec=SECONDS( )
DO WHILE !EOF()
SELECT paitent
SCATTER MEMO MEMVAR
SELECT test
APPEND BLANK
GATHER MEMVAR MEMO
SKIP
SELECT paitent
SKIP
ENDDO
SaveSec=SECONDS()-Savesec
?SaveSec
steghlalt
سه شنبه 19 تیر 1386, 08:40 صبح
چه طوری می تونم حجم فایل رو در Vb.net بدست بیارم :(
kia1349
سه شنبه 19 تیر 1386, 10:47 صبح
جواب سوالتون رو از بخش وی بی دات نت بپرسید
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.