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

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

Как вычесть из строки? [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
если я правильно понял, что речь идет о попытке укоротить строку


Наверх

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