Fa فراخوانی اطالاعات فولدر

mohamadarab

Active Member
سلام به همه دوستان
من داخل نرم افزارم یک سری اطلاعات شامل mp3 ,html ,exe دارم...داخل نرم افزارم 3تا باتن می خوام تعریف کنم که اگه هر باتنی رو زدم بره اطلاعات داخل فولدر مربوط به خودش رو داخل لیست باکس بیاره ..
مثلا برای باتن 1 آدرس فولدر 1 رو دادم ،می خوام خودش تشخیص بده چه اطلاعاتی داخل فولدر هست اون رو داخل لیست باکس بیاره..اگه mp3 هست داخل فایل اون رو بیاره و اگه exe هست اون ها رو داخل لیست باکس بیاره..درضمن اطلاعات داخل هر فولدر یک چیز هست مثلا یا فقط mp3 هست یا فقط exe......هررو دو با هم نداره
امیدوارم خوب منظورم گفته باشم.
ممنون از راهنماییتون....:rose::rose:
 

mohamadarab

Active Member
دوستان من این دستور رو توی باتن ها دادم.اما مشکلی هست این هست که:
1- mp3 ها رو توی خودش با زنمیکنه بلکه با پلیر سیستم من باز میکنه اما من میخوام توی خود نرم افزار پخش بشه
2-مشکل دوم اینکه نمیتونم کاری کنم که اگه html داشتم توی فایل اون نشون بده..html من فقط یدونه هست نمی خوامم توی لیست باکس بیاد.
کد:
** specify a file extension
ext$='*.exe'
** Open BrowseForFolders dialog
seldir$='<SrcDir>\new\p4'
If (seldir$ <> '') Then
  ** Search files in selected folder...
  SearchForFiles("seldir$","ext$")
  ** Reset ListBox
  ListBoxAddItem("SongList","RESET")
  ** Fill ListBox
  ListBoxAddItem("SongList","<List>")
  ** Sort ListBox by Name
  ListBoxSortItems("SongList","NAME")
  ** Reset <List>
  SongListReset()
  **Re-fill <List> with sorted items
  ListBoxGetItems("SongList","<List>")
  ** Again reset ListBox..
  ListBoxAddItem("SongList","RESET")
  ** ..and fill it with filenames+their extensions
  If (CBK_NumInList>0) Then
    For i=1 To CBK_NumInList
      LoadText("Text$","STRING:<List>i")
      filename$=ExtractName(Text$)
      ListBoxAddItem("SongList","filename$")
    Next i
  End
End
*************
** specify a file extension
ext$='*.mp3'
** Open BrowseForFolders dialog
seldir$='<SrcDir>\new\p4'
If (seldir$ <> '') Then
  ** Search files in selected folder...
  SearchForFiles("seldir$","ext$")
  ** Reset ListBox
  ListBoxAddItem("SongList","RESET")
  ** Fill ListBox
  ListBoxAddItem("SongList","<List>")
  ** Sort ListBox by Name
  ListBoxSortItems("SongList","NAME")
  ** Reset <List>
  SongListReset()
  **Re-fill <List> with sorted items
  ListBoxGetItems("SongList","<List>")
  ** Again reset ListBox..
  SongListPlay("")
  ** ..and fill it with filenames+their extensions
  If (CBK_NumInList>0) Then
    For i=1 To CBK_NumInList
      LoadText("Text$","STRING:<List>i")
      filename$=ExtractName(Text$)
      ListBoxAddItem("SongList","filename$")
    Next i
  End
End
*************
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
من درست متوجه منظورتون نشدم، اما اگر قصد دارید با توجه به پسوند فایل، اون رو داخل یک لیست باکس دیگه بعنوان مثال نمایش بدید، کد زیر کمکتون می کنه
اگر منظورتون این نبوده، لطفاً واضح تر بیان کنید که هدفتون چی هست و چه مشکلی دارید
کد:
ext$ = 'exe, mp3, htm, html'
seldir$='<SrcDir>\\'
SearchForFiles("seldir$","ext$ ")
For i=1 To CBK_NumInList
  LoadText("File$","STRING:<List>i")
  fileext$ = ExtractExt(File$)
  filename$ = ExtractName(File$)
  If (fileext$ = '.exe') Then
    ListBoxAddItem("ListBox1","filename$")
  Else
    If (fileext$ = '.mp3') Then
      ListBoxAddItem("ListBox2","filename$")
    Else
    End
  End
Next i
 

mohamadarab

Active Member
ممنون از راهنماییتون..
من مشکلی که واسه exe و mp3 داشتم رو با این دستور حل کردم..
کد:
SearchForFiles("<SrcDir>\data\p3","mp3,exe")ListBoxAddItem("SongList","RESET")
ListBoxAddItem("SongList","<List>")
ListBoxSortItems("SongList","NAME")
SongListReset()
ListBoxGetItems("SongList","<List>")
من توی برنامم 5تا فولدر از 1 تا 5 دارم که توی هر کدومش ممکن هست exe ,mp3 , html باشه..(توی هر فولد فقط یکی از دیتا ها هست همه رو باهم نداره یا فقط mp3 یا فقط html)
داخل نرم افزار 5 تا باتن دارم که می خوام هر کدوم زدم بره توی آدرسش و ببینه کدوم از دیتاها رو داره، بیاره و بخونه..با کد بالا مشکل exe و mp3 رو حل کردم.اما برای دیتاهای html نمیدونم باید چه کنم..
چون توی دیتاها فقط یک دونه دیتای html دارم نمی خوام توی لیست باکس بیاد..فقط یک شی html درست کنم و ی دستوری بدم بره توی آدرس مربوطه اگه html داشت بیاره و بخونه..
..
امیدوارم این بار خوب گفته باشم..
 
  • Like
Reactions: 9up

mohamadarab

Active Member
سلام...
دوستان در مورد سوالی که پرسیدم نیاز به راهنماییتون دارم...
ممنون اگه راهنمایی کنید..
مشکل اصلی من در موردhtml ها هستش..ببین توی هر فولدری که html داره اون رو داخل Browser بیلدر بیاره..
 

m javad

کاربر متخصص
دو حالت داره مشکلتون:
1- اینکه نمیتونید یه آدرس رو توی بروزر خود بیلدر نمایش بدید
این کدش هست:

Browser("Browser","yourAddress$")

2 - نمیتونید آدرس فایلی که جستجو شده و توی لیست باکس اضاف شده رو به دست بیارید و بدید به بروزر برای نمایش
برای حل این مشکل این فایل رو ببینید:
C:\Program Files\Multimedia Builder498\Samples\496_examples\listbox\listbox_fileextensions.mbd
توی این نمونه کدهای داخل ListBox و در قسمت Drag and Drop رو ببینید
 

mohamadarab

Active Member
ممنون از راهنمایی هاتون.
اما مشکلی که من دارم این هست که نمیخوام توی لیست باکس نتیجه ی جستجو بیاد..چون فقط ی html دارم..
میخوام توی آدرسی که من میدم بره ،و اگر اونجا html داشتم اون رو بیاره و در Browser نمایش بده..(البته به شرطی که mp3 و exe داخل اون فایل نباشه)
من برای mp3 و exe دستورش رو نوشتم و داخل لیت باکس نمایش میده ،اما مشکل من با html ها هستش..
 

m javad

کاربر متخصص
این کد تکمیل شده کد فوق هست:
کد:
[LEFT]
ext$ = 'exe, mp3, htm, html'
seldir$='<SrcDir>\\'
SearchForFiles("seldir$","ext$ ")
For i=1 To CBK_NumInList
  LoadText("File$","STRING:<List>i")
  fileext$ = ExtractExt(File$)
  filename$ = ExtractName(File$)
  fullname$ =ExtractDrive(File$)+ExtractDir(File$)+ ExtractName(File$)+ExtractExt(File$)
  If (fileext$ = '.exe'|fileext$ = '.mp3') Then
    ListBoxAddItem("ListBox1","filename$")
  End
  If (fileext$ = '.htm'|fileext$ = '.html') Then
    Browser("Browser","fullname$")
  End
Next i
[/LEFT]
 

mohamadarab

Active Member
کدی که گذاشتید تکمیل شده ی کدوم کد ها هستش؟
..آقا جواد ممنون میشم اگه ی نمونه ی کوچیک قرار بدید...
....

ی سوال دیگه: اگه بخوایم همین کار رو برای فیلم انجام بدیم چی؟یعنی جای html و mp3 و exe ،فیلم داشته باشیم و فیلم ها در خود برنامه نمایش داده بشه
 

mohamadarab

Active Member
اقا جواد عز یز کدهایی که دادید رو من تست کردم،
برای mp3 کار نکرد یعنی لیستی از اونها توی لیست باکس نیاورد و نمایش نداد.
اما برای exe ها هم که داخل لست نمایش میداد و میاورد اما وقتی چندبار رو باتن مربوطه کلیک میکردی به تعداد کلیک هایی که کردیم دوباره داخل لیست باکس تکرارش می کرد.
 

m javad

کاربر متخصص
خب برای جلوگیری از تکرار آیتم ها یه دستور بزارید اون ابتدا که لیست باکس رو پاک کنه
برای فایلهای mp3 که نمایش نداده احتمالا پسوند آنها با حروف بزرگ بوده
در مورد فیلم ها هم بله میتونید همین کار رو بکنید. کافیه پسوند های مورد نظرتون رو به کدها اضافه کنید و مثلا برای اون نوع خاص از پسوند با یه کد شرطی کار خاصی قرار بدید.
کد:
ext$ = 'exe, mp3, EXE, MP3, htm, html'
seldir$='<SrcDir>\\'
SearchForFiles("seldir$","ext$ ")
If (CBK_NumInList>0) Then
  ListBoxAddItem("ListBox1","RESET")
  For i=1 To CBK_NumInList
    LoadText("File$","STRING:<List>i")
    fileext$ = ExtractExt(File$)
    filename$ = ExtractName(File$)
    fullname$ =ExtractDrive(File$)+ExtractDir(File$)+ ExtractName(File$)+ExtractExt(File$)
    If (fileext$ = '.exe'|fileext$ = '.mp3'|fileext$ = '.EXE'|fileext$ = '.MP3') Then
      ListBoxAddItem("ListBox1","filename$")
    End
    If (fileext$ = '.htm'|fileext$ = '.html') Then
      Browser("Browser","fullname$")
    End
  Next i
End
اون کد هم تکمیل شده کد nevercom بود
موفق باشید
 
آخرین ویرایش:

mohamadarab

Active Member
ممنون از زاهنماییتون..
الان ی مشکلی هست اینه که من دابل کلیک میکنم،mp3 ها هم توی نرم افزار پخش میشه هم از طریق پلیر ویندوز
اینم کدی که توی لیست باکس نوشتم:
کد:
ListBoxGetSelectedItems("SongList","Items$,ItemsNum$,#,NumItems")For i=1 To NumItems
  ** this will return full path of selected item
  t$ = GetArrayItem(Items$,#,i)
  **  ** this will extract the name + extension from path
  **  GetFileStr$=ExtractName(t$) + ExtractExt(t$)
  **  src$=t$
  **  OpenFile$=''
  **  ** this will open SaveAs dialog and fill the OpenFile$, CBK_OpenFile, CBK_OpenDir variables.
  **  SaveFile("MP3 Files (*.mp3)|*.mp3|All Files|*.*||","GetFileStr$")
  **  If (OpenFile$>'') Then
  **    dest$=OpenFile$
  **    ** and finally this will save the selected file to defined directory.
  **    SysCommand("CopyFile","src$,dest$")
  **  End
  ** this will return number of selected item
  numitem$ = GetArrayItem(ItemsNum$,#,i)
  ** and this will play the selected file
  SongListPlay("VAL(numitem$)")
  LoadText("Text18","STRING:t$")
  ScriptTimer("PlayNextAfterTenSec","10000")
Next i
*****************
ListBoxGetSelectedItems("SongList","Items$,ItemsNum$,#,NumItems")
For i=NumItems To 1
  ** return number of a selected item
  ArrayItemNum$ = GetArrayItem(ItemsNum$,#,i)
  ArrayItemNum=VAL(ArrayItemNum$)
  **  Return Path of seleceted item from <List>
  LoadText("Path$","<List>ArrayItemNum")
  Run("Path$","TOP")
Next i
***************
 

mohamadarab

Active Member
سلام یه همه دوستان..
مشکل دابل کلیک با راهنمایی های اقا جواد و آقا سامان حل شد کافی بود این کد برداشته بشه:
PHP:
  Run("Path$","TOP")
..
اما مشکل اینجاست که الان نمیشه فایل های ویدیویی رو خوند و اجرا کرد..من این کد رو اضافه کردم
[
کد:
ext$ = 'exe, mp3, EXE, MP3, htm, html,wmv,avi'seldir$='<SrcDir>\data\p2'
SearchForFiles("seldir$","ext$ ")
If (CBK_NumInList>0) Then
  ListBoxAddItem("SongList","RESET")
  For i=1 To CBK_NumInList
    LoadText("File$","STRING:<List>i")
    fileext$ = ExtractExt(File$)
    filename$ = ExtractName(File$)
    fullname$ =ExtractDrive(File$)+ExtractDir(File$)+ ExtractName(File$)+ExtractExt(File$)
    If (fileext$ = '.exe'|fileext$ = '.mp3'|fileext$ = '.EXE'|fileext$ = '.MP3') Then
      ListBoxAddItem("SongList","filename$")
    End
    If (fileext$ = '.htm'|fileext$ = '.html') Then
      Browser("Browser","fullname$")
    End
  Next i
End
  If (fileext$ = '.wmv'|fileext$ = '.avi') Then
VideoLoad("Video","seldir$")
VideoPlay("Video")


    End
  Next i
End
.
اصلا لیست ویدیو ها توی لیست باکس نمیاد...
 

m javad

کاربر متخصص
اصلا لیست ویدیو ها توی لیست باکس نمیاد...

مشکل کارتون این هست که نمخواهید بررسی کنید ببینید کد داره چیکار میکنه و فقط میخواهید با کدهای مشابه کارتون رو حل کنید
شما برای برنامه نویسی به دوتا چیز نیاز دارید:
1- برنامه ریزی ذهنی، اینکه تو ذهنتون گامهای مورد نظر رو بسازید یا اینکه چارت مراحل کار رو بسازید و حتی روی کاغذ رسم کنید
2- تبدیل اون برنامه ریزی و چارت به برنامه با استفاده از کدها و اسکریپت نویسی

الان یه نگاهی به کد خودتون که گذاشتید بندازید؟ !!!!
این کد اصلا از طرف بیلدر پذیرفته نمیشه
من با شناختی که از شما داشتم این کدتون برام عجیب هست. انگار اصلا با اسکریپت های بیلدر آشنا نیستید، ساختار حلقه رو نمیشناسید
یه حلقه دارید ( For i=1 ) که دوتا اتمام داره ( Next i ) !!!!!!
اومدید انتهای کد رو مجددا کپی کردید اون پایین!!!
اینکه برای فیلم هم مجددا این قسمت رو تکرار کنید درست هست، ولی داخل حلقه، نه خارج از اون
در مورد اینکه فیلم ها رو داخل لیست باکس نمایش نمیده، مگر کدی براش نوشتید که انتظار دارید بده؟!!!
اگر کد شما ترتیبش هم درست بود شما تنها دستور ویدئو لود و ویدئو پلی داید، چه انتظاری دارید نمایش بده!

بعد شما دارید دستور میدید که:
کد:
VideoLoad("Video","seldir$")

یعنی seldir$ رو توی شی ویدئو فراخوانی بکنه. seldir$ چی هست؟
seldir$ آدرس فولدری هست که اون بالا دادید برای جستجو. نه آدرس فایل!!!!! در حالی که آدرس فایل fullname$ هست که مثلا برای پسوند های htm داید توی برنامه نمایش بده

پس کدتون میشه این:
کد:
ext$ = 'exe, mp3, EXE, MP3, htm, html, wmv, avi, WMV, AVI'
seldir$='<SrcDir>\data\p2'
SearchForFiles("seldir$","ext$ ")
If (CBK_NumInList>0) Then
  ListBoxAddItem("SongList","RESET")
  For i=1 To CBK_NumInList
    LoadText("File$","STRING:<List>i")
    fileext$ = ExtractExt(File$)
    filename$ = ExtractName(File$)
    fullname$ =ExtractDrive(File$)+ExtractDir(File$)+ ExtractName(File$)+ExtractExt(File$)
    If (fileext$ = '.exe'|fileext$ = '.mp3'|fileext$ = '.EXE'|fileext$ = '.MP3') Then
      ListBoxAddItem("SongList","filename$")
    End
    If (fileext$ = '.htm'|fileext$ = '.html') Then
      Browser("Browser","fullname$")
    End
    If (fileext$ = '.wmv'|fileext$ = '.avi'|fileext$ = '.WMV'|fileext$ = '.AVI') Then
      ListBoxAddItem("SongList","filename$")
      VideoLoad("Video","fullname$")
      VideoPlay("Video")
    End
  Next i
End


ولی دقت کنید که این کار داره توی یه حلقه صورت میگیره. پس برنامه مثلا برای فایلهای ویدئو میگرده و اولین فایل پیدا شده رو توی لیست اضاف میکنه و توی برنامه نمایش میده
تو تکرار بعدی حلقه ، فایل دوم ویدئویی که پیدا میکنه ، توی لیست اضاف میکنه و به جای فیلم قبلی نمایش میده و الی آخر
پس بهتره برای فایلهایی که بیشتر از یکی ازشون دارید مثل همون mp3 ها استفاده کنید و بعد با دبل کلیلک مجددا دستور پخش بدید

این کد:
کد:
ext$ = 'exe, mp3, EXE, MP3, htm, html, wmv, avi, WMV, AVI'
seldir$='<SrcDir>\data\p2'
SearchForFiles("seldir$","ext$ ")
If (CBK_NumInList>0) Then
  ListBoxAddItem("SongList","RESET")
  For i=1 To CBK_NumInList
    LoadText("File$","STRING:<List>i")
    fileext$ = ExtractExt(File$)
    filename$ = ExtractName(File$)
    fullname$ =ExtractDrive(File$)+ExtractDir(File$)+ ExtractName(File$)+ExtractExt(File$)
    If (fileext$ = '.exe'|fileext$ = '.mp3'|fileext$ = '.EXE'|fileext$ = '.MP3'|fileext$ = '.wmv'|fileext$ = '.avi'|fileext$ = '.WMV'|fileext$ = '.AVI') Then
      ListBoxAddItem("SongList","filename$")
    End
    If (fileext$ = '.htm'|fileext$ = '.html') Then
      Browser("Browser","fullname$")
    End
  Next i
End
 

mohamadarab

Active Member
ممنون اقا جواد از راهنماییتون..
در مورد اسکریپت ها هم حق با شماست من کپی کردم و اون Next i رو حواسم نبود ادامه ی کد نوشتم..
بازم ممنون از راهنماییتون......
...
الان از کدهایی که گذاشتید من کدوم رو باید استفاده کنم..
من کدهایی که گذاشتید رو تست کردم اما فایل های ویدیویی و exe اجرا نمیشه؟
 
آخرین ویرایش:

mohamadarab

Active Member
سلام ..

از دوستان کسی نیست بتونه این مشکل رو حل کنه؟
ممنون از راهنمایی هاتون..
 

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

بالا