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