PDA

View Full Version : سوال: تجزیه و تحلیل محتوای TextBox



arsp110
دوشنبه 08 خرداد 1391, 19:47 عصر
با عرض سلام و وقت بخیر خدمت دوستان
بنده یه برنامه نویس مبتدی هستم و رشتم مکانیک هست حد تا حدودی برنامه نویسی هم کردم و به علت سادگی کار با وی بی رو انتخاب کردم
دارم یه برنامه مینویسم که سر نوشتن کد به مشکل بر خوردم اگر ممکن هست کمکم کنید ممنون میشم
سوالم این هست:

من توی یه تکست باکس میخام با گذاشتن یک علامت مانند کلمه point برنامه روی سه مختصات داده شده بعد از ان یکسری عملیات ریاضی انجام دهد به عنوان مثال:

point
X16.501 Y34.2575
X191.143 Y721.2
X6.3489 Y-773.162

در واقع میخام برنامه تکست باکس رو سرچ کنه بعد اگر به کلمه
point
رسید سه مختصات x و y بعدی رو در هم ضرب کنه
E=x1.y1+x2.y2+z3.y3

البته دو یا سه محدودیت هم در مختصات نقاط داده شده داریم
1- نقاط بالا همون طور که معلوم هست اندیس ندارند
2- و ممکن هست بین اعداد ایکس و وای فاصله هم باشه به این صورت
X 191.143
Y 721.2

3- و نیز ممکن هست علامت منفی هم داشته باشند
Y-773.162

اگر لطف کنید و کمکم کنید ممنون میشه چون در حال حاضر برنامم متوقف شده
یه دنیا ممنون
تشکر

محسن واژدی
دوشنبه 08 خرداد 1391, 22:12 عصر
سلام علیکم

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


البته دو یا سه محدودیت هم در مختصات نقاط داده شده داریم
1- نقاط بالا همون طور که معلوم هست اندیس ندارند
2- و ممکن هست بین اعداد ایکس و وای فاصله هم باشه به این صورت
X 191.143
Y 721.2

Y-773.162
به این صورت که میفرمائید کار قدری پیچیده میشود به عبارتی بایستی هوشمندی برنامه را افزایش دهیم، خب چرا اینطور باشد از همان ابتدا اطلاعات را مرتب شده وارد میکنیم، کما که در این نمونه X و Y با "," و مقادیر هرکدام با "=" از هم تفکیک شده اند

موفق باشید
یاعلی

arsp110
سه شنبه 09 خرداد 1391, 00:22 صبح
سلام اقا محسن خیلی ممنون که پاسخ گذاشتید
بله جق با شماست یه مقداری بایستی هوشمندی برنامه رو افزایش داد
اما تا بحال لابعد برای شما هم مواقعی پیش امده که با مواردی خاص برخورد میکنید و به قول شما مجبور میشوید هوشمندی برنامه رو بالا ببرید مخصوصا در مواردی که کاربر باید داده ها رو وارد کند
و متا سفانه در این جا که میرسه دیگه بحث سواد و تخصصی برنامه نویسی پیش میاد که بنده ازش فاقد هستم
باز هم یه دنیا ممنون که برام وقت گذاشتید
راستی اگه بشه کاربر همین اطلاعات رو مستقیما وارد یه تکست باکس کنه عالی میشد
باز هم ممنون

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

محسن واژدی
سه شنبه 09 خرداد 1391, 22:41 عصر
سلام علیکم
کد زیر را جایگزین کد قبلی فرم کنید:
Option Compare Text
Private Sub Command1_Click()
On Error Resume Next
Dim sPth$, sLI$
Dim iFF%
Const sToken$ = "point"
Dim sML1$(), sML2$()
Dim sngX!, sngY!
Dim sStatus$
Dim iCNum%
Dim sngXYRes!(2)
Dim i%, sCX$, sCY$, bFX As Boolean, bFY As Boolean

iFF% = FreeFile
sPth$ = App.Path & "\data.txt"

Open sPth$ For Input As #iFF%
List1.Clear
Do
Line Input #iFF%, sLI$
If Trim(sLI$) = sToken$ Then
try_another:
iCNum% = -1
Erase sngXYRes!
Do
Line Input #iFF%, sLI$
If sLI$ Like "*X*Y*" Then
iCNum% = iCNum% + 1
sCX$ = "": sCY$ = ""
bFX = False: bFY = False
For i% = 1 To Len(sLI$)
If Mid(sLI$, i, 1) = "X" Then bFX = True
If Mid(sLI$, i, 1) = "Y" Then bFY = True
If bFX And Not bFY Then
sCX$ = sCX$ & AddToCurNum(Mid(sLI$, i, 1))
ElseIf bFX And bFY Then
sCY$ = sCY$ & AddToCurNum(Mid(sLI$, i, 1))
End If
Next 'i
sngXYRes!(iCNum%) = CSng(sCX$) * CSng(sCY$)
End If


Loop Until EOF(iFF%) Or (Not sLI$ Like "*X*Y*")
List1.AddItem sngXYRes!(0) & " + " & sngXYRes!(1) & " + " & sngXYRes!(2) & " = " & sngXYRes!(0) + sngXYRes!(1) + sngXYRes!(2)
If Trim(sLI$) = sToken$ Then GoTo try_another
End If
Loop Until EOF(iFF%)
End Sub
Function AddToCurNum(sCurChr$) As String
If (sCurChr$ = "." Or sCurChr$ = "-") Or (Asc(sCurChr$) <= Asc("9") And Asc(sCurChr$) >= Asc("0")) Then AddToCurNum = sCurChr$
End Function



موفق باشید