Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

получить имя файла без расширения [D7, XP]


Страницы:   1 2

malyar ©   (2007-10-23 18:09:00) 

привет всем
народ подскажите как получить из имени файла с расширением
имя файла без расширения
s:='proga.exe' s:='pr.o.g.a.exe'
как правилино отсеч расширение у выше приведенных файлов?

существует ли функция (поиск вхождения строки в строку) где поиск начинается не сначала а с конца строки ?


Riply   (2007-10-24 13:31:00) [1]

Я бы попробовала так:
в одном цикле с конца FileName, делала бы проверку типа:
case FileName[i] of
 '\': нет расширения - выходим;
 ':': зависит от того интересуют нас "поточные файлы или нет".
      для обычных: нет расширения - выходим;
 '.': фиксируем сколько символов в расширении, выходим;
 else dec(i);
end;


Reindeer Moss Eater   (2007-10-24 13:07:00) [2]

Хорошо, будем использовать предварительное ExtractFileName.
Хотя я еще не сдаюсь.


Riply   (2007-10-24 12:54:00) [3]

>[27] Reindeer Moss Eater ©   (24.10.07 12:22)

Ой торопишся...
На такой файл : FileName := 'C:\MySuper.Puper.Dir\TestFile',
приведенный тобой код мне сообщает, что имя без расширения выглядит так: "TestF" :)


Reindeer Moss Eater   (2007-10-24 12:22:00) [4]

SetLength(FileNameWoExt,Length(FileName));
ZeroMemory(PChar(FileNameWoExt),Length(FileNameWoExt));

StrLCopy(PChar(FileNameWoExt),
         PChar(Max(Integer(PChar(FileName)),succ(Integer(StrRScan(PChar(FileName),'\')))) ),
         Abs(
             StrRScan(PChar(FileName),'.')
             -
             PChar(Max(Integer(PChar(FileName)),succ(Integer(StrRScan(PChar(FileName),'\')))) )
             )
          );

:)


Riply   (2007-10-24 11:48:00) [5]

>[25] Reindeer Moss Eater ©   (24.10.07 11:21)
> Copy(FileName,1,Abs(StrRScan(PChar(FileName),'.') - PChar(FileName)));

Напартачим с таким файлом:
C:\MySuper.Puper.Directory\FileWithOutExt    
:)


Reindeer Moss Eater   (2007-10-24 11:21:00) [6]

FileNameWoExt := Copy(FileName,1,Abs(StrRScan(PChar(FileName),'.') - PChar(FileName)));


megabyte   (2007-10-24 10:47:00) [7]


> antonn ©   (23.10.07 18:43) [16]
>
> > Отсекаем с конца 4 символа и всего делов-то...
>
> .mpeg/.jpeg/.divx и тд :)

фишка в том, что, исходя из задачи, можно понять, какой длины будет расширение :Р *типа отмазался*


Германн   (2007-10-24 01:22:00) [8]


> DVM ©   (24.10.07 00:08) [22]
>
>
> > Riply ©   (24.10.07 00:03) [21]
>
> так не честно
>

Не честно предлагать попробовать на своём компьютере имя файла Con. А [21] - это просто шутка, но увы. Лёгка была жизнь только при 8.3 :)


DVM   (2007-10-24 00:08:00) [9]


> Riply ©   (24.10.07 00:03) [21]

так не честно


Riply   (2007-10-24 00:03:00) [10]

> [20] DVM ©   (23.10.07 22:55)
Споткнемся на: C:\MyDir\MyFile.txt:mydata
Правда, строго говоря, это не совсем файл, но имеет право на существование :)


DVM   (2007-10-23 22:55:00) [11]

function ExtractFileNameWoExt(const FileName : string) : string;
begin
 Result := ExtractFileName(FileName);
 Result := Copy( Result, 1, Length(Result) - Length(ExtractFileExt(Result)));
end;


Riply   (2007-10-23 22:52:00) [12]

> [6] Palladin ©   (23.10.07 18:19)
Такой некузяво обработает
C:\My.Super.Puper.Dir\Test.exe
:)


Anatoly Podgoretsky   (2007-10-23 19:23:00) [13]

> malyar  (23.10.2007 18:09:00)  [0]

ChangeFileExt


antonn   (2007-10-23 18:43:00) [14]


> Отсекаем с конца 4 символа и всего делов-то...

.mpeg/.jpeg/.divx и тд :)


antonn   (2007-10-23 18:43:00) [15]


> Reindeer Moss Eater ©   (23.10.07 18:38) [14]

для наглядности %)


malyar   (2007-10-23 18:39:00) [16]

thx


Reindeer Moss Eater   (2007-10-23 18:38:00) [17]

ок.
а вот это-то зачем?

P := Pos(Ext, Filename);
if P <> 0 then

на случай если расширения нет совсем?
так логичнее просто проверять на пустую строку саму Ext.


megabyte   (2007-10-23 18:38:00) [18]

Отсекаем с конца 4 символа и всего делов-то...


antonn   (2007-10-23 18:29:00) [19]

давайте сразу скажите, что там не так?
file.txt.ext.ext.txt - file.txt.ext.ext
proga.exeblablabla.exe - proga.exeblablabla


Reindeer Moss Eater   (2007-10-23 18:27:00) [20]

а если proga.exeblablabla.exe


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо