ورود

View Full Version : تبدیل یک پروژه از داس به ویندوز (Fox To Visual)



blacky
پنج شنبه 29 آذر 1386, 12:29 عصر
سلام

من یه پروژه دارم توی فاکس هست حالا میخوام بیارمش توی ویژوال همشو ایمپورت کردم دیتا بیسهام رو هم بوسیله این کانورت کردم
*
ÈÑäÇãå ÊÈÏíá ÝÇíáåÇí ÝÇßÓ æÇÑÇÏÇßÓ ÇÒ ãÍíØ ÏÇÓ Èå ãÍíØ æíäÏæÒ
CLEAR
SET TALK OFF
ON ERROR wait window nowait MESSAGE()
do while .t.
_INPUT = GETFILE('DBF;DB','')
IF EMPTY(_INPUT)
exit
ENDIF
type_ = MESSAGEBOX(' ÂíÇ ÇØáÇÚÇÊ ãæÑÏäÙÑ ÔãÇ ÇÒ äæÚ ßÏí ÇíÑÇä ÓíÓÊã ãí ÈÇÔÏ ¿'+CHR(13)+ 'Yes: ÇíÑÇä ÓíÓÊã , No: ÓÇíå, Cancel: ÇäÕÑÇÝ',3+32,'ÊÚííä äæÚ ÌÏæá')
IF type_= 2
WAIT WINDOW NOWAIT 'ÕÑÝäÙÑ ÔÏ'
RETURN
ENDIF
_EXT = EXT_FILE(_INPUT)
IF (_EXT == 'DB' )
IMPORT FROM &_input TYPE PDOX
_output = dbf()
ELSE
use &_input
_output = strt(UPPER(DBF()),'.DBF','.OLD')
COPY TO &_output
ENDIF
IF !USED()
ok2 = MESSAGEBOX('ÓíÓÊã ÞÇÏÑ Èå ÈÇÒßÑÏä ÝÇíá ãÈÏÇ ÌåÊ ÊÈÏíá äãí ÈÇÔÏ',0+16,'ÇÎØÇÑ')
RETURN
ENDIF
VAR1 = 'REPLACE '
FOR IZ = 1 TO FCOUNT()
IF INLIST(TYPE(FIELD[IZ]),'M','C')
IF type_=6
VAR1 = VAR1 + FIELD(IZ) + ' WITH prs2win(' + FIELD(IZ) + '),'
ELSE
VAR1 = VAR1 + FIELD(IZ) + ' WITH prs2win(fsis(SA2PR(' + FIELD(IZ) + '))),'
ENDIF
ENDIF
ENDFOR
IF RIGHT(VAR1,1)=','
VAR1 = STUFF(VAR1, LEN(VAR1),1,' ALL ')
ENDIF
*? VAR1
*? LEN(VAR1)
*susp
wait window nowait 'ÓíÓÊã ÏÑ ÍÇá ÇäÊÞÇá ÇØáÇÚÇÊ áØÝÇ ÈÑÇí áÍÙÇÊí ÕÈÑ ßäíÏ'
&VAR1
wait window nowait 'ÚãáíÇÊ ÇäÊÞÇá ÈÇ ãæÝÞíÊ ÇäÌÇã ÔÏ'
OK_=MESSAGEBOX('ÂíÇ ãÇíá Èå ÏíÏä ÇØáÇÚÇÊ ÊÈÏíá ÔÏå åÓÊíÏ¿ ',4+32,'ÓæÇá')
IF OK_=6
BROWSE FONT 'tahoma'
ENDIF
OK_=MESSAGEBOX('ÂíÇ ãÇíá Èå ÑÝÊä ÎÑæÌí ÇÒ ÇØáÇÚÇÊ ÊÈÏíá ÔÏå åÓÊíÏ¿ ',4+32,'ÓæÇá')
IF OK_= 6
TXT_FILE = STRT(UPPER(DBF()),'.DBF','.TXT')
COPY TO &TXT_FILE DELIMITED
OK_=MESSAGEBOX(' ÇäÌÇã ÚãáíÇÊ ÎÑæÌí ÈÇ ãæÝÞíÊ ÇäÌÇã ÔÏ' + CHR(13) + 'ÔãÇ ÞÇÏÑ Èå ÎæÇäÏä ÝÇíá ÊßÓÊ ãæÑÏäÙÑ ÑÇ ÏÑ åÑ ãÍíØí (ÇßÓá¡ ÇßÓÓ¡ ...) ÈÎæÇäíÏ',0+64,'ÇÚáÇã')
ENDIF
enddo
*---------------------------
FUNCTION prs2win
PARAMETER TMP_NEW
*-ÈÑÇí ÇÚÏÇÏ ÞÇÈá ÇÓÊÝÇÏå ãí ÈÇÔÏ
IF VAL(tmp_new)<>0
tmp_new2 = CHRTRAN(tmp_new,' /','')
IF LEN(tmp_new2) = num_add(VAL(tmp_new2))
RETURN tmp_new
ENDIF
ENDIF
ramz1 = '0123456789¡Ü¿ÂÆÁÇÇÈȁÊÊËËÌ̍ ÍÍÎÎÏÐÑÒŽÓÓÔÔÕÕÖÖØÄÉÙÚÚÚ ÛÛÛÛÝÝÞÞßߐá$áããääæåååíí í'
ramz2 = '€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’ ”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯¾Æàáâãäåæç éêëìíîïðñòóôõö÷øùúûüýþÿ'
ST3 = "üýôá§©öí’žšñé–ùï« ù”ë­œåâæ˜Æ"
FOR ZZZ = 1 TO LEN(ST3)
TMP_NEW = STRT(TMP_NEW, SUBSTR(ST3,ZZZ,1), ' ' + SUBSTR(ST3,ZZZ,1))
ENDFOR
*SET STEP ON
IF ASC(RIGHT(ALLT(TMP_NEW),1)) = 255
TMP_NEW = TMP_NEW + '‹' &&'Œ'
ENDIF
ADAD = ''
FOR ZZZ = 1 TO LEN(TMP_NEW)
HARF = SUBSTR(TMP_NEW,ZZZ,1)
IF INLIST(HARF, '€', '', '‚', 'ƒ', '„', '…', '†', '‡', 'ˆ', '‰' , '0', '1', '2', '3', '4', '5', '6', '7', '8', '9')
ADAD = HARF + ADAD
ELSE
IF !EMPTY(ADAD)
SH = LEN(ADAD)
IF SH > 1
TMP_NEW = STUFF(TMP_NEW, ZZZ - SH, SH, ADAD)
ENDIF
ADAD = ''
ENDIF
ENDIF
ENDFOR
AD = .F.
IF !EMPTY(ADAD)
*SET STEP ON
SH = LEN(ADAD)
*TMP_NEW = STUFF(TMP_NEW, ZZZ - SH, SH, '(' + ADAD+' )')
TMP_NEW = STUFF(TMP_NEW, ZZZ - SH, SH, ADAD)
AD = .T.
ENDIF
DO WHILE (' ' $ TMP_NEW)
TMP_NEW = STRT(TMP_NEW, ' ', ' ')
ENDDO
tmp_new = Chrtran(tmp_new, ramz2, ramz1)
TMP_NEW = STRT(TMP_NEW,'$','Çá')
TMP_NEW = Chrtran(TMP_NEW, ')(][', '&@#$')
TMP_NEW = Chrtran(TMP_NEW, '@&$#', ')(][')
IF INLIST(LEFT(ALLT(TMP_NEW),1), ')', '"', '!', '.')
MAL = LEN(TMP_NEW) - LEN(ALLT(TMP_NEW))
TMP_NEW = STUFF(TMP_NEW, MAL, IIF(MAL=0,0,1),'0')
* TMP_NEW = STRTran(TMP_NEW, ')', '0)')
ENDIF
*set step on
TMP1 = fsis(TMP_NEW)
TMP2 = ''
OLD = 0
OK_ = .T.
DO WHILE OK_
A1 = AT(' ', TMP1)
IF A1 = 0
OK_ = .F.
A1 = LEN(TMP1)
ENDIF
WORD_ = ''
IF A1#OLD
WORD_ = SUBSTR(TMP1,OLD+1, A1-OLD)
ENDIF
TMP1 = STUFF(TMP1,A1, 1,'$')
* SET STEP ON
AB_ = ASC(RIGHT(ALLT(WORD_),1))
chh = .f.
IF AB_ < 128 .AND. !BETWEEN(AB_, 40, 61) .AND. !INLIST(AB_, 34, 91, 93) && ()=+0..9:;<=> "[]
if len(word_) > 1
chh = .t.
endif
WORD_ = FSIS(WORD_)
ENDIF
* WAIT WINDOW WORD_
OLD = A1
if chh
TMP2 = WORD_ + TMP2
else
TMP2 = TMP2 + WORD_
endif
ENDDO
*TMP_NEW = FSIS(TMP_NEW)
TMP_NEW = TMP2
RETURN TMP_NEW
************************
Function fsis
Parameter fsis1
fsis2 = ''
For igh = Len(fsis1) TO 1 STEP -1
fsis2 = fsis2+Substr(fsis1, igh, 1)
Endfor
Return fsis2
*
*-----------
FUNCTION num_add
PARAMETERS number1
FOR iz = 1 TO 100
num1 = INT(VAL('1'+REPLICATE('0',iz)))
IF INT(number1/num1) = 0
RETURN iz
ENDIF
ENDFOR
*---------------------------
function sa2pr
parameter TM1
TM1 = STRT(TM1, 'ê','!')
TM1 = STRT(TM1, 'î','"')
TM1 = STRT(TM1, 'í','#')
ramz1 = '€‚ƒ„…†‡ˆ‰‹ŠŒŽ‘’“ ”•–—˜™š›œžŸ¡¢£¤¥¦§¨©ª «¬­®¯àáâãäåæçèéêëìíîïðñòó õö÷øùúûüýþ!"# '
ramz2 = 'µ!"*-%:ŒŠ/‘‘Ž’“”•–—˜™š›œž Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯àáâãäåæçèê ìîðñòóôõö÷øùùúûýüþþéíï '
TM1 = CHRT(TM1, RAMZ1, RAMZ2)
RETURN TM1
*--------------
FUNCTION EXT_FILE
PARAMETERS _FILE
AB1 = AT('.',_FILE)
AB2 = ALLTRIM(SUBSTR(_FILE,AB1,100))
RETURN AB2

حالا موندم چرا این صفحاتی که نوشتم یه جوری باز میشه چجوری میتونم اونا رو توی یه فرم دیزاین کنم من با ویژوال بیسیک فرم میتونم درست کنم ولی با این هرکار کردم گیج شدم

و سوال بعدی اینکه ریپورتهایی که با فاکس نوشتم رو چطور توی ویژوال بیارم

rahro
پنج شنبه 29 آذر 1386, 12:51 عصر
عزیز دل سورس خود رو اول تو نوت پد کپی کن بعد از آنرو ببر توی حافظه کلیبرد و در ویرایشگر سایت پاست کن اینجوری که خیلی مشکله ؟!!

blacky
شنبه 01 دی 1386, 11:58 صبح
اینم از اون سورس

farhad_shiri_ex
یک شنبه 02 دی 1386, 16:33 عصر
دوست عزیز !
مطمن باشید که با ایمپورت سورسهایتان در ویژوال فاکس پروژه شما به یک نرم افزار تحت ویندوز تبدیل نخواهد شد بلکه برای تبدیل پروژه تان از داس به ویندوز باید کارهای بسیاری را انجام دهید البته شما میتوانید از بعضی قسمتهای سورس داس تان استفاده نمایید .
که آنهم به سورسهایتان بستگی دارد حال اگر متوجه منظور اینجانب شده اید سوال خود را واضح تر بیان نمایید تا دوستان و اساتید بزرگوار جواب دهند.

mehran_337
یک شنبه 02 دی 1386, 17:05 عصر
نمی دونم چقدر کاربرد داره اما این مشکل خیلی هاست همونطوریکه مبدل از داس به ویندوز توسط اساتید همین سایت مورد استفاده تمام کشور قرار گرفت و همه رو نجات داد شاید راه اندازی یه تیم و نوشتن برنامه مبدل پروژه از داس به ویندوز هنوز هم مشکل خیلی ها رو برطرف کنه . باید دید چقدر کاربردیه شاید بشه مسائل مالی هم در نظر گرفت تا ایجاد انگیزه بیشتری بشه . البته این فقط یه نظره ... تا دوستان نظرشون چی باشه و این فکر خام و پردازش کنن

blacky
سه شنبه 04 دی 1386, 10:11 صبح
آقا فرهاد من میخوام بدونم باید به فرم تبدیلشون کنم یا نه؟

دستواتشون ویا سمپلی چیزی اگه دارین بگین من ببینم روی فرم آوردنشون چجوریه

mehran_337
سه شنبه 04 دی 1386, 11:42 صبح
باید به فرم تبدیل بشه بهتر بگم باید با فرم دوباره بسازید ( تبدیل نداریم) و خیلی جاهای دیگه رو دستکاری کنید . اینطور بهتر ه بگم دوباره از اول بنویسید و در بخشهایی از کدنویسی از پروژه داس استفاده کنید ..

blacky
چهارشنبه 05 دی 1386, 16:10 عصر
منظورم از تبدیل شدن اینه که کدهاشو دوباره باید بنویسم هلپی چیزی هست که بدونم دستوراتش چی هست و چیکار میکنه؟

kia1349
پنج شنبه 06 دی 1386, 06:49 صبح
تنها ویژوال فاکس 3 بود که یک کانورسیشن خوب برای تبدیل از داس به ویژوال داشت . تازه اونم به شرطی که برنامه هایتان در داس بصورت استاندارد و توسط دیزاینر ها تولید شده بود
برای نوشتن همچین کانورتری با این ابعاد و استفاده کم معمولا کسی پیش قدم نمیشه

blacky
پنج شنبه 06 دی 1386, 17:43 عصر
سلام آقا کیا

منظورم این نیست که کانورتور واسش بنویسم

منظورمن اینه که این پروزه ام میخوام تحت و.یندوز کار کنه متوجه شدی عزیز

حالا من ایمپورتش کردم با ریپورتهاش مشکل دارم

rezaTavak
جمعه 07 دی 1386, 11:42 صبح
بدون تبدیل درست کار نخواهد کرد.

blacky
جمعه 07 دی 1386, 14:58 عصر
به نظر شما الان من چیکار کنم

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

mehran_337
یک شنبه 09 دی 1386, 09:35 صبح
اگر نمی خواهید دوباره بنویسید شما می تونید کل پروژه تونو توی همون داس بزارید و شورتکاتشو توی ویندوز راه اندازی کنید.
توابع نفت مربوط به داسه نه ویندوز.
بنابراین فقط یک راه دارید . در ویندوز پروژه جدیدی ایجاد کنید و بعضی از کدها را آنهم با تغییر از داس کپی کنید . قبلا هم عرض کردم به هر حال روش شی گرائی با روش داس متفاوت است.
حتی روش اتصال به بانک . چون تعریف دیتابیس در داس با ویژوال نیز متفاوت است.
کارپرزحمتی است

blacky
دوشنبه 17 دی 1386, 06:07 صبح
شورتکاتشو توی ویندوز راه اندازی کنید.


یعنی توی وی‍ژوال راه میوفته؟ میشه بازش کنی؟


توابع نفت مربوط به داسه نه ویندوز.


حاجی منم که گفتم توی پروژه ام که توی داسه از این توابع استفاده میکنم برای ویژوال چه کاری باید بکنم بجای توابع نفت


حتی روش اتصال به بانک . چون تعریف دیتابیس در داس با ویژوال نیز متفاوت است.

اینجاشو مشکلی ندارم

rezaTavak
دوشنبه 17 دی 1386, 07:50 صبح
نه تحت داسه فقط توی ویندوز کار می کنید.

از خود فاکس پرو استفاده می کنید و یا از OCX هایی که وجود دارد


منظور این نیست که پشتیبانی نمی شود منظور این است که چیزهای جدید اضافه شده است.

blacky
جمعه 21 دی 1386, 19:30 عصر
سلام

میشه بیشتر درباره شورتکات و تواع نفت در ویژوال بیشتر صحبت کنید و اینکه در کد هایی که از داس به ویژوال کپی میکنم بجای اینکه از توابع نفت استفاده کنم یه فیلدی بخوام بذارم که بتونم فارسی بنویسم چه کدی رو باید استفاده کنم

rezaTavak
شنبه 22 دی 1386, 09:50 صبح
shortcut یک لینک به برنامه اجرایی است.

توابع شرکت نفت تحت داس هستند.

توی ویژوال باید از عناصر ویژوال مانند TextBox استفاده کنید و آنرا راست به چپ کنید یعنی



RightToLeft =.T.



یعنی باید کل برنامه از نو نوشته بشه. بخصوص عناصر رابط کاربر.

Tahmasb
شنبه 06 بهمن 1386, 13:47 عصر
دوستان اگه بخواهیم از اول شروع کنیم و تحت داس را کنار بگذاریم از کجا شروع کنیم وژوالفاکس پرو یا دلفی؟

rezaTavak
شنبه 06 بهمن 1386, 13:59 عصر
این بسته به شما دارد که کدام را انتخاب کنید.

اما ویژوال فاکس پرو راحتتر است اما مشکلات بعدی مانند فارسی کردن اکثر چیزها دارد اما دلفی مشکلتر و دردسر بعدی کمتر دارد.

Tahmasb
دوشنبه 08 بهمن 1386, 08:53 صبح
این بسته به شما دارد که کدام را انتخاب کنید.

اما ویژوال فاکس پرو راحتتر است اما مشکلات بعدی مانند فارسی کردن اکثر چیزها دارد اما دلفی مشکلتر و دردسر بعدی کمتر دارد.
استاد گرامی با تشکر از راهنمایتان / آیا مشکل فارسی نویسی در ویژوال فاکس پرو حل نشده است؟من برنامه های فاکس پرو قدیمی را تبدیل به ویژوال میکنم ولی در پنجره هاا فارسی نمی نویسد راه حل ان چیست. ممنون

rezaTavak
دوشنبه 08 بهمن 1386, 09:11 صبح
راههایی که در داس است مانند @ sys ..get دیگر منسوخ شده و باید از فرم و textbox و عناصر ویژوال استفاده کنید.

سعی کنید برنامه نویسی ویژوال را یاد بگیرید.

mehran_337
دوشنبه 08 بهمن 1386, 11:04 صبح
برای استفاده صحیح از زبان فارسی باید در تنظیمات ویندوز زبان عربی اضافه شود.
در زمینه بهم ریختگی خوب این مشخصه که از داس به ویندوز در همه جا نیاز به تبدیل داره و بطور معمول خوب نشون نمی ده .
همیشه برای کسانیکه از داس به ویندوز مهاجرت می کنند تا مدتها در ویژوال به سبک داس می نویسند . پس یادتان باشد تفکرات داس را کنار گذاشته و با امکانات ویندوزی برنامه آشنا شوید و مهمترین مبحث شی گرائی است . از کتاب مرجع فاکس 3 استفاده کنید و مطالعه کنید تا مسئله برایتان جا بیفتد باید اشیا را خوب بشناسید .
شما مقدمات کار را خودتان فراهم کنید بعد وقتی با مفاهیم آشنا شدید شروع کنید به پرسش و پاسخ در این بخش . حتما اساتید کمکتان خواهند کرد.

Tahmasb
دوشنبه 08 بهمن 1386, 12:54 عصر
استادان گرامی حرف شما متین . من foxpro2.5 را کنار گذاشتم و می خواهم با visual foxpro ورژن 9 را نصب کرده ام برای بدست آوردن برنامه های کوچک و ساده به کدام سایت یا کتاب و یا نرم افزار رجوع کنم . ممنون

mehran_337
دوشنبه 08 بهمن 1386, 14:38 عصر
بنده هم همین را عرض کردم که شما دنبال پروژه یا پرسش نروید . ابتدا یاد بگیرید اصلا ویژوال چیست و چه برتری دارد؟؟؟؟ و آن هم در جوابهای چند خطی نمی گنجد بلکه باید درک کنید .
اکثر ما هم از داس به ویندوز آمدیم اما ابتدا مفهوم برنامه نویسی شی گرا را باید درک می کردیم تا بعد به ریزه کاریها بپردازیم .
در داس خواص اشیا و متد ها معنایی نداشت . ریپورت دیزاینر و مفهوم دیتابیس چیز دیگری بود . کانکشنها و استفاده از کلاس و خیلی مسائل دیگر که درک کردنی است و با چند خط نوشته و چند برنامه ریز و درشت نمی توان درک کرد .مبحث rushmor در دیتابیس مهم است .
خواصی که دیتابیس در ویژوال دارد با جداولی که بنام دیتابیس می شناختیم و محدودیت فیلدها و صدها چیز دیگر.
کتاب مرجع ویژوال فاکس 3 را حتما بگیرید ...

IC_prog
سه شنبه 09 بهمن 1386, 08:50 صبح
با کمی سرچ در اینترنت میتوانید مثالهای زیادی گیر بیاورید . البته از مثالهای کتاب هم میتونید استفاده کنید. بدون تردید آموزش همراه با مشاهده مثالهای متعدد موثرتر خواهد بود.
البته توی همین سایت هم مثالهای زیادی جهت استفاده ازاشیاء گرفته تا کامپوننتها و... وجود دارد.
موفق باشید :چشمک:

kia1349
سه شنبه 09 بهمن 1386, 11:15 صبح
از سایتهای www.foxite.com و www.universalthread.com حداکثر استفاده را ببرید