GetSaveFileName на Delphi
Код:
ofn.lpstrFile:= lpfilename;
мне так чисто интересно, я точно указатель на строку передаю?
Код:
... cut ...
var
Form1: TForm1;
ofn: OPENFILENAME;
filename: Pchar;
name_buffer: PCHAR;
lpTitle:PChar = 'Сохранить';
implementation
{$R *.DFM}
procedure SaveFileName(hParent:HWND; lpfilename, lpTitle:PChar);
const
filter_ext ='*.*';
filter = 'Все файлы (*.*)'+#0+'*.*';
begin
ofn.lpstrCustomFilter:= 0;
ofn.nFilterIndex:= 0;
ofn.nMaxFile:= 1298;
ofn.nMaxFileTitle:= 1600;
ofn.lpstrInitialDir:= 0;
ofn.lpstrDefExt:= filter_ext;
ofn.lStructSize:= sizeof(OPENFILENAME);
ofn.hwndOwner:= hParent;
ofn.hInstance:= GetModuleHandle(nil);
ofn.lpstrFilter:= filter;
ofn.lpstrFile:= lpfilename;
ofn.nMaxFile:= 598;
ofn.lpstrTitle:= lpTitle;
ofn.Flags:= OFN_EXPLORER + OFN_LONGNAMES;
ofn.lpstrFileTitle:= name_buffer;
GetSaveFileName(ofn);
MessageBox(hparent, filename, name_buffer, MB_OK);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
SaveFileName(form1.handle, filename, lpTitle);
edit2.Text:= name_buffer;
end;
end.
var
Form1: TForm1;
ofn: OPENFILENAME;
filename: Pchar;
name_buffer: PCHAR;
lpTitle:PChar = 'Сохранить';
implementation
{$R *.DFM}
procedure SaveFileName(hParent:HWND; lpfilename, lpTitle:PChar);
const
filter_ext ='*.*';
filter = 'Все файлы (*.*)'+#0+'*.*';
begin
ofn.lpstrCustomFilter:= 0;
ofn.nFilterIndex:= 0;
ofn.nMaxFile:= 1298;
ofn.nMaxFileTitle:= 1600;
ofn.lpstrInitialDir:= 0;
ofn.lpstrDefExt:= filter_ext;
ofn.lStructSize:= sizeof(OPENFILENAME);
ofn.hwndOwner:= hParent;
ofn.hInstance:= GetModuleHandle(nil);
ofn.lpstrFilter:= filter;
ofn.lpstrFile:= lpfilename;
ofn.nMaxFile:= 598;
ofn.lpstrTitle:= lpTitle;
ofn.Flags:= OFN_EXPLORER + OFN_LONGNAMES;
ofn.lpstrFileTitle:= name_buffer;
GetSaveFileName(ofn);
MessageBox(hparent, filename, name_buffer, MB_OK);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
SaveFileName(form1.handle, filename, lpTitle);
edit2.Text:= name_buffer;
end;
end.
Код:
FillChar(@ofn, sizeof(ofn), #0)
перед заполнением структуры. И еще я не вижу заполнение члена .lStructSize
А как правильно указывать на delphi ?
Код:
var
Buf: array [0..4095] of Char;
Buf: array [0..4095] of Char;
или через GetMem(). Обнулить его. Дать его адрес в .lpstrFile, его размер в .nMaxFile
спасибо