Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.09.2009, 20:27   #1
Бутаков_Сергей
Пользователь
 
Регистрация: 27.05.2009
Сообщений: 55
Вопрос Получить расширение файла

Пусть дан адрес по которому размещается файл: C:\WINDOWS\Win\A5CD.exe
Надо вырезать расширение файла, начиная отслеживать положение точки с конца строки.
Вот так делал я, но что то не получилось :

Код:
const
     a: string = 'Hello!';
var
     i: integer;
     x: string;
begin
  for i:= Length(a) downto 1 do begin
       x:= Copy(a, i , 1);
  end;
End.
Но в этом фрагменте кода, я просто учился как взять один символ с конца строки, а Delphi берет его почему то с начала строки.

Помогите разобраться как это можно реализовать.

Последний раз редактировалось Stilet; 21.09.2009 в 10:05.
Бутаков_Сергей вне форума Ответить с цитированием
Старый 20.09.2009, 20:30   #2
Вавел из ГМТУ
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 896
По умолчанию

ExtractFileExt(...) - вырезает из пути файла его расширение.

Код:
x := '';
for i:= Length(a) downto 1 do begin
If a[i] = '.' Then Break;
x:= x + a[i];
end;
Вавел из ГМТУ вне форума Ответить с цитированием
Старый 20.09.2009, 20:31   #3
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Есть же стандартная функция:
extractfileExt
Можно ещё так:
Код:
function ExtractFormat(const PathorFileName: string): string;
  var
    i: Integer;
  begin
    i := LastDelimiter('.', PathorFileName);
   Result := Copy(PathorFileName, i + 1, Length(PathorFileName) - (i));
end;
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 20.09.2009, 20:54   #4
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
По умолчанию

Цитата:
Сообщение от Бутаков_Сергей Посмотреть сообщение
Пусть дан адрес по которому размещается файл: C:\WINDOWS\Win\A5CD.exe
Надо вырезать расширение файла, начиная отслеживать положение точки с конца строки.
Вот так делал я, но что то не получилось :

const
a: string = 'Hello!';
var
i: integer;
x: string;
begin
for i:= Length(a) downto 1 do begin
x:= Copy(a, i , 1);
end;
End.
Но в этом фрагменте кода, я просто учился как взять один символ с конца строки, а Delphi берет его почему то с начала строки.

Помогите разобраться как это можно реализовать.
Всё правильно берёт делфи , просто цикл из конца в начало , и последний проход цикла возьмёт первый элемент строки
Lime вне форума Ответить с цитированием
Старый 20.09.2009, 21:29   #5
Бутаков_Сергей
Пользователь
 
Регистрация: 27.05.2009
Сообщений: 55
По умолчанию

Всем большое спасибо. Но не могли бы вы меня подтолкнуть на правильную мысль моего кода, я хочу понять как начать читать из конца строки с помощью цикла...
Бутаков_Сергей вне форума Ответить с цитированием
Старый 20.09.2009, 21:33   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

если нужно читать до опред символа, то лучше через while
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 21.09.2009, 10:04   #7
Бутаков_Сергей
Пользователь
 
Регистрация: 27.05.2009
Сообщений: 55
По умолчанию

Цитата:
если нужно читать до опред символа, то лучше через while
А если имя файла будет A.DH.exe, то while здесь не помощник, здесь однозначно нужно считывать с конца строки
Бутаков_Сергей вне форума Ответить с цитированием
Старый 21.09.2009, 10:18   #8
GenniY
Форумчанин
 
Регистрация: 09.09.2009
Сообщений: 181
Счастье

Пользуйся тем, что уже есть.
Возьми спец. функцию ExtractFileExt().
Получил помощь — отблагодарил.
GenniY вне форума Ответить с цитированием
Старый 21.09.2009, 10:39   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от Бутаков_Сергей Посмотреть сообщение
А если имя файла будет A.DH.exe, то while здесь не помощник,
почему не помощник?
расширение это последняя точка и после нее
то есть тут .exe расширение
A.DH имя.

если правильно сделать условие то все четко будет

Цитата:
здесь однозначно нужно считывать с конца строки
дык читайте пока точку не найдете, пример показать?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 21.09.2009 в 10:41.
Пепел Феникса вне форума Ответить с цитированием
Старый 21.09.2009, 11:08   #10
Бутаков_Сергей
Пользователь
 
Регистрация: 27.05.2009
Сообщений: 55
По умолчанию

Было бы не плохо, если вы покажите пример
Бутаков_Сергей вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как изменить расширение файла Dux Помощь студентам 12 25.08.2009 15:38
Получить имя файла Delphi7 AlexandЯ Помощь студентам 7 29.04.2009 12:58
Расширение файла Александр! Операционные системы общие вопросы 9 21.02.2009 16:37
Ошибка "Неизвестное расширение файла" prog38 Помощь студентам 25 25.07.2008 10:18
Как получить имя файла Crazyman Работа с сетью в Delphi 4 11.07.2008 00:47