Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Простой вопрос про сохранение

11K
14 июня 2005 года
mindwork
4 / / 14.06.2005
Сразу извеняюсь если вопрос тупой, но я только начал изучать Delphi.

Не пойму как сохранить файл с расширением заданным в маске. Что нужно добавить в код чтоб файл сохранился с расширением .p/ DefaultEXT не подходит.

procedure TfrmMain.Save1Click(Sender: TObject);

begin
SaveDialog1.Filter :='Все (*.*)|*.*|Файлы Parser3 (*.p)|*.p';
if SaveDialog1.Execute then begin
SynEdit1.Lines.SaveToFile(SaveDialog1.FileName);
SynEdit1.SetFocus;
end;
end;
303
15 июня 2005 года
makbeth
1.0K / / 25.11.2004
Цитата:
Originally posted by mindwork
Сразу извеняюсь если вопрос тупой, но я только начал изучать Delphi.

Не пойму как сохранить файл с расширением заданным в маске. Что нужно добавить в код чтоб файл сохранился с расширением .p/ DefaultEXT не подходит.

procedure TfrmMain.Save1Click(Sender: TObject);

begin
SaveDialog1.Filter :='Все (*.*)|*.*|Файлы Parser3 (*.p)|*.p';
if SaveDialog1.Execute then begin
SynEdit1.Lines.SaveToFile(SaveDialog1.FileName);
SynEdit1.SetFocus;
end;
end;


У TSaveDialog есть свойство FilterIndex, которое указывает на выбранный в нем фильтр. Анализируй его значение и подставляй нужное расширение.

11K
15 июня 2005 года
mindwork
4 / / 14.06.2005
Цитата:
Originally posted by makbeth
У TSaveDialog есть свойство FilterIndex, которое указывает на выбранный в нем фильтр. Анализируй его значение и подставляй нужное расширение.



Вобщем я помучился и вот это заработало.

Код:
procedure TfrmMain.Save1Click(Sender: TObject);

begin
  SaveDialog1.Filter :='Âñå ôàéëû (*.*)|*.*|Ôàéëû Parser3 (*.p)|*.p|Ôàéëû HTML (*.html)|*.html';
  if SaveDialog1.Execute then begin
    if SaveDialog1.FilterIndex = 1 then
    SynEdit1.Lines.SaveToFile(SaveDialog1.FileName + 'p');
    if SaveDialog1.FilterIndex = 2 then
    SynEdit1.Lines.SaveToFile(SaveDialog1.FileName + 'html')
    else
    SynEdit1.Lines.SaveToFile(SaveDialog1.FileName);
    SynEdit1.SetFocus;
  end;
end;


Но вот какой вопрос неужели для каждого типа файлов придётся писать условие может как то по другому можно более красиво ?
303
16 июня 2005 года
makbeth
1.0K / / 25.11.2004
Цитата:
Originally posted by mindwork
Но вот какой вопрос неужели для каждого типа файлов придётся писать условие может как то по другому можно более красиво ?


Нужно использовать не if, а case или (что наверное даже лучше):

 
Код:
procedure TfrmMain.Save1Click(Sender: TObject);
const Extensions: array[0..2] of string = ('', 'p', 'html');
begin
  SaveDialog1.Filter :='Âñå ôàéëû (*.*)|*.*|Ôàéëû Parser3 (*.p)|*.p|Ôàéëû HTML (*.html)|*.html';
  if SaveDialog1.Execute then
   SynEdit1.Lines.SaveToFile(SaveDialog1.FileName + Extensions[SaveDialog1.FilterIndex]);
end;
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог