IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> saveDialog, расширение
сообщение
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


Привет!
Я хочу создать файл с выбранным расширением. Использую saveDialog. В лейбл вывожу имя файла, но файл не имеет расширения. Как из saveDialog'а вытащить выбраное расширение? Название файла ввел - "пример".
И как создать файл в дельфи? assign и rewrite? или есть другие способы?

Сообщение отредактировано: Client -


Эскизы прикрепленных изображений
Прикрепленное изображение Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Надо вытягивать расширение из поля Filter и приклеивать его к имени файла. Вот пример:
procedure TForm1.Button1Click(Sender: TObject);
var
sL: TStringList;
ix: Integer;
begin
if SaveDialog1.Execute() then begin
sL := TStringList.Create;
try
ix := 2 * Pred(SaveDialog1.FilterIndex);
ExtractStrings(['|'], [], PChar(SaveDialog1.Filter), sL);
ShowMessage(SaveDialog1.FileName + Copy(sL[ix], 2, Length(sL[ix]) - 1));
finally
sL.Free;
end;
end;
end;

Цитата
И как создать файл в дельфи? assign и rewrite? или есть другие способы?
Да там способов - миллион... Можно заполнить данными тот же TStringList и потом записать его в файл (SaveToFile)... Все зависит от того, какой файл тебе нужен в результате, что он содержать должен.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


ОГО, такой код мне и не снился wacko.gif
Как сделать чтобы при попытке сохранить В УЖЕ существующий файл он выдавал запрос, т.е. не делать самому а с помощью WIN способов?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Ну, я бы сделал так: 1) выделяем тот код, который я привел выше для построения полного имени файла в отдельную функцию, и 2) вешаем обработчик на событие OnCanClose твоего SaveDialog-а:
function GetFullName(dialog: TSaveDialog): string;
var
sL: TStringList;
ix: integer;
begin
sL := TStringList.Create;
try
ix := 2 * Pred(dialog.FilterIndex);
ExtractStrings(['|'], [], PChar(dialog.Filter), sL);
result := dialog.FileName + Copy(sL[ix], 2, Length(sL[ix]) - 1)
finally
sl.Free;
end;
end;

procedure TForm1.SaveDialog1CanClose(Sender: TObject; var CanClose: Boolean);
begin
if FileExists(GetFullName(SaveDialog1)) then begin
CanClose := MessageBox(0, PChar('Вы уверены, что хотите перезаписать файл?'), PChar('Warning'),
MB_YESNO or MB_ICONEXCLAMATION or MB_DEFBUTTON2) = mrYes;
end;
end;
, тогда если будет введено имя существующего файла, ты получишь запрос, хочешь ли его перезаписать. И пока не подтвердишь перезапись или не введешь имя несуществующего файла, диалог не закроется...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


Спасибо!
Пока буду дальше делать
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 2.05.2024 12:12
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name