|
Полезные функции Выкладываем полезные функции, чтоб не изобретать велосипед заново... |
08.01.2008, 23:33
|
#1
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Имена файлов
Расширение файла по его имени
Function GetFileExtension$(FileName$)
For i=Len(FileName) To 1 Step -1
Local c$=Mid(FileName,i,1)
If c="."
Exit
EndIf
Next
Return Right(FileName,Len(FileName)-i)
End Function
Имя файла без рсширения из его произвольного адреса
Function GetFileName$(FileName$)
For i=Len(FileName) To 1 Step -1
Local c$=Mid(FileName,i,1)
If c="\"
Exit
EndIf
Next
Local EXT$=GetFileExtension(FileName$)
Local NwEXT$=Right(FileName,Len(FileName)-i)
Return Left(NwEXT,Len(NwEXT)-Len(EXT)-1)
End Function
Количество файлов в директории
Function GetFilesInDir%(DirName$)
Local Dir=ReadDir(DirName)
If DIR=0
CloseDir (Dir)
Return 0
EndIf
Local file$=""
Local CNT%=0
While True
file$=NextFile$(Dir)
If file$="" Then Exit
CNT=CNT+1
Wend
CloseDir (Dir)
Return CNT-3
End Function
Возвращает директорию (возможно с её адресом) по имени и пути файла
Function GetFileParentDir$(FileName$)
For i=Len(FileName) To 1 Step -1
Local c$=Mid(FileName,i,1)
If c="\"
Exit
EndIf
Next
Return Left(FileName,i)
End Function
Функции мои - потому сильно не надейтесь на их надёжность
Демо:
Global test$="C:\folder\file.exten" DebugLog "GetFileExtension$("+test$+")="+GetFileExtension$(test) DebugLog "GetFileName$("+test$+")="+GetFileName$(test) DebugLog "GetFileParentDir$("+test$+")="+GetFileParentDir$(test)
GetFileExtension$(C:\folder\file.exten)=exten
GetFileName$(C:\folder\file.exten)=file
GetFileParentDir$(C:\folder\file.exten)=C:\folder\
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
09.01.2008, 00:16
|
#2
|
ПроЭктировщик
Регистрация: 22.12.2007
Сообщений: 107
Написано 15 полезных сообщений (для 15 пользователей)
|
Ответ: Имена файлов
Нехочу вдаваться в код, но что будет, если у файла двойное расширение? Напрмиер .tar.gz?
|
(Offline)
|
|
09.01.2008, 00:16
|
#3
|
Дэвелопер
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений (для 774 пользователей)
|
Ответ: Имена файлов
А можно еще увидеть функцию которая бы из глобального пути переделывала в локальный, ну то есть вот у нас путь "C:\folder\file.exten" из этого получал такой: ".../file.exten" если приложение находиться в каталоге folder, и чтобы если мы находимся в каталоге выше, ну например "C:\folder\dir", то он бы выдавал "...\file.exten". Сорри за ошибки, если таковые были .
|
(Offline)
|
|
09.01.2008, 00:23
|
#4
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Имена файлов
Сообщение от Fla
Нехочу вдаваться в код, но что будет, если у файла двойное расширение? Напрмиер .tar.gz?
|
gz - расширение
.tar -имя
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
09.01.2008, 00:24
|
#5
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Имена файлов
fla, нормально определится. ".gz" будет.
cmd$=CurrentDir()
DebugLog cmd
DebugLog GetLocalFilePayh$("C:\Develope\Protean\Temp\Sadam\TopSecret\Bush.Idiot")
Function GetLocalFilePayh$(file$)
d$=CurrentDir()
s$=""
For i=1 To Len(file)
If Mid(file,i,1)<>Mid(d,i,1) Then s=s+Mid(file,i,1)
Next
Return s
End Function
|
(Offline)
|
|
09.01.2008, 00:35
|
#6
|
Дэвелопер
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений (для 774 пользователей)
|
Ответ: Имена файлов
HolyDel, как я понял ты написал функцию которая возвращала бы локальный путь до файла, тока ты упустил момент когда мы находимся в каталоге выше, чем лежит сам файл.
|
(Offline)
|
|
09.01.2008, 00:44
|
#7
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Имена файлов
примечание
Function GetFilesInDir%(DirName$) для использования в каталогах, не содержащх вложенных папок. Иначе вместо -3 на выходе нужно добавить услови на базе FileType
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
09.01.2008, 01:02
|
#8
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Имена файлов
вот пропатченная версия:
Function GetLocalFilePayh$(file$)
Replace(file,"/","\")
d$=CurrentDir()
s$=""
For i=1 To Len(file)
If Mid(file,i,1)<>Mid(d,i,1) Then s=s+Mid(file,i,1)
Next
For i=1 To Len(d)
If Mid(file,i,1)<>Mid(d,i,1) And Mid(d,i,1)="\" Then s="..\"+s
Next
Return s
End Function
а также пропатченная Имперская функция
Function GetFilesInDir%(DirName$)
Local Dir=ReadDir(DirName)
If DIR=0
CloseDir (Dir)
Return 0
EndIf
Local file$=""
Local CNT%=0
While True
file$=NextFile$(Dir)
If file<>"." And file<>".." And file<>"" Then CNT=CNT+GetFilesInDir%(file)
If file$="" Then Exit
CNT=CNT+1
Wend
CloseDir (Dir)
Return CNT-3
End Function
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
09.01.2008, 01:06
|
#9
|
ПроЭктировщик
Регистрация: 22.12.2007
Сообщений: 107
Написано 15 полезных сообщений (для 15 пользователей)
|
Ответ: Имена файлов
ХолиДел, да мне просто интересно, я на блице не кодю.
*Админы, сделайте вставку ника
|
(Offline)
|
|
09.01.2008, 02:29
|
#10
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Имена файлов
HolyDel занятное решение Интересно - быстрее чем через определение типа объекта?
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
09.01.2008, 10:31
|
#11
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Имена файлов
не. по хорошему стоило бы определить что ето папка...
в принципе будет работать правильно, но ето:
Local Dir=ReadDir(DirName)
If DIR=0
CloseDir (Dir)
Return 0
EndIf
|
будет выполняться совсем зазря.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 11:25.
|