Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > Полезные функции

Полезные функции Выкладываем полезные функции, чтоб не изобретать велосипед заново...

Ответ
 
Опции темы
Старый 08.01.2008, 23:33   #1
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 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
Fla
ПроЭктировщик
 
Регистрация: 22.12.2007
Сообщений: 107
Написано 15 полезных сообщений
(для 15 пользователей)
Ответ: Имена файлов

Нехочу вдаваться в код, но что будет, если у файла двойное расширение? Напрмиер .tar.gz?
(Offline)
 
Ответить с цитированием
Старый 09.01.2008, 00:16   #3
H@NON
Дэвелопер
 
Регистрация: 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
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 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
HolyDel
 
Регистрация: 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
H@NON
Дэвелопер
 
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений
(для 774 пользователей)
Ответ: Имена файлов

HolyDel, как я понял ты написал функцию которая возвращала бы локальный путь до файла, тока ты упустил момент когда мы находимся в каталоге выше, чем лежит сам файл.
(Offline)
 
Ответить с цитированием
Старый 09.01.2008, 00:44   #7
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 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
HolyDel
 
Регистрация: 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)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
H@NON (09.01.2008)
Старый 09.01.2008, 01:06   #9
Fla
ПроЭктировщик
 
Регистрация: 22.12.2007
Сообщений: 107
Написано 15 полезных сообщений
(для 15 пользователей)
Ответ: Имена файлов

ХолиДел, да мне просто интересно, я на блице не кодю.

*Админы, сделайте вставку ника
(Offline)
 
Ответить с цитированием
Старый 09.01.2008, 02:29   #10
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Имена файлов

HolyDel занятное решение Интересно - быстрее чем через определение типа объекта?
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 09.01.2008, 10:31   #11
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Имена файлов

не. по хорошему стоило бы определить что ето папка...
в принципе будет работать правильно, но ето:
Local Dir=ReadDir(DirName)
If DIR=0
CloseDir (Dir)
Return 0
EndIf
будет выполняться совсем зазря.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение и запись файлов Spiderman JAVA Micro Edition 8 20.02.2009 13:46
Поиск файлов ~Lexx~ Delphi 1 29.01.2009 15:19
Вложение файлов Romanzes Наш форум 2 08.08.2008 14:48
Запаковщик файлов KEKC 2D-программирование 1 03.07.2007 16:47
проба аттачи файлов SubZer0 Баги 23 22.06.2006 14:29


Часовой пояс GMT +4, время: 17:19.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com