![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SaveDialog. Как убрать путь? [D6, Win95/98]
AL2002 © (2002-10-09 19:23:00)При повторном сохранении файла в окошке SaveDialoga в поле "Имя файла" появляется C:\Path\FileName.txt
Как избавиться от этого бага (или фичи)? Т.е. чтобы было только имя файла. Без пути к нему.
Song (2002-10-11 15:08:00) [1]Во первых это событие, оно ничего не меняет, оно возникает при изменении типа файла. А менять должны Вы.
AL2002 (2002-10-11 15:04:00) [2]>Song © (11.10.02 14:56)
Знаю. Но он меняет тип в памяти, а не визуально.
А я хочу, чтобы и в памяти, и чтоб видно сразу было, какое расширение будет.
Song (2002-10-11 14:56:00) [3]Дык это ж очевидно: TSaveDialog.onTypeChange
AL2002 (2002-10-11 14:54:00) [4]>Song © (11.10.02 14:46)
Смотрите, имя файла — SSS.TXT. Я меняю расширение на BMP, а файл такой же и остаётся — SSS.TXT
В фотошопе он сразу же меняется на SSS.BMP
Вот.
Song (2002-10-11 14:46:00) [5]Подождите, дык какая празница какой DefaultExt. Ведь файл-то сохраняете Вы, а не TSaveDialog?! Поэтому какое имя зададите такое и будет.
AL2002 (2002-10-11 14:40:00) [6]>Song © (11.10.02 14:31)
Вот здесь AL2002 © (09.10.02 20:35)
>Best Before 2024 (11.10.02 14:34)
Брык, моя радость. Вот уж да то да.
Best Before 2024 (2002-10-11 14:34:00) [7]>>Вот Фотошоп при сохранении может менять расширение файла сразу >>же, как только пользователь это расширение меняет
Тогда фотошоп и вызывай!
Song (2002-10-11 14:31:00) [8]2AL2002 © (11.10.02 14:26)
А в чём проблема-то?
AL2002 (2002-10-11 14:26:00) [9]Всё это фигня. Вот Фотошоп при сохранении может менять расширение файла сразу же, как только пользователь это расширение меняет. Не лохи, значит, его делали.
Best Before 2024 (2002-10-11 13:30:00) [10]alena.svt © (10.10.02 22:04)
>>Плиз нате если так хотите.
S := ExtractFileName(RemoveFilenameExt("AAA.CCC.BBB.CCC"));
Спасибо :)))
И зачем городить целую свою функцию?
С уважением,
REA (2002-10-11 13:20:00) [11]А разрешить менять текущий каталог если во флагах компонента?
Song (2002-10-11 13:17:00) [12]Действительно, Алён, вариант с вырезом части имени, неправилен, далеко не все люди используют "правильные" имена файлов. Наиболее легко действительно через ChangeFileExt(), но если хочется поизвращаться, тогда можно так:
With SaveDialog1 Do FileName:=StringReplace(FileName,ExtractFileExt(FileName),"",[rfReplaceAll]);
Pumpkin (2002-10-11 11:10:00) [13]2alena.svt
а если "file.txt.001.txt"?
Надо ChangeFileExt( FileName,".");
alena.svt (2002-10-10 22:04:00) [14]Best Before 2024 (10.10.02 18:22)
Эта функция вылезла совсем из другого разговора с автором ветки
И мы уже посмеялись , что сносит все напрочь. Но вылезла она из того что ваш код ему не поиогал.
Плиз нате если так хотите.
function RemoveFilenameExt(FileName : string) : string;
var Ext : string;
begin
Result := ExtractFileName(FileName);
Ext := ExtractFileExt(FileName);
if Ext <> "" then
Delete(Result, Pos(Ext, Result), Length(Ext));
end;
Dialog.Filename:=ExtractFileName(RemoveFilenameExt(Dialod.filename));
Best Before 2024 (2002-10-10 18:23:00) [15]2 Anatoly Podgoretsky © (09.10.02 22:44)
Не посмотрел, извините
:))
Best Before 2024 (2002-10-10 18:22:00) [16]2 alena.svt © (09.10.02 23:26)
А что, в имени файла точки быть не может? ;)
Dialog.Filename:=ExtractFileName(ChangeFileExt(Dialod.filename, ""));
AL2002 (2002-10-10 18:14:00) [17]Как в этом сейвдиалоге поменять (или очистить) поле "Имя файла"?
Какую сендмессагу слать?
alena.svt (2002-10-09 23:26:00) [18]function RemoveExt(const FileName: string): string;
begin
if Pos(".",FileName) <> 0 then
Result:= Copy(FileName,1,Pos(".",FileName)-1)
else
Result:=FileName;
end;
Потом
Dialog.Filename:=ExtractFileName(RemoveExt(Dialod.filename));
Anatoly Podgoretsky (2002-10-09 22:44:00) [19]Dialog.Filename := ChangeFileExt(ExtractFileName(Dialog.Filename,""));:-)
AL2002 (2002-10-09 22:35:00) [20]Да, ExtractFileName немного помог — убрал нафиг путь к файлу.
Зато расширение осталось, паскуда. Его, наверное, придётся грубо выдернуть. Вместе с точкой.