PDA

View Full Version : سوال: رفع مشکل سورس ـ خطای رنج آرایه



roo.row
سه شنبه 23 تیر 1394, 18:15 عصر
با سلام
یه برنامه ساده هست ولی تو خط هفتمش(replace)ارور رنج میگیره
میشه بگید چجوری مشکل رو حل کنم؟

Dim a(1 To 27)
Dim b
Dim c(1 To 26)

Private Sub Command1_Click()
For b = 1 To 27
a(b) = Text1.Text
a(b) = replace(a(b + 1), c(b), c(27 - b))
Text2.Text = a(b)
Next b

End Sub

Private Sub Form_Load()
c(1) = "a"
c(2) = "b"
c(3) = "c"
c(4) = "d"
c(5) = "e"
c(6) = "f"
c(7) = "g"
c(8) = "h"
c(9) = "i"
c(10) = "j"
c(11) = "k"
c(12) = "l"
c(13) = "m"
c(14) = "n"
c(15) = "o"
c(16) = "p"
c(17) = "q"
c(18) = "r"
c(19) = "s"
c(20) = "t"
c(21) = "u"
c(22) = "v"
c(23) = "w"
c(24) = "x"
c(25) = "y"
c(26) = "z"

End Sub




موفق باشید

samiasoft
چهارشنبه 24 تیر 1394, 00:29 صبح
درود

هدفتون از این کدنویسی چی بوده؟
اگر صورت مساله رو بگید بهتر میتونیم کمک کنیم. من که سردرنیاوردم منظورتون چی هست از اینکار.

meys34
چهارشنبه 24 تیر 1394, 14:39 عصر
سلام

احتمالا اینجوری درست میشه:

For b = 1 To 27
a(b) = Text1.Text
a(b) = replace(a(b), c(b), c(27 - b + 1))
Text1.Text = a(b)
Next b

roo.row
چهارشنبه 24 تیر 1394, 18:54 عصر
با سلام

این برنامه دو تکس باکس مولتی لاین دارد به همراه یک کامند
من می خواهم در این برنامه یک تکسی رو به تکس باکس اول بدهم
سپس نرم افزار بیاد و حروف رو برحسب تقارن عوض کنه مثلا a رو تبدیل میکنه به z
و b رو تبدیل میکنه به y و در نهایت هم اون رو در تکس دو نمایش می دهد

اروری هم که میگیره در رابطه با خارج از محدوده بودن است (تو همون خطی که گفتم)

با تشکر

roo.row
چهارشنبه 24 تیر 1394, 19:19 عصر
با سلام کد رو کمی تغییر دادم هیچکاری انجام نمی ده ولی ارور هم نمی گیره :

Dim a(1 To 27) As String
Dim b As Integer
Dim c(1 To 26) As String

Private Sub Command1_Click()
a(1) = Text1.Text
For b = 1 To 26
a(b) = Replace(a(b + 1), c(b), c(27 - b))
Text2.Text = a(b + 1)
Next b
For b = 1 To 27
Print a(b)
Next b
End Sub

Private Sub Form_Load()
c(1) = "a"
c(2) = "b"
c(3) = "c"
c(4) = "d"
c(5) = "e"
c(6) = "f"
c(7) = "g"
c(8) = "h"
c(9) = "i"
c(10) = "j"
c(11) = "k"
c(12) = "l"
c(13) = "m"
c(14) = "n"
c(15) = "o"
c(16) = "p"
c(17) = "q"
c(18) = "r"
c(19) = "s"
c(20) = "t"
c(21) = "u"
c(22) = "v"
c(23) = "w"
c(24) = "x"
c(25) = "y"
c(26) = "z"

End Sub

vbhamed
چهارشنبه 24 تیر 1394, 19:39 عصر
سلام
خب مشخصه باید خطا بگیره، شما آرایه a رو از 1 تا 27 تعریف کردین، حلقه تون هم تا 27 حرکت می‌کنه و وقتی به 27 میرسه b+1 میشه 28 و این یعنی خارج از محدوده

roo.row
پنج شنبه 25 تیر 1394, 16:05 عصر
با سلام

اگر دقت کرده باشید حلقه من از 1 تا 26 هست نه از 0 تا 26
اگر هم اشتباهی بوده ممنون میشم جامع تر توضیح بدید

با تشکر

vbhamed
پنج شنبه 25 تیر 1394, 23:13 عصر
سلام
فکر کنم شما پست من رو نخوندین، من گفتم حلقه شما از 1 تا 27 حرکت می‌کنه نه 0 تا 26
در پست شماره 1 خودتون حلقه For رو ببینید

pbm_soy
جمعه 26 تیر 1394, 03:25 صبح
با سلام کد رو کمی تغییر دادم هیچکاری انجام نمی ده ولی ارور هم نمی گیره :

برای اینکه مشکل کارت را پیدا کنی باید برنامه را Trace کنید یعنی خط به خط اجرا کنید و مقادیر آرایه ها و متغیرهای دیگر را بعد از اجرای هرخط بررسی کنید و ببینید که آیا آن مقداری که انتظار دارید هستند یا خیر
و یا راه دیگر اینکه موقتا اون حلقه for دومی را حذف کنید و در حلقه For اولی هم اولین خطی که مینویسید این خط زیر باشه تا ببیندید چه مقداری را براتون برمیگرداند

Print Replace(a(b + 1), c(b), c(27 - b))

roo.row
جمعه 26 تیر 1394, 16:12 عصر
با سلام
حل نشد اگه ممکنه بیشتر راهنمایی کنید
خیلی دنبالش رفتم هم کد سالم هست هم اروری نمی گیره


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

موفق باشید

vbhamed
شنبه 27 تیر 1394, 14:52 عصر
سلام
طبق برنامه اولین پست، دو خط بعد از For عنصر b+1 آرایه a رو می‌خونید در صورتیکه مقداری هنوز داخلش ثبت نشده پس قاعدتا جوابی هم نمی‌گیرید، البته شاید هم جایی دیگه تو برنامه پر میشه ولی شما نگفتید
ولی در کل مشکلتون رو بگین چیه و قراره چه کاری با این کدها انجام بشه

roo.row
یک شنبه 28 تیر 1394, 12:36 عصر
با سلام

کار اصلی اون

من می خواهم در این برنامه یک تکسی رو به تکس باکس اول بدهم
سپس نرم افزار بیاد و حروف رو برحسب تقارن عوض کنه مثلا a رو تبدیل میکنه به z
و b رو تبدیل میکنه به y و در نهایت هم اون رو در تکس دو نمایش می دهد

هست

همینجوری نوشتمش ولی تعجبم این است که چرا عمل نمی کند ؟؟

vbhamed
یک شنبه 28 تیر 1394, 18:44 عصر
سلام
این کد رو تست کنید، هم با حروف بزرگ کار می‌کنه هم کوچک
Private Function Revers(s As String)

Dim x$

Select Case Asc(s)
Case 65 To 90: x = 155
Case 97 To 122: x = 219
Case Else
Revers = s
Exit Function
End Select

Revers = Chr(x - Asc(s))

End Function

Private Sub Form_Load()

Dim a$, i%
a = Text1
'a = "ABCD This is a test wxyz"

For i = 1 To Len(a)
Mid$(a, i, 1) = Revers(Mid$(a, i, 1))
Next

Text2 = a

End Sub