PDA

View Full Version : سوال درباره کامل کردن برنامه



nimar9
جمعه 01 شهریور 1392, 15:25 عصر
سلام خدمت اساتید محترم
من یه مشکلی داشتم تو کدم که اینجوریه.

D1M1=5
D1M2=12
D2M1=6
D2M2=4
Dastan = fix(1+rnd()*2-1)
mozo = fix(1+rnd()*2-1)
Kalame="D" & Dastan & "M" & mozo
TJakhali=Kalame
For i = 1 To TJakhali
Label1.Caption = Label1.Caption + "___"
Next i


مشکلش اینه که تو TJakhali رشته حساب می کنه من می خوام که اون عددهای بالا که تو یه کلمه هستند به Jakhali تغییر کنه و for یه درستی کار کنه ممنون میشم اگر کمکم کنید.
با تشکر از سایت خوبتون

miladatashin
جمعه 01 شهریور 1392, 15:59 عصر
کدی که شما گذاشتید که اصلا مشخص نیست چی کار میکنه. ولی خب با تابع val میتونید رشته رو به عدد تبدیل کنید

nimar9
جمعه 01 شهریور 1392, 17:01 عصر
کدی که شما گذاشتید که اصلا مشخص نیست چی کار میکنه. ولی خب با تابع val میتونید رشته رو به عدد تبدیل کنید

کد من اینه که اون نوشته های بالا رو (D1M1 , D1M2 , D2M1 , D2M2) رو به صورت رندوم انتخاب می کنه و جواب هر کدوم که یه عدد هست رو تو حلقه For قرار میده و به تعداد اون ___ قرار میده. که تو قسمت TJakhali مشکل داره و نمیتونه نوشته ' D عدد رندوم1 M عدد رندوم2 ' رو کنار هم قرار بده. می خوام بدونم که چی کار کنم تا درست بشه

Mr'Jamshidy
جمعه 01 شهریور 1392, 17:37 عصر
برای تبدیل رشته به عدد راه های زیادی وجود داره

a = Val(b) 'خروجی از نوع Double
c = CInt(d) 'خروجی از نوع Integer
e = CLng(f) 'خروجی از نوع Long
g = CSng(h) 'خروجی از نوع Single
i = CDbl(j) 'خروجی از نوع Double
k = CBool(l) 'خروجی از نوع Boolean
m = CStr(n) 'خروجی از نوع String

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

در مثال زیر b برابر با رشته "123456"

Private Sub Form_Load()
a = "123456"
b = a
End Sub

اما در مثال زیر b برابر با عدد 123456

Private Sub Form_Load()
Dim b As Long
a = "123456"
b = a
End Sub


و مورد آخر

سعی کن همیشه متغیر ها رو تعریف کنی

nimar9
جمعه 01 شهریور 1392, 17:49 عصر
برای تبدیل رشته به عدد راه های زیادی وجود داره
و مورد آخر
سعی کن همیشه متغیر ها رو تعریف کنی

سلام داداش در مورد راهنماییت واقعا ممنون در این مثال زیر اسم a چی میشه ؟
a = "15153"
فکر کنم متغیر هست . من میخوام رشته رو به این متغیر تغییر بدم. تا جواب متغیر که رشته هست رو نشون بده.
تو این توضیحاتی که بالا دادید جوابم نبود یعنی اینارو میدونستم برای رشته به عدد و برعکس بود و تعریف متغیر بود.

miladatashin
جمعه 01 شهریور 1392, 18:17 عصر
راهی برای این کار وجود نداره جز شرط. در ضمن این الگوریتم شما خوب نیست.

Randomize Timer
D1M1 = 5
D1M2 = 12
D2M1 = 6
D2M2 = 4
Dastan = Fix(1 + Rnd() * 2)
mozo = Fix(1 + Rnd() * 2)
Kalame = "D" & Dastan & "M" & mozo
TJakhali = Kalame

Select Case Kalame
Case ("D1M1"): TJakhali = 5
Case ("D1M2"): TJakhali = 12
Case ("D2M1"): TJakhali = 6
Case ("D2M2"): TJakhali = 4
End Select

Label1.Caption = ""
For i = 1 To TJakhali
Label1.Caption = Label1.Caption + "___"
Next i

nimar9
جمعه 01 شهریور 1392, 19:00 عصر
راهی برای این کار وجود نداره جز شرط. در ضمن این الگوریتم شما خوب نیست.

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

vbhamed
شنبه 02 شهریور 1392, 07:52 صبح
سلام
اينم يك راه ديگه
Randomize Timer

Dim x() As String
x = Split("D1M1,5,D1M2,12,D2M1,6,D2M2,4", ",")

Dastan = Fix(1 + Rnd() * 2)
mozo = Fix(1 + Rnd() * 2)
kalame = "D" & Dastan & "M" & mozo

For i = 0 To UBound(x) Step 2
If kalame = x(i) Then Label1.Caption = String$(x(i + 1) * 3, "_"): Exit For
Next