PDA

View Full Version : کار Split چیست



vahid_d_0101
شنبه 23 شهریور 1387, 20:13 عصر
بچه ها یه خط از یه برنامه هست که من نمیدونم برای چیه اینجا میزارم لطف کنید به طور کامل توضیح بدید

SampleSolution = Split(txtOutput.Text, vbCrLf, , vbTextCompare)
کار Split چیست

r0ot$harp
شنبه 23 شهریور 1387, 20:51 عصر
بچه ها یه خط از یه برنامه هست که من نمیدونم برای چیه اینجا میزارم لطف کنید به طور کامل توضیح بدید

SampleSolution = Split(txtOutput.Text, vbCrLf, , vbTextCompare)کار Split چیست

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


با یه مثال راحت ::



Private Sub Form_Load()

Dim a As String

Dim Buffer() As String

Dim Count As String

a = "ehsan,ali,mohammad,mohsen"

Buffer = Split(a, ",")

Count = UBound(Buffer)

For i = 0 To Count
List1.AddItem Buffer(i)
Next i

End Sub


باتشکر احسان

xxxxx_xxxxx
شنبه 23 شهریور 1387, 21:37 عصر
با اجازه آقا احسان.

با توجه به قطعه کد بالا
تابع split یه رشته میگیره (پارامتر اول) و اونو به چند قسمت تقسیم میکنه (با توجه به پارامتر دوم) و قسمت های اونو به عنوان خروجی در متغیر بافر به صورت یک آرایه میریزه.

تابع Ubound هم که تعداد خانه های یک آرایه رو بر می گردونه.(شماره خانه آخر). این تابع احتمالا باید در موارد دیگر هم کاربرد داشته باشه ولی من همینو در موردش می دونم.

vahid_d_0101
شنبه 23 شهریور 1387, 22:43 عصر
Text1.Text = ""
Dim vahid As Integer
Dim i As Integer
Dim temp As String
Dim SampleSolution As Variant
Dim SamplePos As Variant

LoadChessBoard

SampleSolution = Split(txtOutput.Text, vbCrLf, , vbTextCompare)

vahid = List1.ListIndex + 1
SamplePos = Split(Trim(SampleSolution(CInt(vahid) - 1)), " ", , vbTextCompare)
For i = 0 To intSize - 1
NRect(CInt(SamplePos(i)), i + 1).FillColor = &HFF&
NRect(CInt(SamplePos(i)), i + 1).BorderColor = &HFF&
Next i
اون کدی که میبینید میاید یه عدادی رو از توی یه تکست باکس که عداد به صورت زیر هست میخونه
12654
32654
12354
32325
.....
خوب حالا من اومدم به جای اون تکست باکس یه لیست باکس گذاشتم که یکی از کدهارو تغییر دادم و اونو از توی لیست میخونم ولی اون کدی که بهتون گفته بودم رو نمیتونم هیچ کاریش بکنم (میخوام تکست باکس رو کلا از فرم حذف کنم) حالا به جای اون خطی که گذاشته بودم چی رو بنویسم تا برنامه خطا نده

xxxxx_xxxxx
شنبه 23 شهریور 1387, 23:19 عصر
Text1.Text = ""
Dim vahid As Integer
Dim i As Integer
Dim temp As String
Dim SampleSolution As Variant
Dim SamplePos As Variant

LoadChessBoard

SampleSolution = Split(txtOutput.Text, vbCrLf, , vbTextCompare)

vahid = List1.ListIndex + 1
SamplePos = Split(Trim(SampleSolution(CInt(vahid) - 1)), " ", , vbTextCompare)
For i = 0 To intSize - 1
NRect(CInt(SamplePos(i)), i + 1).FillColor = &HFF&
NRect(CInt(SamplePos(i)), i + 1).BorderColor = &HFF&
Next i

بجای text از list استفاده کردی و اینجا خطا میده؟ اگه اینطوره نیازی به این دستور نیست.

vahid_d_0101
شنبه 23 شهریور 1387, 23:32 عصر
بابا من باید به جای اون کد قرمزه یه چیزیبنویسیم که به جای اون تکست باکسی که تو خط فرمان هست یه لیست باکس بزارم
یعنی
txtOutput.Text = list1 باشه
یعنی یه کاری بکنیم که خروجی SampleSolution
وقتی به جای تکستباکس لیست باکس میزاریم برابر باشه
در ضمن اگه اونو پاک کنم خط SamplePos = Split(Trim(SampleSolution(CInt(vahid) - 1)), " ", , vbTextCompare)
گیر میده

xxxxx_xxxxx
یک شنبه 24 شهریور 1387, 00:13 صبح
دوست عزیز منم پرسیدم تا مطمئن شم.
اینطوری که کاره شما راحت تر میشه.
از یه حلقه استفاده کن و از ابتدای لیست تا انتها همه آیتم ها رو منتقل کن تو خونه های آرایه. همین/

vahid_d_0101
یک شنبه 24 شهریور 1387, 00:15 صبح
میتونید یه کم واضح تر توضیح بدید

xxxxx_xxxxx
یک شنبه 24 شهریور 1387, 00:30 صبح
فقط از قبل باید حداکثر تعداد آیتم های لیستو بدونی تا متغیر SampleSolution رو تو برنامه به صورت آرایه تعریف کنی.
اصلا شما خونه های این آرایه رو 100 درنظر بگیر (کد اصلاح شد)
بجای خط قرمزه بزار:



for i=0 to list1.listcount-1
list1.listindex=i
if list1.listindex="" then exit for
SampleSolution(i)=list1.listindex
next i

vahid_d_0101
یک شنبه 24 شهریور 1387, 00:32 صبح
از این ایراد میگیره

SampleSolution(i) = List1.List(i)
نمیدونم چرا

vahid_d_0101
یک شنبه 24 شهریور 1387, 00:59 صبح
بازم نشد هر کاری میکنم پیغام میده

r0ot$harp
یک شنبه 24 شهریور 1387, 01:42 صبح
وحید جان به نظره من بهتره بگی دقیقا چی می خوای من همون رو اگه تونستم واست بنویسم !!!




باتشکر احسان

vahid_d_0101
یک شنبه 24 شهریور 1387, 01:52 صبح
میخوام تکست باکس رو حذف کنم و کلا همون لیست باکسه باشه

r0ot$harp
یک شنبه 24 شهریور 1387, 02:08 صبح
میخوام تکست باکس رو حذف کنم و کلا همون لیست باکسه باشه


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






باتشکر احسان

vahid_d_0101
یک شنبه 24 شهریور 1387, 02:14 صبح
یه لحظه کدی که من دادم رو اجرا کن و روی عداد داخل لیست بکس کلیک کن بعد برو برنامه ای که نوشته ای رو نگاه کن ببین چه مشکلی داره

r0ot$harp
یک شنبه 24 شهریور 1387, 02:30 صبح
یه لحظه کدی که من دادم رو اجرا کن و روی عداد داخل لیست بکس کلیک کن بعد برو برنامه ای که نوشته ای رو نگاه کن ببین چه مشکلی داره

حاجی به جونه احسان این دیگه درست هست . نه نگو :قهقهه::قهقهه::قهقهه::قهقهه:: شویق:

vahid_d_0101
یک شنبه 24 شهریور 1387, 10:46 صبح
دستت درست
خیلی حال دادی ولی چرا دوتا لیستباکس گذاشتی?
من الان اون دوتا لیست باکس رو باهم کردم واقعا دستتون درد نکنه

vahid_d_0101
یک شنبه 24 شهریور 1387, 11:11 صبح
اقا احسان دوباره سلام: :قهقهه::قهقهه::قهقهه:
خوب اون که حل شد حالا من این سورس را که یه کم اب و جاروش کردم رو میزارم میخوام یه راه حل برای سوالم پیدا کنید:متعجب::متعجب:
اگر دقت کرده باشید وقتی که یه عدد بزرگتر از 9 رو وارد میکنیم برنامه میتونه اون اعداد توی تکست بوکس را بیاره و هنگ میکنه:عصبانی++:
خوب حالا میخوام یه تکست بوکس باشه کخ کاربر بیاد تعداد اعداد نمایش داده شده را انتخاب کنه و اون وقت برنامه اون اعداد رو نشون بده مثلا برای عدد 10 اگر 150000 نوع عدد داریم کاربر فقط خواسته باشه 5 تا از این حالت هارو ببینه ت اابرنامه هنگ نکنه(اگر کاربر خواست یه تیک باشه که یتونه کل اعداد رو هم مشاهده کنه:متفکر:)
ببخشید این قدر زحمت دادیم انشاالله جبران میکنیم:لبخند::لبخند::تشویق:

r0ot$harp
یک شنبه 24 شهریور 1387, 15:31 عصر
اقا احسان دوباره سلام: :قهقهه::قهقهه::قهقهه:
خوب اون که حل شد حالا من این سورس را که یه کم اب و جاروش کردم رو میزارم میخوام یه راه حل برای سوالم پیدا کنید:متعجب::متعجب:
اگر دقت کرده باشید وقتی که یه عدد بزرگتر از 9 رو وارد میکنیم برنامه میتونه اون اعداد توی تکست بوکس را بیاره و هنگ میکنه:عصبانی++:
خوب حالا میخوام یه تکست بوکس باشه کخ کاربر بیاد تعداد اعداد نمایش داده شده را انتخاب کنه و اون وقت برنامه اون اعداد رو نشون بده مثلا برای عدد 10 اگر 150000 نوع عدد داریم کاربر فقط خواسته باشه 5 تا از این حالت هارو ببینه ت اابرنامه هنگ نکنه(اگر کاربر خواست یه تیک باشه که یتونه کل اعداد رو هم مشاهده کنه:متفکر:)
ببخشید این قدر زحمت دادیم انشاالله جبران میکنیم:لبخند::لبخند::تشویق:

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

یه خورده در موردش توضیح بده .



باتشکر احسان

vahid_d_0101
یک شنبه 24 شهریور 1387, 15:44 عصر
شما تا حالا اون قضیه رو که ۸ وزیر شطرنج رو جوری توی خانه های شطرنج بزارید تا همدیگر رو تحدید نکنن دیدی
این اون کارو انجام میده فقط چیز زیادی که داره شما خودتون میتونید صفحه شطرنج رو کوچیک یا بزرگ کنید.
با تشکر از اقا احسان که خیلی راحنماییم کردن اقا احسان مشکل دوم حل شد خیلی خیلی ممنون خودم اونو درست کردم بازم از راهنمایی های قبلی خیلی خیلی متشکرم