Форум: "Начинающим";
Текущий архив: 2007.11.18;
Скачать: [xml.tar.bz2];
Вниз
получить имя файла без расширения Найти похожие ветки
← →
malyar (2007-10-23 18:09) [0]привет всем
народ подскажите как получить из имени файла с расширением
имя файла без расширения
s:="proga.exe" s:="pr.o.g.a.exe"
как правилино отсеч расширение у выше приведенных файлов?
существует ли функция (поиск вхождения строки в строку) где поиск начинается не сначала а с конца строки ?
← →
Palladin © (2007-10-23 18:11) [1]ага
Function CharPosBack(c:Char;Const s:String):Integer;
Var
i:Integer;
Begin
For i:=Length(s) Downto 1 Do
If s[i]=c Then
Begin
Result:=i;
Exit;
End;
Result:=0;
End;
← →
antonn © (2007-10-23 18:14) [2]
function DeleteExtension( Filename : String) : string;
var Ext : String; extl, p : Integer;
begin
Ext := ExtractFileExt(filename);
extl := Length(Ext);
P := Pos(Ext, Filename);
if P <> 0 then begin
Delete(Filename, Length(Filename) - extl + 1 ,extl);
Result := Filename;
end;
end;
← →
Reindeer Moss Eater © (2007-10-23 18:16) [3]крута
а если proga.exeblablabla.exe ?
← →
clickmaker © (2007-10-23 18:17) [4]ChangeFileExt(Filename, "");
← →
Amoeba © (2007-10-23 18:19) [5]
> antonn © (23.10.07 18:14) [2]
а если имя файла, к примеру будет типа хyz.exe.exe (вполене допустимое, между прочим)? Что получим на выходе?
← →
Palladin © (2007-10-23 18:19) [6]у как жестоко :)
Function FileNameWOExt(Const s:String):String;
Var
n:Integer;
Begin
n:=CharPosBack(".",s);
If n=0 Then Result:=s Else Result:=Copy(s,1,n-1);
End;
← →
Amoeba © (2007-10-23 18:20) [7]
> Reindeer Moss Eater © (23.10.07 18:16) [3]
Опередил!
← →
antonn © (2007-10-23 18:24) [8]
> а если имя файла, к примеру будет типа хyz.exe.exe (вполене
> допустимое, между прочим)? Что получим на выходе?
получим хyz.exe
← →
Amoeba © (2007-10-23 18:25) [9]
> antonn © (23.10.07 18:24) [8]
>
>
> > а если имя файла, к примеру будет типа хyz.exe.exe (вполене
> > допустимое, между прочим)? Что получим на выходе?
>
> получим хyz.exe
>
Естественно!!!
← →
Palladin © (2007-10-23 18:26) [10]
> antonn © (23.10.07 18:24) [8]
пример тебе не верный привели, таким быть должен он (с) Йода :)
file.txt.ext.ext.txt
← →
Reindeer Moss Eater © (2007-10-23 18:27) [11]а если proga.exeblablabla.exe
← →
antonn © (2007-10-23 18:29) [12]давайте сразу скажите, что там не так?
file.txt.ext.ext.txt - file.txt.ext.ext
proga.exeblablabla.exe - proga.exeblablabla
← →
megabyte © (2007-10-23 18:38) [13]Отсекаем с конца 4 символа и всего делов-то...
← →
Reindeer Moss Eater © (2007-10-23 18:38) [14]ок.
а вот это-то зачем?
P := Pos(Ext, Filename);
if P <> 0 then
на случай если расширения нет совсем?
так логичнее просто проверять на пустую строку саму Ext.
← →
malyar (2007-10-23 18:39) [15]thx
← →
antonn © (2007-10-23 18:43) [16]
> Отсекаем с конца 4 символа и всего делов-то...
.mpeg/.jpeg/.divx и тд :)
← →
antonn © (2007-10-23 18:43) [17]
> Reindeer Moss Eater © (23.10.07 18:38) [14]
для наглядности %)
← →
Anatoly Podgoretsky © (2007-10-23 19:23) [18]> malyar (23.10.2007 18:09:00) [0]
ChangeFileExt
← →
Riply © (2007-10-23 22:52) [19]> [6] Palladin © (23.10.07 18:19)
Такой некузяво обработает
C:\My.Super.Puper.Dir\Test.exe
:)
← →
DVM © (2007-10-23 22:55) [20]function ExtractFileNameWoExt(const FileName : string) : string;
begin
Result := ExtractFileName(FileName);
Result := Copy( Result, 1, Length(Result) - Length(ExtractFileExt(Result)));
end;
← →
Riply © (2007-10-24 00:03) [21]> [20] DVM © (23.10.07 22:55)
Споткнемся на: C:\MyDir\MyFile.txt:mydata
Правда, строго говоря, это не совсем файл, но имеет право на существование :)
← →
DVM © (2007-10-24 00:08) [22]
> Riply © (24.10.07 00:03) [21]
так не честно
← →
Германн © (2007-10-24 01:22) [23]
> DVM © (24.10.07 00:08) [22]
>
>
> > Riply © (24.10.07 00:03) [21]
>
> так не честно
>
Не честно предлагать попробовать на своём компьютере имя файла Con. А [21] - это просто шутка, но увы. Лёгка была жизнь только при 8.3 :)
← →
megabyte © (2007-10-24 10:47) [24]
> antonn © (23.10.07 18:43) [16]
>
> > Отсекаем с конца 4 символа и всего делов-то...
>
> .mpeg/.jpeg/.divx и тд :)
фишка в том, что, исходя из задачи, можно понять, какой длины будет расширение :Р *типа отмазался*
← →
Reindeer Moss Eater © (2007-10-24 11:21) [25]FileNameWoExt := Copy(FileName,1,Abs(StrRScan(PChar(FileName),".") - PChar(FileName)));
← →
Riply © (2007-10-24 11:48) [26]>[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 12:22) [27]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 12:54) [28]>[27] Reindeer Moss Eater © (24.10.07 12:22)
Ой торопишся...
На такой файл : FileName := "C:\MySuper.Puper.Dir\TestFile",
приведенный тобой код мне сообщает, что имя без расширения выглядит так: "TestF" :)
← →
Reindeer Moss Eater © (2007-10-24 13:07) [29]Хорошо, будем использовать предварительное ExtractFileName.
Хотя я еще не сдаюсь.
← →
Riply © (2007-10-24 13:31) [30]Я бы попробовала так:
в одном цикле с конца FileName, делала бы проверку типа:
case FileName[i] of
"\": нет расширения - выходим;
":": зависит от того интересуют нас "поточные файлы или нет".
для обычных: нет расширения - выходим;
".": фиксируем сколько символов в расширении, выходим;
else dec(i);
end;
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.11.18;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.049 c