Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема savedialog: фильтр+запись 
V
    Опции темы
gambit
Дата 26.1.2007, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: нет
Всего: 40



Подскажите пожалуйста.
В savedialog я создал фильтр Файл теста *.test
Но при сохранении к имени файла расширение автоматически не дописывается.
Приходится делать руками. Что можно сделать?
PM MAIL ICQ Skype   Вверх
Veitmen
Дата 26.1.2007, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 288
Регистрация: 10.11.2006
Где: СПБ

Репутация: нет
Всего: 4



А помоему ничего.) Фильтр есть фильтр, фильтрует файлы и все. Когда ты сохраняешь файл, ты должен сам указывать имя и расширение. Другой вопрос что надо проверить написал ли пользователь расширение, если да, то сохр файл и все, если нет то дописываешь расширение.
PM MAIL ICQ   Вверх
VICTAR
Дата 26.1.2007, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1108
Регистрация: 6.10.2006

Репутация: 37
Всего: 80



Если фильтр всего один, то его можно прописать в DefaultExt, иначе только руками в зависимости от FilterIndex.
PM MAIL   Вверх
Yanis
Дата 26.1.2007, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Если требуется всегда сохранять файл с выбранным расширением, то я бы делал так:
Код
function GetFilterExt(const sFilter: string; nIndex: Integer): string;
var
  ext: string;
begin
  Result := '';
  with TStringList.Create do
    begin
      Text := StringReplace(sFilter, '|', #13#10, [rfReplaceAll]);
      if ((nIndex - 1) * 2 + 1) > Count - 1 then begin Free; Exit; end;
      ext := Strings[(nIndex - 1) * 2 + 1];
      Result := Copy(ext, 2, Length(ext) - 1);
      Free;
    end;
end;

begin
  with SaveDialog1 do
    if Execute then
      if ExtractFileExt(FileName) = GetFilterExt(Filter, FilterIndex) then
        ShowMessage(FileName)
      else
        ShowMessage(FileName + GetFilterExt(Filter, FilterIndex));
end;


или более снисходительный вариант: если расширение файла присутствует среди возможных.
Код
function ExtractFileName(const FileName: string; bIncludeExt: Boolean): string;
begin
  if bIncludeExt then Result := SysUtils.ExtractFileName(FileName)
  else Result := Copy(SysUtils.ExtractFileName(FileName), 1, Pos('.', SysUtils.ExtractFileName(FileName)) - 1);
end;

begin
  with SaveDialog1 do
    if Execute then
      if ExtractFileExt(FileName) = GetFilterExt(Filter, FilterIndex) then
        ShowMessage(FileName)
      else
        if Pos(ExtractFileExt(SaveDialog1.FileName), SaveDialog1.Filter) > 0 then
          ShowMessage(SaveDialog1.FileName)
        else
          ShowMessage(ExtractFileName(FileName, False) + GetFilterExt(Filter, FilterIndex));
end;


Добавлено @ 11:48 
Цитата(gambit @  26.1.2007,  11:50 Найти цитируемый пост)
Что можно сделать?

Ничего в плане автоматизации. Всё делается вручную.


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
gambit
Дата 26.1.2007, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: нет
Всего: 40



Yanis, Спасобо большое, я твой код посмотрю, но расширение мне надо только одно поэтому метод VICTAR, мне помог.
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0436 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.