![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как вычесть из строки? [D7, XP]
Adios © (2006-05-10 18:34:00)Как вычесть из конца строки определённое количество символов, заранее спасибо.
Пусик (2006-05-10 20:26:00) [1]ChangeFileExt(ExtractFileName(FilePath),'');
Desdechado (2006-05-10 20:18:00) [2]begin...end © (10.05.06 19:29) [13]
сорри, я опять невнимательно код посмотрел :(
begin...end (2006-05-10 19:29:00) [3]> Desdechado © (10.05.06 19:21) [11]
> ведь если у файла расширения нет, а в папке есть, то не
> будет работать
Будет. Потому что после ExtractFileName в строке Result никаких папок уже не останется. А останется только имя файла, в котором LastDelimiter и будет искать последнюю точку.
antonn (2006-05-10 19:22:00) [4]Desdechado © (10.05.06 19:21) [11]
function DirectoryExists(const Name: string): Boolean;
asm
PUSH EAX
CALL GetFileAttributes
INC EAX
JZ @@exit
DEC EAX
{$IFDEF PARANOIA}
DB $24, FILE_ATTRIBUTE_DIRECTORY
{$ELSE}
AND AL, FILE_ATTRIBUTE_DIRECTORY
{$ENDIF}
SETNZ AL
@@exit:
end;
:)
Desdechado (2006-05-10 19:21:00) [5]begin...end © (10.05.06 19:17) [9]
а кто сказал, что точка всегда есть в имени файла и что ее не бывает в именах папок?
ведь если у файла расширения нет, а в папке есть, то не будет работать
Adios (2006-05-10 19:19:00) [6]извиняюсь за напряг, но потому и пишу вопросы в конференции для начинающих :)
begin...end (2006-05-10 19:17:00) [7]function DeleteFilePathAndExt(const FileName: string): string;
var
I: Integer;
begin
Result := ExtractFileName(FileName);
I := LastDelimiter('.', Result);
if I > 0 then
Result := Copy(Result, 1, Length(Result) - I)
end
antonn (2006-05-10 19:16:00) [8]мдя... DeleteExtension(extractfilename())
Adios (2006-05-10 19:11:00) [9]подскажы ещё как сделать чтобы эта функция не выводила путь к файлу?
antonn (2006-05-10 19:04:00) [10]
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;
ЗЫ не мое...
Adios (2006-05-10 18:56:00) [11]мне надо чтобы получилось что-то вроде:
extractfilename(FileListBox1.FileName)-extrackfileext(FileListBox1.FileName)
тока на языке делфи, потому что - не прокатывает
Desdechado (2006-05-10 18:49:00) [12]расширение не обязательно 3 знака
см. ExtractFileExt, Pos и Copy
Loginov Dmitry (2006-05-10 18:49:00) [13]Copy, Delete, SetLength и т.д.
Adios (2006-05-10 18:44:00) [14]если индекс ставить то лажа получается,
extractfilename(FileListBox1.FileName))
мне надо чтото добавить в вышеприведённую строку чтобы убрать последние 4 символа, тобишь расширение, ты знаешь как это стелать?
Desdechado (2006-05-10 18:37:00) [15]Copy
если я правильно понял, что речь идет о попытке укоротить строку