Форум » [x]Harbour » Выделить имя файла из пути » Ответить

Выделить имя файла из пути

Dima: Наваял. Вроде работает. Кто шарит в регулярных выражениях , подскажите если где не прав [pre2] c:="\123\222\345\$\222222ert.IDX" ? regexidx(c,"IDX") wait Func regexidx(a,b) local cRegExp:="([^.\\]+)\."+b local ret:="" if hb_Regexhas( cRegExp , a) ret:=hb_Regex( cRegExp,a,.f.)[1] endif return ret [/pre2] PS По идее в WIN API должно быть нечто готовое.

Ответов - 9

Andrey: Dima пишет: c:="\123\222\345\$\222222ert.IDX" Я бы сделал через aDim := HB_ATokens(c,"\",.F.,.F.) ? aDim[Len(aDim)]

Dima: Да вариант , сенкс.

fil: Вариант, ежели точно уверен, что это файл я в свою определялку файлов в клиборде воткнул и определение папок, кои отличал от файлов наличием расширения. Все работало пока не попалась папка точками Пришлось проверять на атрибут 16


Dima: fil Понял. Учту. Есть вот такая фишка оказывается https://msdn.microsoft.com/ru-ru/library/system.io.path.getfilename%28v=vs.110%29.aspx Но в сях не силен.

Pasha: Есть еще семейство функций из harbour rtl: HB_FNAMEDIR HB_FNAMENAME HB_FNAMEEXT

Dima: Pasha Не знал , сенкс. Тогда надо так HB_FNAMENAME(c)+HB_FNAMEEXT(c) , так как нет функции что бы вернула имя+расширение Упс , есть hb_FNameNameExt

SergKis: hb_fNameMerge(cFullFileName, @cPath, @cName, @cExt [, @cDrive]) cFullFileName := hb_fNameSplit(cPath, cName, cExt [, cDrive])

Alex_Cher: Не обижайте чайника .... harbour rtl - что это и как подключить эти функии (HB_FNAMEDIR, ...) Перерыл всю имеющуюся доку, нет таких ...

Dima: ChangeLog.txt (HARBOUR) [pre2] 2011-02-03 22:43 UTC+0100 Viktor Szakats (vszakats.net/harbour) * include/harbour.hbx * src/rtl/hbfilehi.prg * Renames in new path/fn handling functions. * HB_FNAMEDIRGET() -> HB_FNAMEDIR() * HB_FNAMENAMEGET() -> HB_FNAMENAME() * HB_FNAMENAMEEXTGET() -> HB_FNAMENAMEEXT() * HB_FNAMEEXTGET() -> HB_FNAMEEXT() * HB_FNAMEEXTDEF() -> HB_FNAMEEXTSETDEF() [/pre2] Специально подключать ни чего не нужно , все само подтянется.



полная версия страницы