جستجو در لیست باکس از طریق ارتباط با فایل متنی

Niloofar_222

New Member
سلام، مرسی. من تصمیم گرفتم که از همون کلمات انگلیسی استفاده کنم.

فقط یک چیزی، من مسیر فایل های Txt و Html ام این هست:
کد:
<SrcDir>\Text\Province
و در فایل Province هم همه فایل هام هستند.

حالا من چطور این آدرس رو در کد شی اسکریپت تغییر بدم؟

کد:
If (EditBox$<>'') Then
  ListBoxAddItem("Listbox","RESET")
  PathFile$='<Embedded>\Season-01T.txt'
  nol=NOL(PathFile$)
  For i=1 To nol
    line$=StrFromFile(PathFile$,i,1)
    addres$=<SrcDir>+line$+'.txt'
    nol1=NOL(addres$)
    For j=1 To nol1
      line1$=StrFromFile(addres$,j,1)
      RetVal=POS(EditBox$,line1$)
      If (RetVal<>0) Then
        ListBoxAddItem("Listbox","line$")
        Break()
      End
    Next j
  Next i
Else
  ListBoxAddItem("Listbox","RESET")
  PathFile$='<Embedded>\Season-01T.txt'
  ListBoxAddItem("Listbox","PathFile$")
End

فکر کنم فقط باید این قسمت رو تغییر بدم:

addres$=<SrcDir>+line$+'.txt'

میشه یکی از دوستان طریقه جایگذاری آدرس مورد نظر من رو در این قطعه کد ذکر بفرمایند. ممنونم
 

Niloofar_222

New Member
سلام، خیلی ممنون از جوابتون، همه چیز درست شد، یک نکته ای که امروز و موقع بستن پروژه برام پیش اومد این بود: دقیقا چیزی شبیه به مثال شما درست کردم که کلمات در داخل Editbox نوشته میشه و آیتم های مرتبط لیست میشن، حالا نکته ای که وجود داره اینه که من قبلا برای 10 آیتم داخل Listbox عملکرد تعریف کرده بودم، به شرح زیر:
[FONT=&quot]If[/FONT][FONT=&quot] (ItemNum=[/FONT][FONT=&quot]1[/FONT][FONT=&quot]) [/FONT][FONT=&quot]Then[/FONT]
[FONT=&quot]Page[/FONT][FONT=&quot]("Page [/FONT][FONT=&quot]1[/FONT][FONT=&quot]")[/FONT]
[FONT=&quot]End[/FONT]
[FONT=&quot]If[/FONT][FONT=&quot] (ItemNum=[/FONT][FONT=&quot]2[/FONT][FONT=&quot]) [/FONT][FONT=&quot]Then[/FONT]
[FONT=&quot]Page[/FONT][FONT=&quot]("Page [/FONT][FONT=&quot]2[/FONT][FONT=&quot]")[/FONT]
[FONT=&quot]End[/FONT]
[FONT=&quot]If[/FONT][FONT=&quot] (ItemNum=[/FONT][FONT=&quot]3[/FONT][FONT=&quot]) [/FONT][FONT=&quot]Then[/FONT]
[FONT=&quot]Page[/FONT][FONT=&quot]("Page [/FONT][FONT=&quot]3[/FONT][FONT=&quot]")[/FONT]
[FONT=&quot]End[/FONT]
[FONT=&quot]If[/FONT][FONT=&quot] (ItemNum=[/FONT][FONT=&quot]4[/FONT][FONT=&quot]) [/FONT][FONT=&quot]Then[/FONT]
[FONT=&quot]Page[/FONT][FONT=&quot]("Page [/FONT][FONT=&quot]4[/FONT][FONT=&quot]")[/FONT]
[FONT=&quot]End[/FONT]
[FONT=&quot]If[/FONT][FONT=&quot] (ItemNum=[/FONT][FONT=&quot]5[/FONT][FONT=&quot]) [/FONT][FONT=&quot]Then[/FONT]
[FONT=&quot]Page[/FONT][FONT=&quot]("Page [/FONT][FONT=&quot]5[/FONT][FONT=&quot]")[/FONT]
[FONT=&quot]End[/FONT]
[FONT=&quot]If[/FONT][FONT=&quot] (ItemNum=[/FONT][FONT=&quot]6[/FONT][FONT=&quot]) [/FONT][FONT=&quot]Then[/FONT]
[FONT=&quot]Page[/FONT][FONT=&quot]("Page [/FONT][FONT=&quot]6[/FONT][FONT=&quot]")[/FONT]
[FONT=&quot]End[/FONT]
[FONT=&quot]If[/FONT][FONT=&quot] (ItemNum=[/FONT][FONT=&quot]7[/FONT][FONT=&quot]) [/FONT][FONT=&quot]Then[/FONT]
[FONT=&quot]Page[/FONT][FONT=&quot]("Page [/FONT][FONT=&quot]7[/FONT][FONT=&quot]")[/FONT]
[FONT=&quot]End[/FONT]
[FONT=&quot]If[/FONT][FONT=&quot] (ItemNum=[/FONT][FONT=&quot]8[/FONT][FONT=&quot]) [/FONT][FONT=&quot]Then[/FONT]
[FONT=&quot]Page[/FONT][FONT=&quot]("Page [/FONT][FONT=&quot]8[/FONT][FONT=&quot]")[/FONT]
[FONT=&quot]End[/FONT]
[FONT=&quot]If[/FONT][FONT=&quot] (ItemNum=[/FONT][FONT=&quot]9[/FONT][FONT=&quot]) [/FONT][FONT=&quot]Then[/FONT]
[FONT=&quot]Page[/FONT][FONT=&quot]("Page [/FONT][FONT=&quot]9[/FONT][FONT=&quot]")[/FONT]
[FONT=&quot]End[/FONT]
[FONT=&quot]If[/FONT][FONT=&quot] (ItemNum=[/FONT][FONT=&quot]10[/FONT][FONT=&quot]) [/FONT][FONT=&quot]Then[/FONT]
[FONT=&quot]Page[/FONT][FONT=&quot]("Page [/FONT][FONT=&quot]10[/FONT][FONT=&quot]")[/FONT]
[FONT=&quot]End[/FONT]
حالا شما فرض کنید که من یک کلمه رو در Editbox جستجو میکنم، حالا فرض کنید که 4 تا آیتم تو Listbox باقی موند، حالا مثلا اگه من شماره 3 رو انتخاب کنم و Go رو بزنم، بجای صفحه آیتم انتخاب شده به صفحه شماره 3 میرم که اصلا به اون موضوع مطرح نیست! مشکل اینه که آیتم های لیست باکس قبلا تعریف شده هستند و اگه یک آیتم جدید در جستجو جاشون رو بگیره همون عمل قبلی رو انجام میدند.
 
آخرین ویرایش:

loo30fer

کاربر متخصص مولتی مدیا بیلدر
برای حل مشکلتون باید نام Page هاتون رو به نام های توی List.txt تغییر بدین مثلا صفحه تهران Page 1 هست پس باید بذارین Tehran
بعد از تغییر نام گذاری تمامی صفحات توی رویداد On selection به جای ItemNum که تابع Val تعریف کردین و شماره آیتم رو گرفتین این کد رو جایگزینش کنید.
کد:
ItemName$=GetArrayItem(SelItem$,#,1)
و به جای اون همه شرطی تو دکمه GoToPage فقط این رو بنویسید :​
کد:
Page(ItemName$)
ضمنا عذرخواهی میکنم نتونستم نمونه پیوست کنم چون از کافی نت جواب سوال شما رو میدم امیدوارم توضیحاتم واضح و مفید باشه.
موفق باشید.​
 

loo30fer

کاربر متخصص مولتی مدیا بیلدر
ضمنا فکر میکنم تو اسکریپت Search از دستور Refresh استفاده نکردین برای اینکه تو جستجو از حلقه استفاده کردین و امکان فریز شدن وجود داره بعد از تمامی دستوراتتون قبل از Next i یک دستور Refresh اضافه کنید.
کد:
Refresh("")
 

Niloofar_222

New Member
خیلی ممنون از پاسختون، من کارهایی رو که گفته بودید انجام دادم، نام صفحات رو همام با نام های لیست کردم و کدهایی که گفته بودین رو هم اضافه یا جایگزین کردم اما الان دیگه دکمه Go کار نمیکنه، یعنی با اینکه جستجو انجام میشه اما نمیتونم با صفحه مربوطه برم. فایلی که که تغییرات فوق روش اعمال شده رو میزارم.
 

پیوست ها

  • Provinces.rar
    562.5 کیلوبایت · بازدیدها: 51

loo30fer

کاربر متخصص مولتی مدیا بیلدر
چون نام متغیری که تو GetArrayItem تعریف شده با نام متغیری که نام آیتم ها توسط ListBoxGetItems توش ریخته میشه فرق میکنه که البته اینجا اشکال از کار من چون تو کافی نت بودم و درست یادم نبود نام اون مقدار چی بود. حالا کدتون رو به این تغییر بدین مشکل حل میشه.
راستی نوع متغیر دهی به توابع در دلفی رو با بیلدر هم قاطی کردم برای همین اون متغیر $ItemName رو بدون "" به دستور Page داده بودم که خودتون درستش کرده بودین.
کد:
ItemName$=GetArrayItem(SelItems$,#,1)
 
آخرین ویرایش:

جدیدترین ارسال ها

بالا