עבור לתוכן

בעיה- חיפוש מילה בVisual-Basic.

Featured Replies

פורסם

שלום לכולם, אני בונה תוכנה בעזרת Visual basic 6 (כן אני דיי ישן, אבל החלטתי לעבוד ולהישאר עם זה

בגלל שאנחנו עובדים עם זה גם בבית ספר), ומעוניין לחפש בתוך תיבת טקסט (textbox),

מילה שנמצאת בין שני מילים ולהעתיק אותה לתיבת טקסט, אבל אני לא מצליח,

פשוט לא עולה לי רעיון אפילו איך להתחיל את הקוד, עשיתי חיפוש דיי ארוך

באינטרנט והבנתי שאולי איכשהו intstr קשור לזה ( כניראה) , אני אשמח אם

תוכלו לנסות לעזור לי למצוא את הקוד המתאים, ובבקשה עם הסברים.

תודה לכולם!

פורסם

שתי דרכים:

1. תשתמש בפונקציה Split על מנת להפריד את המחרוזת למילים, ואז תחפש מילה מילה (באמצעות השוואה רגילה).

1. תשתמש ב-InStr בשביל למצוא את המיקומים של המילים שאתה רוצה לחפש, ואז תפריד רק את הקטע הרלוונטי למילים (ידנית או עם split).

פורסם
  • מחבר

איך אני משתמש ב-split אבל? העניין פה זה שאני רוצה

להעתיק מקוד HTML דיי ארוך של אתר מסויים ולקחת את המילה שנמצאת

בין שני מילים, שני המילים נישארות כול פעם , אבל המילה שנמצאת באמצע משתנה

כול פעם (כי האתר מתעדכן כול פעם) , ולכן אני רוצה לקחת את המילה שבאמצע,

לא הבנתי מה בדיוק Split עושה ואיך היא מפרידה, וממה שהבנתי INSTR מה

שהוא עושה בעצם זה מציג לך 1 לוגי או 0 לוגי אם הוא מוצא את המילה שחיפשת בטקסט...

האם אפשר קוד דוגמא לפחות שיוכל להדריך אותי?

פורסם
  • מחבר

http://msdn2.microsoft.com/en-us/library/aa263365(VS.60).aspx

הפונקציה InStr לא מחזירה 0 או 1, היא מחזירה לך את המיקום של המילה בתוך הטקסט (או 0 אם המילה לא נמצאה).

נגיד היא מחזירה לי את המספר 4667 זה המיקום של המילה, אבל מה זה אומר לי , המיקום של האות הראשונה של המילה?

ולמה אני צריך את ה-Split, אני אמור בעצם לקחת את המיקום של המילה הראשון ואת המיקום של המילה השנייה, ואז בעצם

להפריד אותם בעזרת SPLIT? איך אני משתמש בזה ? האם אני צודק?

אני אנסה לשבת על זה עוד יומיים כניראה אני אחזור עם קוד אולי שאני יצליח לעלות.. (מקווה),

ותודה רבה רבה על העזרה... אשמח אם תוכל לענות על השאלות הלא מובנות...

פורסם

כן, זה בדיוק מה שהיא עושה.

לדעתי הדרך הפשוטה היא דווקא הראשונה שהצעתי - תשתמש ב-Split על מנת להפריד את הטקסט למילים, ואז פשוט תחפש את המילים שלך (תעבור מילה מילה ותשווה).

פורסם
  • מחבר

אוקיי, אז ככה, אני אתן עכשיו דוגמא של מה שאני רוצה לעשות ומה שניסתי...

מה שאני מנסה לעשות זה לקחת מתיבת טקסט שבטופס אחד מילה (לא בדיוק מילה אלא סוג של סיסמא או קוד שמשולב עם מספרים ואותיות),

ולהעביר אותה לתיבת טקסט שב-Form2, עכשיו נגיד והמילה שלי נמצאת בין המילים Hello , ו- </br> (קוד HTML),

עוד משהו חשוב ששחכתי לציין, אין במילים רווח מפני שזה באמצע קוד HTML

(אבל לפעמים יש רווחים)

אני רוצה שבעצם מה שיקרה התוכנה תעתיק את המילה הזו (שהיא משתנה כול פעם), לText1 ב-טופס מספר 2,

מה שעשיתי ביינתים זה תיבת טקסט ומשתנה בשם find

ועשיתי ככה:

find = instr(form1.text1.text, "Hello")

והוספתי עוד משתנה בשם data

ועשיתי ככה:

data=instr(form1.text1.text,"</br>")

ראיתי שהוא מצא לי בעצם את המיקום של ההתחלה של המילים הללו,

אך אני לא יודע מה לעשות הלאה, אני לא יודע איך אני משתמש במיקומים האלה בשביל למצוא את המילה שבאמצע?

ואם תוכלו לפרט על הדרך הקלה יותר (SPLIT) , ובבקשה אם תוכלו לתת דוגמא... תודה רבה רבה!

פורסם

תשתמש בפונקציה Mid$

אתה נותן לה את המחרוזת, מאיפה להתחיל להעתיק וכמה.

פורסם

הבנתי.

קודם כל, כשאתה כותב קוד, עטוף אותו בטג קוד (כפתור # למעלה) כדי שיהיה קריא.

Split באמת לא מתאים כאן, בדיוק כי המילה לא בהכרח מוקפת ברווחים.

נניח שזה הטקסט שלך:

Hello shy<br/>

אז אחרי שתפעיל את החיפוש, find יהיה שווה 1 (כי המילה Hello מופיעה בתחילת הטקסט) ו-data יהיה שווה 10 (כי המילה </br> מופיע החל מהתו העשירי בטקסט).

עכשיו אתה צריך לשלוף את הטקסט החל מסוף המילה Hello (כלומר - הערך של find + אורך המילה Hello) ועד תחילת המילה </br> (הערך של data). יש?

חוץ מזה, אתה צריך לדאוג להעיף רווחים אם יש כאלה.

פורסם
  • מחבר

הבנתי את ההסבר שלך (הסבר מצויין ד"א תודה),

אחרי שאני יודע נגיד כמו שאמרת ש-FIND יהיה שווה ל-1 וDATA יהיה שווה ל-10,

השאלה היא איך אני שולף את הטקסט הזה? מה הפקודה? ואיך ניתן להעיף רווחים (אם יש),

בקשר ל-MID אני עכשיו יעשה חיפוש בקשר לפקודה הזו ואיך משתמשים, ביינתים תודה רבה על העזרה!

ובבקשה תענו על השאלה שלמעלה.... ממש ממש תודה

עריכה:

הצלחתי!! תודה רבה לכולם!

הקוד למי שאיי פעם יחפש:

inf = InStr(Form1.Text1.Text, "Hello:")
data = InStr(Form1.Text1.Text, "<br/>")
find2 = InStr(inf, "O")
find = Mid(Form1.Text1.Text, inf, data - inf)
found = Mid(find, 6, data - find2)
Text1.Text = found

הסבר קצר:

Inf, data,find,find2 found הם משתנים מסוג String.

INF זה בעצם המיקום של המילה Hello

DATA זה המיקום של המילה</br>

FIND זה בעצם "להוציא" את כול המילים שיש בין Hello ל-<br/>,

find2 זה בעצם המיקום של האות האחרונה של המילה Hello

found זה בעצם חיסור של המיקום של המילה <br/> עם החיסור של המקום של המילה האחרונה (האות הראשונה של המילה האחרונה והאות האחרונה של המילה הראשונה) שזה בעצם האורך של המילה שאני רוצה, וביקשתי ממנו בעצם להתחיל מ-6 כי זה איפה שהמילה שלי מתחילה בעצם כי Hello מורכב מ-5 תווים וה-6 זה המילה שלי.

מצטער שאני קצת לא מובן.. השתדלתי, שברתי את הראש בשביל הקוד הזה... תודה רבה רבה רבה לכולם!!!!

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים