PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Работа с процедурами


Работа с процедурами

Сообщений 1 страница 4 из 4

1

Хочу создать процедуру которая будет мне выводить первую попавшуюся папку на заданов пути. Вот что я сделал:

Код:
Procedure aa(Directory$)
If ExamineDirectory(0, Directory$, "*.*")  
While NextDirectoryEntry(0)
If DirectoryEntryType(0) = #PB_DirectoryEntry_File
Type$ = " [File] "
Else
Type$ = " [Sub-Dir] "
EndIf
If DirectoryEntryName(0)="." Or DirectoryEntryName(0)=".." 
Goto c
EndIf
f$= DirectoryEntryName(0)
c:  
Wend
FinishDirectory(0)
EndIf
EndProcedure
Debug aa("c:\")

Подразумивается что:

Код:
aa(<Моя папка>)=<1 попавшийся в этой папке файл>.

То есть aa(...) будет присваиватся 1 попавшийся файл. Но в процедуре он присваивается f$. Так как aa(...) связась с а$? Подскажите пожалуйста.

0

2

Alex написал(а):

$. Так как aa(...) связась с а$? Подскажите пожалуйста.

Надо что-бы процедура возвращала значение. Если это строка, то и процедура должна иметь тип .s, а возвращать при помощи ProcedureReturn
В итоге получится следующее:

Код:
Procedure.s aa(Directory$)
If ExamineDirectory(0, Directory$, "*.*")  
While NextDirectoryEntry(0)
If DirectoryEntryType(0) = #PB_DirectoryEntry_File
Type$ = " [File] "
Else
Type$ = " [Sub-Dir] "
EndIf
If DirectoryEntryName(0)="." Or DirectoryEntryName(0)=".." 
Goto c
EndIf
f$= DirectoryEntryName(0)
c:  
Wend
FinishDirectory(0)
EndIf
ProcedureReturn f$
EndProcedure
Debug aa("c:\")

0

3

Спасибо!

0

4

По моему GOTO тут явно лишний.

Код:
Procedure.s aa(Directory$)
  If ExamineDirectory(0, Directory$, "*.*")  
    While NextDirectoryEntry(0)
      
      If DirectoryEntryName(0)="." Or DirectoryEntryName(0)=".." 
        Continue
      EndIf 
      
      If DirectoryEntryType(0) = #PB_DirectoryEntry_Directory
        f$= DirectoryEntryName(0)
        Break
      EndIf
      
    Wend
    FinishDirectory(0)
  EndIf
  ProcedureReturn f$
EndProcedure

Debug aa("c:\")

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Работа с процедурами