با سلام
دوستان عزیز ممکن است به من بگویید: چطور می شود فایل را با برنامه نویسی در VFP کپی کرد و آن صفحه که هر چی کپی می شه ،پر میشه (همان طور که توی خود ویندوز کپی میکنیم) را هم نمایش بده؟
با تشکر
Printable View
با سلام
دوستان عزیز ممکن است به من بگویید: چطور می شود فایل را با برنامه نویسی در VFP کپی کرد و آن صفحه که هر چی کپی می شه ،پر میشه (همان طور که توی خود ویندوز کپی میکنیم) را هم نمایش بده؟
با تشکر
میتوان فایل مورد نظر رو با fopen() بازکرده و بصورت مثلا 1کیلوبایت به 1 کیلوبایت فایل را read کرده و در مقصد مورد نظر write کرد و در این فرایند حالت روند کپی رو چه بصورت انیمیشن و یا تصویرهای ثابت نشون بدید .
البته در این روش بعضی از فایلها بعد از کپی اجرا نمیشن !! تا اونجایی که من تست کردم .
برای کپی کردن میتونید با fso یا همون file system object کار کنید. در مورد progressbar کدی ندارم که بهتون بدم ولی فکر نکنم خیلی سخت باشه
من روی این مسئله قبلا کار کرده بودم . اما نمی دونم چرا وقتی فایل جدید با همین توابع ایجاد شد خاصیتشو از دست داده بود . مثلا یه تصویر رو کپی کردم اما در فایل مقصد تصویر باز نمی شد .
من برای کپی یک فایل راهی پیدا نکردم (البته یکی از بچه ها گفته بود از توابع app ویندوز می شه) اما مثلا برای کپی چند فایل در برنامه هام (مثل پشتیبانگیری) اول حجم هر کدوم رو محاسبه مب کنم (adir) بعد میزان پیشرفت و نشون می دم .
حالا بازهم دوستان شاید نظرات دیگه داشته باشند
خواهشا دیگه شما نگید که ترجمه کنم چون 10 دقیقه طول کشید تا اینها رو جستجو کنم:
http://www.foxite.com/archives/how-t...0000079594.htm
اینم میتونه کمک کنه
http://www.foxite.com/archives/showi...0000080583.htm
با عرض سلام به همه !
برادر مهران عزیز شما و یا ان دوست گرامی بدون اینکه به فرمت فایل توجه کنید اقدام به ساختن یک فایل جدید کرده اید که این اشتباه است چون شا با دستورات سطح پایین فاکس مانند 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 کنم!
امیدوارم میسر باشد.
تکه کد بالا که error میده .من می خوام ببینم که مثلا یک فایل dbf که 5000 رکورد داره ظرف چند ثانیه تو فایل دیگه کپی میشه.
اگه لطف کنید اون تکه کدی که تشخصی میده چند ثانیه طول میکشه رو بزارید ممنون میشم چون هرکاری میکنم نمیشه مرسی
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
بفرما
امیدوارم کارت رو راه بیندازه .
چگونه می توان عکس هارا از درون برنامه اسکن کرد و نمایش داد و در فایل اطلاعاتی ذخیره کرد
در مورد اسکن شما نیاز به OCX مربوط به اسکنر مدل مورد استفاده رو دارید که معمولا در
درایورهای دستگاه هست . البته کامپوننتهای عمومی اسکنر ممکنه اسکنر شمارو ساپورت نکنه !!
البته بعضی از اسکنرهای حرفه ای و داکیومنت OCX باهاشون نیست !
در مورد نمایش و ذخیره هم دقیقتر بفرمایید که چی میخواید
ببخشید ولی من هرکاری میکنم مقدار رو صفر برمیگردونه من میخوام اطلاعات موجود یک dbfرو به dbf دیگر کپی کنم وببینم چند ثانیه اینکار طول می کشه خدائیش موندم توش:گیج:
بهتر نیست از دستورات scatter و append استفاده و با کمی کدنویسی در این بین نتیجه بگیرید!!
البته این یکی از روشهاست ! این کاری بسیار ساده است ولی روشهای دیگری هم هست !
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
چه طوری می تونم حجم فایل رو در Vb.net بدست بیارم :(
جواب سوالتون رو از بخش وی بی دات نت بپرسید