امتیاز موضوع:
  • 1 رأی - میانگین امتیازات: 5
  • 1
  • 2
  • 3
  • 4
  • 5
آموزش PowerBASIC
نویسنده پیام
yeketaz آفلاین
کاربر با تجربه
****

ارسال‌ها: 744
موضوع‌ها: 123
تاریخ عضویت: اسفند ۱۳۸۶

تشکرها : 520
( 1050 تشکر در 294 ارسال )
ارسال: #23
RE: آموزش PowerBASIC
لیست آموزش هایی که دارم آماده می کنم :

البته فعلا یک قسمت دیگه از توابع کار با رشته ها مونده ولی بعدش اینا رو می زارم :

نقل قول: 1-توابع ریاضی

2-توابع در پاوربیسیک

3-معرفی چند محیط ویژوال برای پاوربیسیک(یکیش شبیه ویژوال بیسیکه که خیلی باحاله)

4-برنامه های چند وظیفه یا چند ریسمانی

5-کار با فایل ها

6-ارتباطات TCP و UDP (برای اتصال بین دو کامپیوتر،FTP،SMTP و ...)

7-ریسورس ها

8-استفاده از اسمبلی در پاوربیسیک

برای همین ممکنه یکم دیر به دیر آموزش ها رو بزارم

ما که دیگه توی ایران ویج پیر شدیم 040 کم کم باید جامون رو بدیم به جوونا 028
۱۳-شهریور-۱۳۸۷, ۱۲:۱۸:۵۰
وب سایت ارسال‌ها
پاسخ
yeketaz آفلاین
کاربر با تجربه
****

ارسال‌ها: 744
موضوع‌ها: 123
تاریخ عضویت: اسفند ۱۳۸۶

تشکرها : 520
( 1050 تشکر در 294 ارسال )
ارسال: #24
RE: آموزش PowerBASIC
آموزش کار با رشته ها در پاوربیسیک(قسمت سوم)
====================================================
تابع $Remove

کد:
متغیر=Remove$(رشته اصلی,Any رشته ای که باید حذف شود)

این تابع یک کاراکتر یا یک رشته را از درون یک رشته دیگر حذف می کند

مثال :

کد:
x$=Remove$("Yeketaz",Any "e")

در اینجا تابع هر کاراکتر e را که پیدا کرد پاک می کند

که در نتیجه x برابر با Yktaz می شود
---------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------

توابع $Right و $Left

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

فرمول استفاده از $Right

کد:
متغیر=$Right(طول رشته,رشته اصلی)

این تابع از طرف راست یک رشته و به طولی که ما برای آن تعیین می کنیم رشته ای را بر می گرداند

مثال :

کد:
x$=Right$("PowerBASIC",5)

در اینجا x برابر با BASIC می شود زیرا ما به تابع گفته ایم که 5 کاراکتر از طرف راست

PowerBASIC را برگردان.

فرمول استفاده از $Left

کد:
متغیر=$Left(طول رشته,رشته اصلی)

این تابع از طرف چپ یک رشته و به طولی که ما برای آن تعیین می کنیم رشته ای را بر می گرداند

مثال :

کد:
x$=Left$("PowerBASIC",5)

در اینجا x برابر با Power می شود زیرا ما به تابع گفته ایم که 5 کاراکتر از طرف چپ

PowerBASIC را برگردان.

---------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------

تابع $StrReverse

کد:
متغیر=StrReverse$(رشته مورد نظر)


این تابع رشته ای را برعکس می کند و بر می گرداند

مثال :

کد:
x$=StrReverse$("PowerBASIC")

در این مثال x برابر با CISABrewoP می شود

---------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------

تابع $StrInsert

کد:
متغیر=StrInsert$(محل الصاق,رشته الصاقی,رشته اصلی)

این تابع یک رشته جدید را در محلی که ما تعیین می کنیم در رشته اصلی اضافه می کند

مثال :

کد:
x$=StrInsert$("PBASIC","ower",2)

در اینجا در از دومین کاراکتر رشته PBASIC رشته ower را اضافه می کند

که در نتیجه x برابر با PowerBASIC می شود

---------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------

تابع $StrDelete

کد:
متغیر=StrDelete$(تعداد کاراکتری که باید حذف شود,محل شروع,رشته اصلی)

این متغیر تعدادی کاراکتر را از محلی مشخص در یک رشته حذف می کند

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

مثال :

کد:
x$=StrDelete$("PowerBASIC",2,4)

در اینجا از کاراکتر دوم رشته PowerBASIC یعنی o چهار کاراکتر را حذف می کند

در نتیجه x برابر با PBASIC خواهد شد

---------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------

تابع Tally

کد:
متغیر=Tally(رشته ای که می خواهیم تکرار آن را بدانیم,رشته اصلی)

این تابع تداد تکرار های یک کاراکتر یا یک رشته را در رشته اصلی بر می گرداند

مثال :

کد:
x&=Tally("PowerPowBASIC","Pow")

در اینجا x برابر با 2 خواهد شد زیرا در رشته PowerPowBASIC دوبار Pow به کار رفته است

---------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------

در اینجا من 20 تابع مهم دررابطه با رشته ها را ذکر کردم اما قدرت پاوربیسیک به همین 20

تابع خطم نمی شود و در حدود 30 تا 40 تابع دیگر دارد که ممکن است هیچ وقت به کار ما نیاید

بنابراین از ذکر آنها خودداری می کنم ولی اگر می خواهید درباره آنها بیشتر بدانید می توانید به

Help پاوربیسیک مراجعه کنید Wink

ما که دیگه توی ایران ویج پیر شدیم 040 کم کم باید جامون رو بدیم به جوونا 028
۱۳-شهریور-۱۳۸۷, ۱۸:۲۴:۰۲
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : amirjan, Di Di, godvb
yeketaz آفلاین
کاربر با تجربه
****

ارسال‌ها: 744
موضوع‌ها: 123
تاریخ عضویت: اسفند ۱۳۸۶

تشکرها : 520
( 1050 تشکر در 294 ارسال )
ارسال: #25
RE: آموزش PowerBASIC
آموزش توابع ریاضی در پاوربیسیک(قسمت اول)
====================================================
نکته مهم :
نقل قول: نوع متغیرهایی که در معرفی توابع به کار می رود نوعی است که تابع بر می گرداند ولی

می شود آن را با توابعی دیگر حتی به نوع رشته ای تبدیل کرد
====================================================
تابع Sin

این تابع سینوس زاویه ای را بر حسب رادیان بر می گرداند

کد:
متغیر=Sin(زاویه مورد نظر)

متغیر باید از نوع EXT باشد و جواب برگشتی همیشه بین 1 و 1- است.زاویه مورد نظر

زاویه ای است که باید سینوس آن بر گردانده شود

مثال :

کد:
x##=Sin(3)

x برابر با 0/14112000859867 می شود
---------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------
تابع Cos

این تابع کسینوس یک زاویه را برحسب رادیان بر می گرداند

جواب این تابع نیز همیشه بین 1 و 1- است

کد:
متغیر=Cos(زاویه مورد نظر)

باز هم در این جا متغیر از نوع EXT است و زاویه مورد نظر زاویه ای است که باید کسینوس آن

بر گردانده شود

مثال :

کد:
x##=Cos(0)

x برابر با 1 می شود

---------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------

تابع Tan

این تابع تانژانت زاویه ای را بر حسب رادیان بر می گرداند

کد:
متغیر=Tan(زاویه مورد نظر)

متغیر باید از نوع EXT باشد.زاویه مورد نظر

زاویه ای است که باید تانژانت آن بر گردانده شود

مثال :

کد:
x##=Tan(3)

x برابر با منفی 0/142546543074278 می شود
---------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------
تابع Atn

این تابع آرک تانژانت یک مقدار بر می گرداند

جواب این تابع نیز بین منفی 1/57079 و مثبت 1/57079 است

کد:
متغیر=Atn(مقدار مورد نظر)

باز هم در این جا متغیر از نوع EXT است و مقدار مورد نظر مقداری است که باید ارک تانژانت آن

بر گردانده شود

مثال :

کد:
x##=Atn(2)

x برابر با 1/10714871779409 می شود

---------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------

تابع Abs

این تابع قدر مطلق یک مقدار را بر می گرداند

کد:
متغیر=Abs(مقدار مورد نظر)
مثال :

کد:
x&=Tan(-157)

x برابر با منفی 157 می شود
---------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------
تابع Sgn

این تابع برای تعیین علامت یک مقدار عددی به کار می رود

در صورتی که مقدار مثبت باشد جواب تابع 1 و اگر مقدار منفی باشد جواب -1 وگرنه 0

است

کد:
متغیر=Sgn(مقدار مورد نظر)

مثال :

کد:
x%=Atn(25)

x برابر با 1 می شود

---------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------

تابع Sqr

این تابع جذر یک عدد را بر می گرداند

کد:
متغیر=Sqr(مقدار مورد نظر)
مثال :

کد:
x##=Sqr(1024)

x برابر با منفی 32 می شود
---------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------
تابع Fix

این تابع قسمت صحیح یک مقدار عددی را بر می گرداند

کد:
متغیر=Fix(مقدار مورد نظر)

مثال :

کد:
x&=Fix(25.26875697)

x برابر با 25 می شود

---------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------
تابع Rnd

این تابع به صورت تصادفی یک عدد بین 0 و یک را بر می گرداند

کد:
متغیر=Rnd(عبارتی که براساس آن عدد تولید می شود)

عبارتی که براساس آن عدد تولید می شود اختیاری است

مثال :

کد:
x##=Rnd()

بر فرض مثال x برابر با 0/597985142302 می شود

یا

کد:
x##=Rnd(a)

a می تواند یک متغیر عددی باشد که حاوی یک عدد است و باید بر اساس آن عدد تصادفی

تولید شود

که بر فرض مثال x برابر با 0/996587425 می شود

---------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------

عباداتتان قبول حق Wink

ما که دیگه توی ایران ویج پیر شدیم 040 کم کم باید جامون رو بدیم به جوونا 028
۱۵-شهریور-۱۳۸۷, ۲۱:۴۳:۰۰
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : Di Di
yeketaz آفلاین
کاربر با تجربه
****

ارسال‌ها: 744
موضوع‌ها: 123
تاریخ عضویت: اسفند ۱۳۸۶

تشکرها : 520
( 1050 تشکر در 294 ارسال )
ارسال: #26
RE: آموزش PowerBASIC
آموزش توابع ریاضی در پاوربیسیک(قسمت دوم)
====================================================
تابع Int

این تابع قسمت صحیح یک عبارت اعشاری را برمی گرداند

کد:
متغیر=Int(عبارت اعشاری)

مثال :

کد:
x&=Int(16.896)

x برابر با 16 می شود
---------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------
تابع Round

این تابع یک عدد اعشاری را گرد می کند

کد:
متغیر=Round(تا چند رقم بعد از اعشار گرد شود,عدد اعشاری)

مثال :

کد:
x#=Round(14.8567,1)

x برابر با 14.9000 یا 14.9 می شود
---------------------------------------------------------------------------------------------
تابع Log

این تابع لگاریتم طبیعی (لگاریتم پایه e) مقداری را بر می گرداند

کد:
متغیر=Log(مقداری که باید لگاریتم طبیعی آن برگردانده شود)

مثال :

کد:
x##=Log(10)

x برابر با 2/30258509299404 می شود
---------------------------------------------------------------------------------------------
تابع Exp

این تابع توانی از عدد نپر(e) را بر می گرداند

کد:
متغیر=Exp(عددی که باید عدد نپر آن محاسبه شود)

مثال :

کد:
x##=Exp(5)

x برابر با 148/413159102577 می شود
---------------------------------------------------------------------------------------------
تابع $Hex

این تابع عددی را به مبنای 16 تبدیل می کند

کد:
متغیر=$Hex(عددی که باید به مبنای 16 تبدیل شود)

متغیر باید از نوع رشته ای باشد

مثال :

کد:
x$=Hex$(5050)

x برابر با 13BA می شود

این تابع برای کار با ریجیستری و کلیدهایی که در مبنای 16 هستند خیلی به کار می آید
----------------------------------------------------------------------------------------------
تابع $Oct

این تابع عددی را به مبنای 8 تبدیل می کند

کد:
متغیر=$Oct(عددی که باید به مبنای 8 تبدیل شود)

مثال :

کد:
x$=Oct$(8)

x برابر با 10 می شود
----------------------------------------------------------------------------------------------
من ممکنه تا چند روز نتونم این پست رو ادامه بدم چون دارم روی یک ویروس میکر توی

پاوربیسیک کار می کنم که بعد از آموزش ها سورسش رو می ذارم

دارم روش کار می کنم که هم همه چیز رو پوشش بده که آموزنده باشه و هم آموزشهای

بعدی که می ذارم قوی تر باشه

ما که دیگه توی ایران ویج پیر شدیم 040 کم کم باید جامون رو بدیم به جوونا 028
۱۶-شهریور-۱۳۸۷, ۲۲:۰۵:۳۱
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : Di Di, arian_vc
yeketaz آفلاین
کاربر با تجربه
****

ارسال‌ها: 744
موضوع‌ها: 123
تاریخ عضویت: اسفند ۱۳۸۶

تشکرها : 520
( 1050 تشکر در 294 ارسال )
ارسال: #27
RE: آموزش PowerBASIC
زیربرنامه ها در پاوربیسیک(قسمت اول : زیرروال ها)
===================================================
توابع پایه اصلی برنامه نویسی ساخت یافته است

برای حل برنامه های پیچیده باید آن را به بخش ها کوچکتری تقسیم کرد که هربخش وظیفه

خاص خودش را داشته باشد و برای هربخش نیز برنامه ای مخصوص باید نوشته شود.به

هربخش یک زیربرنامه گفته می شود.

مزایای استفاده از زیربرنامه :

1-خوانایی برنامه بالا می رود

2-استفاده از زیربرنامه کارگروهی را امکان پذیر می کند

3-از زیربرنامه هایی که در برنامه های دیگر نوشته شده است می توان استفاده کرد

4-زیربرنامه یک بار نوشته و به دفعات فراخوانی می شود بنابراین حجم برنامه کم و خطایابی

آسان تر می شود

5-سرعت طراحی برنامه بالا می رود

6-می توان با این روش با زبانهای دیگر ارتباط برقرار کرد.
====================================================
در پاوربیسیک همه برنامه ها باید دارای تابعی به نام PbMain باشد که حکم main در

++C/C را داراست

البته در محیطهای ویژوال مثل FireFly یا Phoenix دیگر شما به طور مستقیم با این تابع

کار نمی کنیم

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

کد:
Function PBMain() as Long
کدهای برنامه
End Function

که مفصل تر در جلسات بعد راجع به این تابع بحث می کنیم ولی این را بدانید که برای

اجرا یک برنامه و مثال هایی که تا کنون نوشتید می توانید به صورت زیر عمل کنید

کد:
#Compile Exe
#Include "Win32API.inc"
Function PBMain() as long
کدهای برنامه
End Function

خط اول به کامپایلر می گوید که یک فایل Exe تولید کند و خط دوم فایل Win32API.inc که

حاوی توابع API است را در برنامه فرخوانی می کند که اگر از توابع API استفاده نمی کنید

لازم نیست از این دستور استفاده کنید

بقیه دستورات هم همان بدنه اصلی برنامه ها در پاوربیسیک است
====================================================

ما در کل دو نوع زیربرنامه داریم : 1-زیرروالها 2-توابع

1-زیر روال ها:

این نوع زیربرنامه می تواند چندین مقدار را به برنامه فراخوان تحویل دهند

نقل قول: ((برنامه فراخوان برنامه ای است که زیربرنامه را فرخوانی می کند))

تعریف زیرروال :

کد:
Sub (پارامترها) نام زیرروال
دستورات زیرروال
End Sub

نقل قول: در اینجا ممکن است پرانتزها به هم ریخته باشد ولی در کل الگوریتم آن به شکل زیر است

Sub به اضافه یک فضای خالی به اضافه نام زیرروال به اضافه پرانتز باز اگر پارامتر دارید

پارامترها را می نویسیم به اضافه پرانتز بسته

نام زیرروال از قانون نام گذاری متغیر ها پیروی می کند

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

دیگر مقدار دهی می شود

برای فرخوانی یک زیرروال باید به صورت زیر عمل کرد :

نقل قول: Call نام زیرروال

در صورتی که زیرروال دارای پارامتر است پارامترها را در یک پرانتز می نویسیم

کد:
Call SubName(Parameter)

مثال :

کد:
#Compile Exe
Function PbMain() As Long
            Dim Res As Integer
            Call AddNum(10,35,Res)
            MsgBox Str$(res)
End Function

Sub AddNum(Num1 As Integer,Num2 As Integer,Result As Integer)
       Result=Num1+num2
End Sub

از همین اول با یک مثال سنگین شروع کردم که همه چیز رو پوشش بده

در خط اول دستورات پیش پردازنده ای است که دستور تولید EXE می دهد

سپس بدنه اصلی برنامه شروع می شود

سپس یک متغیر از نوع Integer تعریف می شود

سپس یک زیرروال صدا زده می شود که حاوی 3 پارامتر است

و در خط آخر تابع اصلی با دستور Msgbox و تبدیل عدد صحیح به رشته با استفاده از دستور

$Str محتوای متغیر Res را نشان می دهیم

حال به سراغ زیر روال می رویم :

1-نام زیرروال AddNum و حاوی 3 پارامتر است:

نقل قول: Num1 برای گرفتن عدد اول استفاده می شود

Num2 برای گرفتن عدد دوم استفاده می شود

Result برای برگرداندن نتیجه جمع دو عدد استفاده می شود

سپس در بدنه زیرروال Num1 با Num2 جمع شده و نتیجه در Result قرار داده می شود

حال دوباره به تابع اصلی برمی گردیم :

در اولین پارامتر عدد 10 و در دومین پارامتر عدد 35 و در آخر متغیر Res را قرار می دهیم

در اینجا عدد 10 و 35 با هم جمع شده و نتیجه در Res قرار می گیرد در نتیجه پیغام صادر

شده عدد 45 را نشان می دهد

البته برای برگرداندن یک مقدار اکثرا از تابع استفاده می شود ولی در اینجا برای فهم بیشتر

از این نوع مثال استفاده کردم

حال خودتان می توانید با اضافه کردن یک پارامتر تفریق دو عدد را نیز حساب کنیم

البته زیرروال می تواند هیچ پارامتری نداشته باشد مثال :

کد:
#Compile Exe
Function PbMain() As Long

            Call ShowMess
            
End Function

Sub ShowMess()
            MsgBox "PowerBASIC"
End Sub

در اینجا زیرروال فقط برای نشان دادن یک پیغام به کار می رود
====================================================

نکته :

نقل قول: تابع MsgBox

این تابع برای نشان دادن یک پیغام به کار می رود :

و به صورت زیر استفاده می گردد :

کد:
MsgBox Body$[,%Style,Title$]
Body متن پیغام است و باید از نوع رشته ای باشد که اگر نباشد می تواند با استفاده از

$Str یک نوع را به نوع رشته ای تبدیل کرد

برای مثال برای نشان دادن جمع دو عدد باید به صورت زیر عمل کرد :

کد:
MsgBox Str$(2+3)

بقیه پارامترهای آن اختیاری است

که Style%شکل پیغام و دکمه ها را مشخص می کند

$Tile تیتر پیغام را مشخص می کند که باز هم از نوع رشته ای است

در جلسات بعد بیشتر راجع به این تابع بحث می کنیم

ما که دیگه توی ایران ویج پیر شدیم 040 کم کم باید جامون رو بدیم به جوونا 028
۱۸-شهریور-۱۳۸۷, ۱۳:۲۰:۳۵
وب سایت ارسال‌ها
پاسخ
yeketaz آفلاین
کاربر با تجربه
****

ارسال‌ها: 744
موضوع‌ها: 123
تاریخ عضویت: اسفند ۱۳۸۶

تشکرها : 520
( 1050 تشکر در 294 ارسال )
ارسال: #28
RE: آموزش PowerBASIC
زیربرنامه ها در پاوربیسیک (قسمت دوم : توابع)
====================================================
توابع زیربرنامه هایی هستند که حداقل یک مقدار را به برنامه فراخوان برمی گردانند

در جلسه قبل گفتیم که زیرروال ها می توانند چندین مقدار را از طریق پارامترها به برنامه فراخوان

تحویل دهند یا اصلا هیچ مقداری را بر نگردانند

پس برای هنگامی که ما فقط یک مقدار نیاز داریم بهترین راه استفاده از توابع است
====================================================

در پاوربیسیک توابع مهمی وجود دارند که یکی از آنها PBMain است که همانطور که جلسه قبل گفته

شد حکم بدنه اصلی برنامه (مانند Main در ++C/C) است البته توابع دیگری نیز برای اینکار

وجود دارند ولی فعلا ما روی همین تابع بحث می کنیم

برای استفاده از این تابع باید به صورت زیر عمل کنید :

کد:
Function PBMain() As Long
کدهای برنامه
End Function

حال می فهمیم که در کل برای تعریف یک تابع باید چگونه عمل کنیم :

کد:
Function اسم تابع() As نوعی که تابع برمی گرداند
بدنه تابع
End Function

اسم تابع مانند اسم زیرروال ها از قانون نام گذاری متغیرها پیروی می کند

در صورت داشتن پارامتر می تواند آن ها را بین آن دو پرانتز بعد از نام تابع همراه با نوع آن ها

بنویسید

مثل :

کد:
Function AddNumber(Number1 As Integer,Number2 As Integer) as Integer

End Function

در اینجا ما تابعی به نام AddNumber تعریف کردیم که دو پارامتر به نامهای Number1 و

Number 2 و از نوع عدد صحیح یا Integer دارد

(برای جداکردن پارامترها می توانید از , استفاده کنید)

سپس این تابع یک مقدار از نوع Integer بر می گرداند

نقل قول: برای برگرداندن مقدار باید مقدار را برابر با نام تابع قرار داد :
کد:
مقدار=نام تابع
یا
کد:
Function=مقدار

نکته :

نقل قول: برای استفاده راحت از توابع باید آن ها را تعریف کنید

برای اینکار به صورت زیر عمل کنید :

کد:
Declare Function نام تابع() As نوعی که بر می گرداند
در صورتی که تابع پارامتر نیز دارد پارامترهای آن را همراه با نوع آنها در پرانتزهای بعد از اسم تابع بنویسید
حال ما برای این تابع کد می نویسیم :

کد:
#Compile EXE

Declare Function AddNumber(Number1 As Integer,Number2 As Integer) As Integer

Function PBMain() As Long
Dim Result as Integer
Result=AddNumber(1,2)
End Function

Function AddNumber(Number1 As Integer,Number2 As Integer) As Integer
AddNumber=Number1+Number2
End Function

در اینجا ما به کامپایلر می گوییم که یک فایل EXE تولید کند سپس تابع AddNumber را

تعریف می کنیم و سپس به سراغ بدنه اصلی برنامه میرویم

و در آن یک متغیر از نوع عدد صحیح و به نام Result تعریف می کنیم

سپس Result را برابر با نتیجه ای که تابع AddNumber برمی گرداند قرار می دهیم

سپس عدد های 1 و 2 را به تابع موردنظر ارسال می کنیم

حال به تابع AddNumber می رویم :

این تابع دو پارامتر از نوع عدد صحیح و به نام های Number1 و Number2 دارد و یک مقدار از

نوع عدد صحیح بر می گرداند

در بدنه تابع Number1 و Number2 را با هم جمع و به AddNumber یا همان مقدار نهایی

تابع نسبت می دهیم

پس در نتیجه Result که در بدنه اصلی تعریف کردیم برابر با جمع دو عدد یعنی 1و2 می شود

و حاصلش برابر با 3 می شود

به همین سادگی شما می توانید از زیربرنامه های استفاده کنید
====================================================
نکته :

نقل قول: همان طور که در پست های قبلی گفتم بهتر است از محیطهای ویژوال که برای پاوربیسیک

طراحی شده است استفاده کنید(در همین انجمن یک بخش برای اینکار قرار داده شده است)


((ادیتور پاوربیسیک به نظر من به درد خودش می خورد))

در جلسه بعد به سراغ برنامه های چند وظیفه یا چند ریسمانی می رویم

ما که دیگه توی ایران ویج پیر شدیم 040 کم کم باید جامون رو بدیم به جوونا 028
(آخرین ویرایش در این ارسال: ۲۵-شهریور-۱۳۸۷, ۱۳:۳۸:۰۴، توسط yeketaz.)
۲۵-شهریور-۱۳۸۷, ۱۲:۴۴:۱۳
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : Di Di
yeketaz آفلاین
کاربر با تجربه
****

ارسال‌ها: 744
موضوع‌ها: 123
تاریخ عضویت: اسفند ۱۳۸۶

تشکرها : 520
( 1050 تشکر در 294 ارسال )
ارسال: #29
RE: آموزش PowerBASIC
چند ریسمانی (چند وظیفه ای یا MultiThread) در پاوربیسیک (قسمت اول)
====================================================

حالا که زیر برنامه ها را یاد گرفتیم گفتم بریم سراغ برنامه های چند ریسمانی یعنی برنامه های

که در عین واحد می تونند چندین عمل رو انجام بدهند

این مبحث به نظر مشکل می آید ولی در حقیقت یکی از ساده ترین مباحث پاوربیسیک است

====================================================

برنامه های چند وظیفه ای چه هستند ؟

اکثر برنامه هایی که ما می نویسیم در عین واحد فقط یک کار را انجام می دهند مثلا جمع دو عدد

نوشتن رو فایل ها،پخش موسیقی یا فیلم یا ...

ولی گاهی پیش می آید که بخواهیم برنامه ما در عین واحد بیش از یک کار را انجام بدهد

این تصمیم بیشتر در خصوص نوشتن بدافزارها به وجود می آید مثلا در نوشتن یک کرم

باید در عین واحد چندین کار را برای هماهنگی بین اجزای خود انجام دهد در صورتی که

ماشین کدهای ما را خط به خط خوانده و اجرا می کند یعنی برنامه در حالت تک بندی

اجرا می شود

حال برای حل مشکل باید چه کرد؟

در سیستم های تک پردازنده ای انجام چندین کار در یک زمان کاریست غیرممکن و فقط

این کار در پردازنده های چند هسته امکان می پذیرد

اما در پاوربیسیک به راحتی می توان بدون استفاده از توابع API و بی توجه به پردازنده

برنامه های چند وظیفه ای را طراحی کرد

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

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

را انجام داده و سپس به سراغ بند دوم رفته و قسمتی از آن را نیز انجام می دهد اگر بند

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

این دو بند در یک زمان اجرا نمی شوند و فقط به دلیل سرعت بالای پردازنده به نظر می رسد

که این دو بند در عین واحد اجرا می شوند

====================================================

در پاوربیسیک زیربرنامه هایی برای طراحی برنامه های چند وظیفه ای وجود دارد که همگی با

کلمه Thread به معنی نخ یا همان بند شروع می شود

توابعی که برای کار با برنامه های چند بندی استفاده می شود :

نقل قول: Thread Create
Thread Close
Thread Resume
Thread Status
Thread Suspend
ThreadCount
ThreadID

=====================================================

اول از توابع ساده تر شروع می کنیم :
--------------------------------------------------------------
ThreadID

کد:
متغیر=ThreadID

این تابع یک مقدار Long بر می گرداند که نشان دهنده شناسه بند در حال اجراست

-------------------------------------------------------------

ThreadCount

کد:
متغیر=ThreadCount

این تابع تعداد بند فعال را بر می گرداند

متغیر از نوع Long می باشد

------------------------------------------------------------

Thread Suspend

کد:
Thread Suspend هندل بند To نتیجه

این تابع اجرای یک بند را به حالت تعویق در می آورد

هندل بند یک عدد است که از تابع Thread Create به دست می آید

و نتیجه نیز یک مقدار Long می باشد که در صورت موفقیت برابر با تعداد بند های قبل از تعویق

می باشد وگرنه برابر با 1- خواهد بود

------------------------------------------------------------

Thread Resume

کد:
Thread Resume هندل بند To نتیجه

این تابع یک بند را دوباره اجرا می کند و در جاهایی کاربرد دارد که مثلا اجرای یک بند با

Thread Suspend متوقف شده باشد

هندل بند یک مقدار از نوع Long می باشد که هنگام ساخت بند توسط Thread Create به دست می آید

نتیجه نیز از نوع Long است و اگر تابع کارش را به درستی انجام دهد برابر با تعداد بندها

قبل از متوقف شدن آنهاست وگرنه برابر با 1- خواهد بود

=====================================================

در جلسه بعدی به طور کامل با با برنامه های چندریسمانی آشنا خواهید شد.038

ما که دیگه توی ایران ویج پیر شدیم 040 کم کم باید جامون رو بدیم به جوونا 028
۲۹-شهریور-۱۳۸۷, ۱۳:۱۳:۵۸
وب سایت ارسال‌ها
پاسخ
yeketaz آفلاین
کاربر با تجربه
****

ارسال‌ها: 744
موضوع‌ها: 123
تاریخ عضویت: اسفند ۱۳۸۶

تشکرها : 520
( 1050 تشکر در 294 ارسال )
ارسال: #30
RE: آموزش PowerBASIC
چند ریسمانی (چند وظیفه ای یا MultiThread) در پاوربیسیک (قسمت دوم)
====================================================
در جلسه گذشته تعدادی از توابعی که در برنامه های چند بندی نقش دارند را بررسی کردیم

حال به ادامه آنها می پردازیم

باز هم از توابع ساده تر شروع می کنیم :
====================================================
Thread Status

کد:
Thread Status هندل بند To نتیجه

این تابع وضیعت یک بند را بر می گرداند

هندل بند یک مقدار از نوع Long است که توسط تابع Thread Create بدست می آید

و نتیجه نیز با همان نوع Long است که در صورت ناتوانی تابع عدد 0 و در صورت اینکه بند در حال

اجراست H103& و اگر بند متوقف شده اما هنوز کامل بسته نشده است شماره بندهای جاری

در حال اجرا را بر می گرداند که می توانید آن را با ThreadCount نیز بدست آورید

----------------------------------------------------------------------------------------------

Thread Close

کد:
Thread Close هندل بند To نتیجه

این تابع برای بستن یک بند استفاده می شود و هندل و نتیجه همانند قبل از نوع Long بوده

و هندل اشاره به بندی می کند که باید بسته شود و نتیجه کار در قسمت نتیجه ذخیره می شود

اگر تابع موفق شود عددی به غیر از صفر در نتیجه نمایان می شود و گرنه عدد صفر در نتیجه ذخیره خواهد شد

چند نکته :

نقل قول: 1-در صورتی که یک بند بسته نشود در حالی که کارش را تمام کرده باشد بازهم از منابع

حافظه و پردازنده استفاده خواهد کرد و باعث هدررفتن آنها می شود

2-در صورتی که یک بند بسته شود دیگر امکان ریستارت یا از سر گیری آن با هندل قبلی آن ممکن نیست

3-این تابع یک بند را متوقف نمی سازد بلکه در حقیقت هندل آن بند را آزاد می کند به همین دلیل

نکته شماره 2 پیش می آید

----------------------------------------------------------------------------------------------

Thread Create

این آخرین تابعی است که برای کار با برنامه های چندبندی معرفی می کنم و همین طور

مهمترین تابع.

این تابع کارش ساخت یک بند جدید است و می شود گفت که کار همه توابع دیگر مرتبط با

این تابع است

کد:
Thread Create پارامترها)اسم تابع) To متغیر برای ذخیره هندل بند جدید

این تابع فقط می تواند با توابع اجرا شود.متغیر باید از نوع Long باشد.

این متغیر در جای هندل بند در توابع دیگر قرار می گیرد

نکته :

نقل قول: پارامترهای تابعی که با Thread Create استفاده می کنید باید حتما از نوع Long یا Dword باشند

و باید با دستور ByVal تعریف شوند

و همین طور نوع بازگشتی تابع نیز باید از نوع long یا Dword باشد

یعنی توابعی که استفاده می کنید باید به صورت زیر باشد

کد:
FUNCTION ThreadFuncName (BYVAL param AS {LONG | DWORD}) AS {LONG | DWORD}

مقدار بازگشتی تابع را نیز می توانید با استفاده از تابع Thread Status بدست آورید

یک مثال جامع از خوده Help پاوربیسیک (با کمی دستکاری)

کد:
Sub SpawnThreads()

  Local x As Long
  Local s As Long
  Dim idThread(10) As Long

  For x = 1 To 10
    Thread Create MyThread(x) To idThread(x)
    Sleep 50
  Next

  MsgBox "10 Threads Started! " + _
    "Wait for them to finish!"

  Do
    For x = 1 To 10
      Sleep 0
      Thread Status idThread(x) To s
      If s <> &H103 And s Then Iterate Do
    Next
  Loop While s

  For x = 1 To 10
    Thread Close idThread(x) To s
  Next x

  MsgBox "Finished!"

End Sub
   '=====================================================================
Function PbMain() As Long
            Call SpawnThreads()
End Function
    '=====================================================================
    
' The following is executed as a thread Function!

Function MyThread (ByVal x As Long) As Long
  Local n As Long
  Local t As Single

  MsgBox "Begin Thread" + Str$(x)
  t = Timer

  For n = 1 To 10
    Sleep 100 + 100 * x
  Next n

  t = Timer - t
  MsgBox "End Thread" + Str$(x) + _
    " Elapsed time = " + Str$(t,5)

End Function

چیز نا مفهومی نداره!می تونید توی ادیتور پاوربیسیک این کد را کپی و اجرا سپس نتیجه را ببینید

چندتا چیز جدید داره:

دستور Iterate Do : شروع ضروری و فوری حلقه

دستور Sleep : برای ایجاد وقفه به کار می رود

تابع Timer : این تابع یک عدد بر می گرداند که آن ثانیه هایی است که از نیمه شب گذشته است

========================================================

در جلسه بعد به سراغ کار با فایلها در پاوربیسیک می رویم که تقریبا یک بحث طولانی است Wink

ما که دیگه توی ایران ویج پیر شدیم 040 کم کم باید جامون رو بدیم به جوونا 028
۳۰-شهریور-۱۳۸۷, ۱۴:۴۸:۵۳
وب سایت ارسال‌ها
پاسخ
yeketaz آفلاین
کاربر با تجربه
****

ارسال‌ها: 744
موضوع‌ها: 123
تاریخ عضویت: اسفند ۱۳۸۶

تشکرها : 520
( 1050 تشکر در 294 ارسال )
ارسال: #31
RE: آموزش PowerBASIC
کار با فایل ها در پاوربیسیک (قسمت اول)
====================================================
تمامی اطلاعاتی که ما در برنامه ها استفاده کرده ایم همگی موقت بودند زیرا در حافظه ذخیره می شدند

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

بین می رود

حال اگر بخواهیم اطلاعات را همیشه در دسترس داشته باشیم باید چه کرد؟ :

1-استفاده از بانک اطلاعاتی

2-ذخیره اطلاعات در یک فایل

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

و فعلا بحث ما سره ذخیره اطلاعات در فایلهاست
====================================================
در پاوربیسیک می شه دو جور با فایلها کار کرد :

با استفاده از آدرس فایل

با استفاده از هندل فایل

بحث فایل ها در پاوربیسیک بسیار بزرگ است و دستورات زیادی برای راحتی کار در آن در نظر

گرفته شده است که با هر ورژن جدید دستورات جدید اضافه می شوند که من سعی

می کنم طوری توضیح بدم که توی همه ورژن ها کار کنه و فعلا با آدرس فایل ها کار می کنیم
====================================================

باز کردن فایل و کار با آن :

کد:
OPEN filespec [FOR mode] [ACCESS access] [LOCK lock] AS [#]  filenum& [LEN = record_size] [BASE = base]

این دفعه فرمول رو به زبان اصلی گذاشتم چون راحتتر می شه روش توضیح داد :

Open یک دستور است و برای باز کردن و کار با فایل ها همیشه استفاده می شود
---------------------------------------------
filespec به آدرس فایل آشاره می کند یعنی در اینجا شما باید آدرس فایل را قرار دهید
---------------------------------------------
For Mode یک دستور اختیاری است که به جای Mode باید نوع کار با فایل را مشخص کنید

در صورتی که این دستور را ذکر نکنید به طور پیش فرض فایل به صورت تصادفی Random باز می شود

می توانید به جای Mode از دستورات زیر استفاده کنید:
نقل قول: INPUT : این دستور برای خواندن از فایل های ترتیبی مثل فایل های متنی به کار می رود

که خود می تواند با دستورات دیگری بیاید که در جاهای دیگر اشاره می کنیم

یعنی وقتی از این دستور استفاده کنید فایل برای خواندن آماده می شود

((البته این دستور در جاهای دیگر در همین مبحث فایل ها کاربرد دارد))

OUTPUT : این دستور برای ساخت یک فایل جدید به کار می رود البته در صورتی که آدرسی

که به دستور داده اید وجود داشته باشد اطلاعات قبلی آن را پاک می کند

این دستور نیز برای کار با فایل ها ترتیبی به کار می رود

Append :این دستور برای نوشتن در آخر فایل استفاده می شود که باز برای کار با فایل های ترتیبی

به کار می رود

Binary :این دستور فایل را به صورت باینری باز می کند یعنی می توانید به تک تک بایت های

فایل دسترسی داشته و آن ها را خوانده یا تغییر دهید

Random :این دستور فایل را جوری باز می کند که نوشتن و خواندن از فایل های ترتیبی را در بلوک

Open فراهم می کند (در فایل های ترتیبی کار برد دارد)

اگر دستور For Mode را ذکر نکنید همین دستور Random انتخاب می شود

یعینی اگر شما می خواهید فایل شما به صورت تصادفی باز شود دیگر نیاز نیست قسمت

For Mode را بنویسید
--------------------------------------------

ACCESS access نیز یک دستور اختیاری است و نحوه دسترسی به فایل را تعیین می کند

که باید نحوه دسترسی را در access مشخص کنید :

نقل قول: Read :این دستور فقط به شما اجازه می دهد که از فایل بخوانید و اجازه تغییر و نوشتن در فایل را نمی دهد

Write :این دستور فقط به شما اجازه می دهد که در فایل بنویسید و شما توان خواندن از فایل را ندارید

Read Write : این دستور هم اجازه نوشتن و هم خواندن را به شما می دهد که در صورتی که

از دستور ACCESS access استفاده نکنید همین دستور Read Write به عنوان دستور پیش فرض

در نظر گرفته می شود
------------------------------------------------
LOCK lock باز هم یک دستور اختیاری است و تقریبا کار همان ACCESS را انجام می دهد

البته پیشرفته تر و بالعکس.

با این دستور می توانید تعیین کنید که چه کاری را نتوانیم انجام دهیم :

که به جای lock می توانید از دستورات زیر استفاده کنید:

نقل قول: SHARED:همه دسترسی ها را به شما می دهد

Write:اجازه نوشتن در فایل را از شما می گیرد

Read:اجازه خواندن را از شما می گیرد

Read Write:اجازه خواندن و نوشتن را از شما می گیرد

------------------------------------------------
# نیز یک دستور اختیاری است که می تواند قبل از شماره فایل یا همان filenum بیاید که برای ما فرقی

ندارد (باید به شماره فایل چشبیده باشد)
----------------------------------------------

filenum شماره فایل باز شده را تعیین می کند که همه کارهای ما با این شماره صورت می گیرد

نقل قول: چند تذکر:

1-هیچ گاه نمی توانید در عین واحد برای دو فایل از یک شماره استفاده کنید

2-برای آزاد سازی شماره به کار رفته برای یک فایل باید فایل را ببندید

3-می توانید برای اینکه از اشتباهات کار با شماره فایلها بکاهید از دستور FreeFile استفاده کنید

کد:
متغیر=FreeFile
متغیر از نوع Long است و پس از اجرا برابر با یک شماره آزاد برای کار با فایل ها می شود

برای کار با این دستور باید آن را قبل از بلوک Open به کار برده و سپس متغیر را جای filenum قرار دهید
]

---------------------------------------------

LEN = record_size یک اختیاری است که برای مشخص کردن طول هر رکورد از فایل های ترتیبی به کار می رود

که می توانید طول مورد نظر را به جای record_size قرار دهید

--------------------------------------------

BASE base نیز یک دستور اختیاری است و تعیین می کند که فایل از بایت 0 شروع شود یا 1

که می توانید یکی از اعداد 0 یا 1 را به جای base قرار دهید

====================================================

حال اگر بخواهیم یک فایل را با استفاده از دستگیره یا هندل آن باز کنیم باید به صورت زیر عمل کنیم :

کد:
OPEN HANDLE filehandle [FOR mode] [ACCESS access] [LOCK lock] AS [#] filenum& [LEN = record_size] [BASE = base]

می بینید که تنها چیز اضافه آن کلمه HANDLE پس از Open است

و به جای filespec کلمه filehandle که باید به جای آن هندل فایل مورد نظر را قرار دهید

که هندل فایل را می توانید با استفاده از توابع API مثل CreateFile بدست آورید

====================================================

چون آموزش ها کامل نیست مثالی از آنها مطرح نمی کنم

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

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

032 032 032 032 032 032 032 032 032 032

ما که دیگه توی ایران ویج پیر شدیم 040 کم کم باید جامون رو بدیم به جوونا 028
۰۴-مهر-۱۳۸۷, ۱۷:۱۶:۲۲
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : EleRam
yeketaz آفلاین
کاربر با تجربه
****

ارسال‌ها: 744
موضوع‌ها: 123
تاریخ عضویت: اسفند ۱۳۸۶

تشکرها : 520
( 1050 تشکر در 294 ارسال )
ارسال: #32
RE: آموزش PowerBASIC
کار با فایل ها در پاوربیسیک (قسمت دوم)
================================================
آموزش کار با فایل های ترتیبی
---------------------------------
نوشتن در فایل های ترتیبی:

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

می توانید در پست قبلی یادبگیرید که چگونه یک فایل ترتیبی بسازید

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

توابع و زیرروال های معمول در نوشتن در فایل های ترتیبی :

نقل قول: ٌWrite
Print

Write :

طرز استفاده :

کد:
Write#عبارت2,عبارت1,شماره فایل

مثال :

کد:
Write#1,"PowerBASIC Is a Powerful Compiler"

شماره فایل ،عددی است که هنگام باز کردن یا ساختن فایل تعیین کرده اید

عبارت 1 و 2 و... اطلاعاتی است که می خواهید به ترتیب 1 به آخر در فایل نوشته شود

که تقریبا عبارت اول اجباری و بقیه اختیاری هستند(عبارات می توانند خالی از حروف باشند)

که در صورتی که آنها را از هم جدا نکنید همگی به عنوان یک عبارت به شمار می آید و در فایل

نوشته می شود

نکته :

نقل قول: به جای , در بین عبارات می توانید از ; نیز استفاده کنید(فقط یکی از آنها)

---------------------------------------------------------------------
Print :

این تابع نیز کار تابع Write را می کند اما کمی پیشرفته تر.البته می توان این کارها را

با Write نیز پیاده سازی کرد اما در Print به صورت آماده وجود دارد

طرز استفاده را بهتر است انگلیسی بگذاریم تا درک آن راحتتر شود :

کد:
PRINT # fNum&, [ExpList] [SPC(n)] [TAB(n)]

مثال :

کد:
Print#1,"PowerBASIC"

fnum شماره فایل ، Explist اطلاعاتی است که باید در فایل نوشته شود ، SPC به تعداد n فضای خالی

ایجاد می کند و Tab به تعداد n تب می زند

نقل قول: Tab و SFC اختیاری اند

وجود حداقل یک عبارت در Print اجباری است حتی یک عبارت خالی = ""

در اینجا نیز اگر بخواهید چندین عبارت را پشت سر هم تایپ کنید باید از , یا ; استفاده کنید

که این دو هر کدام تفوات هایی دارند :

نقل قول: اگر از , استفاده کنید بین عبارات فاصله خالی زیادی بوجود می آید و باعث هدر رفتن فضای دیسک

می شود

اما اگر از ; استفاده کنید بین عبارات تنها فاصله ای جزیی وجود دارد

این تابع نوع دیگری نیز تعریف می شود :

کد:
PRINT # fNum&, array$()

یعنی شما می توانید آرایه ای رشته ای را با این تابع در یک فایل بنویسید

توضیح :

fnum شماره فایل و array$() نام آرایه است
----------------------------------------------------------------------------------
خواندن از فایل های ترتیبی :

توابع معمول در خواندن از فایل های ترتیبی :

نقل قول: Input
Line Input
----------------------------------------------------
Input :

با این تابع می توانید اطلاعات را با روشی که با توابع Write یا Print در فایل نوشته اید را بخوانید

طرز استفاده :

کد:
Input#متغیر2,متغیر1,شماره فایل

اطلاعات خوانده شده در متغیرها ذخیره می شود که متغیر اول اجباری و بقیه متغیر ها اختیاری و در صورت

نیاز تعریف می شوند

برای مثال اگر با تابع Write اعداد 1 و2 را در فایلی نوشتید می توانید آنها را به صورت زیر

استخراج کنید :

کد:
Input#1,x&,y&
----------------------------------------------------------
Line Input :

این تابع برای خواندن خط به خط از درون یک فایل استفاده می شود :

کد:
LINE INPUT #filenum&, string_variable

String_Variable همان متغیر برای ذخیره کردن خط خوانده شده است

این تابع به صورت زیر نیز تعریف می شود :

کد:
LINE INPUT #filenum&, Arr$() [RECORDS rcds] [TO count]

این نوع بیشتر برای کار با آرایه ها به کار می رود;مثلا ما یک آرایه را در فایل می نویسیم

حال می خواهیم آنرا باز یابی کنیم

Arr$() آرایه رشته ای برای ذخیره اطلاعات بدست آمده است

نقل قول: در پرانتز باید اندیس را تعیین تا اطلاعات در آن ذخیره شود

در صورتی که برای ذخیره اطلاعات از CRLF$ استفاده کرده باشید،در حقیقت اطلاعات را به صورت

رکورد نوشته باشید می توانید شماره رکورد مورد نطر را به جای rcds در RECORDS rcds قرار دهید تا از

آن خوانده شود(این قسمت اختیاری است)

اگر می خواهید تعداد مشخصی خط را بخوانید مثلا 5 خط می توانید تعداد خطها را به جای

Count در To Count بگذارید (این قسمت نیر اختیاری است)

نقل قول: این تابع بیشتر موقعی کاربرد دارد که اطلاعات را با Print در فایل نوشته باشیم

------------------------------------------------------------------------

بستن فایل باز شده :

کد:
Close#شماره فایل

اگر فایلی را بازکنید پس از انجام کارهای خود باید آن را ببندید زیرا در غیر این صورت با مشکلاتی مواجه

خواهید شد ، مثلا در جاهای دیگر نمی توانید آن را دوباره باز و عملیاتهایی را روی آن انجام دهید

نکته :

نقل قول: در صورتی که از Close خالی استفاده کنید،همه فایلهای باز را می بندد

می توانید چندین فایل را با یک دستور Close ببندید :

کد:
Close#شماره فایل2,شماره فایل1 , ...

=================================================

یک مثال ساده و آموزنده :

کد:
#COMPILE EXE
DECLARE FUNCTION ReadData() AS STRING
'=================Main Function======================
FUNCTION PBMAIN() AS LONG
CALL WriteData()
DIM GetData AS STRING
GetData=ReadData()
MSGBOX GetData
END FUNCTION
'====================================================
'=================Write Data=========================
SUB WriteData()
OPEN "C:\Test.txt" FOR OUTPUT AS 1
WRITE#1,"This Is a Test File"
CLOSE #1
END SUB
'=====================================================
FUNCTION ReadData() AS STRING
DIM GetText AS STRING
OPEN "C:\Test.txt" FOR INPUT AS 1
INPUT#1,GetText
CLOSE #1
FUNCTION=GetText
END FUNCTION

ما که دیگه توی ایران ویج پیر شدیم 040 کم کم باید جامون رو بدیم به جوونا 028
۱۵-آبان-۱۳۸۷, ۱۹:۰۱:۰۶
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : Di Di, EleRam, saalek
yeketaz آفلاین
کاربر با تجربه
****

ارسال‌ها: 744
موضوع‌ها: 123
تاریخ عضویت: اسفند ۱۳۸۶

تشکرها : 520
( 1050 تشکر در 294 ارسال )
ارسال: #33
RE: آموزش PowerBASIC
کار با فایلها در پاوربیسیک (قسمت سوم)
===============================================
کار با فایل های باینری :
-=-=-=-=-=-=-=-=-=-=-=-=-=
در این نوع فایل ها اطلاعات را به صورت بایت به بایت و در مکانهای مشخص ذخیره می کنیم
-=-=-=-=-=-=-=-=-=-=-=-=-=
نوشتن در فایل های باینری :

در این نوع فایل ها ما از تابع Put برای نوشتن استفاده می کنیم :

کد:
Put# اطلاعات,محل نوشتن,شماره فایل

مثال :

کد:
Put #1,1,Arr()

این کد در بایت 1 فایلی که به شماره 1 باز شده است آنچیزی که در آرایه Arr است را می نویسد

شماره فایل که توضیح داده شده،محل نوشتن بایتی است که می خواهیم اطلاعات را در آن بنویسیم.

نقل قول: محل نوشتن در فایل اختیاری است و در صورت تعیین نشدن هرجایی که اشاره گر باشد

اطلاعات نوشته می شود(درباره اشاره گر توضیح خواهم داد)

به همین راحتی اطلاعاتی را در یک فایل باینری می نویسیم

-=-=-=-=-=-=-=-=-=-=-=-=-=
خواندن اطلاعات از فایل های باینری :

برای این کار نیز بیشتر از تابع Get استفاده می کنیم :

کد:
Get# متغیر برای ذخیره اطلاعات,محل خواندن,شماره فایل

مثال :

کد:
Get #1,1,Arr()

این کد اطلاعاتی را از فایل شماره 1 می خواند و در آرایه Arr ذخیره می کند

محل خواندن بایتی است که باید اطلاعات از آنجا خوانده شود و متغیر حاوی اطلاعات خوانده شده

خواهد بود

نقل قول: محل خواندن باز هم اختیاری است و در صورت تعیین نشدن از محل اشاره گر خوانده می شود

تابع Get را طور دیگری نیز تعریف می کنیم(پیشرفته تر) :

کد:
GET [#] filenum&, [RecPos], Arr() [RECORDS rcds] [TO count]

filenum به شماره فایل اشاره دارد،RecPos محل خواندن را تعیین می کند،Arr() همان متغیر یا آرایه ای است

که اطلاعات خوانده شده در آن ذخیره می شود،rcds در عبارت RECORDS rcds به رکورد مورد نظر اشاره می کند

و count در عبارت To count به تعداد رکورد هایی اشاره دارد که می خواهیم خوانده شود
==================================================

نکاتی در مورد کار با فایلها :

اشاره گر :

نقل قول: به محل نوشتن یا خواندن اطلاعات اشاره گر گویند که می توان آن را تعیین کرد :

کد:
SEEK [#] filenum&, position&&


filenum شماره فایل و position محلی است که می خواهیم اشاره گر به آنجا منتقل شود

مثلا :

کد:
Seek#1,20

در این مثال اشاره گر در فایل 1 به بایت 20 می رود

حال اگر در توابع Put یا Get محل نوشتن یا خواندن را تعیین نکنید به طور پیش فرض عملیاتها

در بایت 20 انجام می شود

تغییر نام و حذف یک فایل :

نقل قول: تغییر نام یک فایل :

کد:
NAME filespec1$ AS filespec2$

filespec1 آدرس و نام فایل قدیمی و filespec2 آدرس و نام جدید می باشد

((از این تابع می توانید برای انتقال فایل و تغییر پسوند فایل نیز استفاده کنید))

مثال :

کد:
Name "C:\Text1.txt" As "C:\Text2.txt"

فایل Text1 در درایو C به نام Text2 تغییر می یابد

حذف یک فایل :

کد:
Kill filespec

filespec آدرس فایلی است که می خواهیم پاک شود

کپی کردن یک فایل :

نقل قول:
کد:
FILECOPY sourcefile, destfile

sourcefile آدرس فایل منبع و destfile آدرسی است که می خواهیم فایل منبع را در آنجا کپی کنیم

مثال :

کد:
FileCopy "C:\Text1.txt"."D:\Text1.txt"

در اینجا فایل Text1 با همان نام در درایو D کپی می شود

بحث کار با فایل ها بحث بسیار بزرگی است و سعی شد در این قسمت به نکات مهم اشاره شود

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

برای تکمیل اطلاعات خود می توانید به Help پاوربیسیک نیز مراجعه و از قدرت پاوربیسیک هرچه بیشتر

استفاده کنیدWink

ما که دیگه توی ایران ویج پیر شدیم 040 کم کم باید جامون رو بدیم به جوونا 028
۱۶-آبان-۱۳۸۷, ۲۲:۳۸:۵۱
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : ajlajlajl, EleRam, saalek


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  Powerbasic download mohamadpk 4 4,695 ۱۷-خرداد-۱۳۹۰, ۰۰:۱۱:۳۱
آخرین ارسال: 132547698
  درخواست PowerBasic Decompiler - دیکامپایلر پاور بیسیک hvig 0 2,464 ۲۰-بهمن-۱۳۸۹, ۲۳:۴۰:۵۵
آخرین ارسال: hvig
  نوشتن پلاگین برای Ollydbg در PowerBASIC yeketaz 0 2,631 ۰۱-بهمن-۱۳۸۷, ۲۲:۳۲:۴۲
آخرین ارسال: yeketaz
  PowerBASIC Console Compiler 5 yeketaz 0 2,883 ۱۷-آبان-۱۳۸۷, ۱۴:۳۴:۳۳
آخرین ارسال: yeketaz

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS