superboy
asked on
how come no file extension?
how come i save my file using the save file dialog and
the filter is *.txt and i save and
there is no extension when i look at the file i save...
is there a way to get the extension and save with the extension?
the filter is *.txt and i save and
there is no extension when i look at the file i save...
is there a way to get the extension and save with the extension?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Then you should track the array of extentions and check the FilterIndex to find which you append, if the user modifies the filter index in SaveDialog the following procedure appends the correct one:
const
Filters : array[0..1] of string = ('.txt','.rtf');
...
if SaveDialog.Execute then
begin
// if file have an extention it contains .
if Pos('.', SaveDialog.FileName) = 0 then
begin
FileName := SaveDialog.FileName+
Filters[SaveDialog.FilterI ndex];
end;
end;
...
Igor
const
Filters : array[0..1] of string = ('.txt','.rtf');
...
if SaveDialog.Execute then
begin
// if file have an extention it contains .
if Pos('.', SaveDialog.FileName) = 0 then
begin
FileName := SaveDialog.FileName+
Filters[SaveDialog.FilterI
end;
end;
...
Igor
ASKER
i want to save a file as "all files"
that means i want to save as the filename with no extension
whenever the user choose all files (*.*)
how do i do that? with yr code, if i choose (*.*),
the file will be saved as Filename.4D when i choose to save as all files..
the filters i have are *.rtf (lst), *.txt (2nd), *.*(3rd)
that means i want to save as the filename with no extension
whenever the user choose all files (*.*)
how do i do that? with yr code, if i choose (*.*),
the file will be saved as Filename.4D when i choose to save as all files..
the filters i have are *.rtf (lst), *.txt (2nd), *.*(3rd)
// the same order should be given in Filters of SaveDialog
const
Filters : array[0..1] of string = ('.txt','.rtf','*.*');
if Pos('.', SaveDialog.FileName) = 0 then
begin
if Filters[SaveDialog.FilterI ndex] = '*.*' then
FileName := SaveDialog.FileName+ '.'
else
FileName := SaveDialog.FileName+
Filters[SaveDialog.FilterI ndex];
end
Igor
const
Filters : array[0..1] of string = ('.txt','.rtf','*.*');
if Pos('.', SaveDialog.FileName) = 0 then
begin
if Filters[SaveDialog.FilterI
FileName := SaveDialog.FileName+ '.'
else
FileName := SaveDialog.FileName+
Filters[SaveDialog.FilterI
end
Igor
ASKER
const
Filters: array[0..3] of string=('', '.rtf','.txt', '*.*');
SaveFileDialog.FileName := Caption;
if SaveFileDialog.Execute then
begin
if Pos('.', SaveFileDialog.FileName) = 0 then
begin
if Filters[SaveFileDialog.Fil terIndex] ='*.*' then
begin
PathName := SaveFileDialog.FileName + '';
Caption := ExtractFileName(PathName);
end
else
begin
PathName := SaveFileDialog.FileName + Filters[SaveFileDialog.Fil terIndex];
Caption := ExtractFileName(PathName);
end;
end;
Save1Click(Sender);
end;
what u mean the order in the filters? can u explain the Filters
array thing?
i use the code above and surprisely it work...but i am not
sure why there is a need for the extra element in the array..
that's the empty string "''"...can u explain?
Filters: array[0..3] of string=('', '.rtf','.txt', '*.*');
SaveFileDialog.FileName := Caption;
if SaveFileDialog.Execute then
begin
if Pos('.', SaveFileDialog.FileName) = 0 then
begin
if Filters[SaveFileDialog.Fil
begin
PathName := SaveFileDialog.FileName + '';
Caption := ExtractFileName(PathName);
end
else
begin
PathName := SaveFileDialog.FileName + Filters[SaveFileDialog.Fil
Caption := ExtractFileName(PathName);
end;
end;
Save1Click(Sender);
end;
what u mean the order in the filters? can u explain the Filters
array thing?
i use the code above and surprisely it work...but i am not
sure why there is a need for the extra element in the array..
that's the empty string "''"...can u explain?
In the save dialog you specify the extensions that SaveDialog should know. Now there is an order there. For example first one can be '*.txt', second be '*.rtf'. I mean this as an order of the filters. If THIS order do not match the extension order you defined in your program for checking which extension user selects, the program works wrong.
You can safely remove the empty string from array. But this is due to the fact that SaveDialog.FilterIndex's base value is 1. so the decleration should be:
const
Filters: array[1..3] of string=('.rtf','.txt', '*.*');
BUT, That is not empty string my friend you should append a DOT for filenames with no extentions. If you look closely to the code above(I just wrote before yours) the thing in quote is a DOT, FULLSTOP '.'. Is that ok? so when you tell OS that your file is named as 'TEST.' it realy names is as 'TEST'. So the code you have given as
PathName := SaveFileDialog.FileName + '';
should be
PathName := SaveFileDialog.FileName + '.';
igor
You can safely remove the empty string from array. But this is due to the fact that SaveDialog.FilterIndex's base value is 1. so the decleration should be:
const
Filters: array[1..3] of string=('.rtf','.txt', '*.*');
BUT, That is not empty string my friend you should append a DOT for filenames with no extentions. If you look closely to the code above(I just wrote before yours) the thing in quote is a DOT, FULLSTOP '.'. Is that ok? so when you tell OS that your file is named as 'TEST.' it realy names is as 'TEST'. So the code you have given as
PathName := SaveFileDialog.FileName + '';
should be
PathName := SaveFileDialog.FileName + '.';
igor
ASKER
the user will select from the save file dialog and
your method only shows to save in *.txt format... - the default filename.
i want to get the filter from the save file dialog and
save in whatever formats the user choose..