Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

GetSaveFileName на Delphi

27K
23 декабря 2008 года
Everhest
44 / / 20.07.2008
Привет всем. Не могу понять в чем ошибка, на асме все прет, а тут видимо не правильно передаются параметры в ofn к примеру
 
Код:
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.
14
23 декабря 2008 года
Phodopus
3.3K / / 19.06.2008
ofn.lpstrFile должен указывать на буфер куда вернется полное имя файла/файлов. Также рекомендую сделать
 
Код:
FillChar(@ofn, sizeof(ofn), #0)

перед заполнением структуры. И еще я не вижу заполнение члена .lStructSize
27K
23 декабря 2008 года
Everhest
44 / / 20.07.2008
А как правильно указывать на delphi ?
14
24 декабря 2008 года
Phodopus
3.3K / / 19.06.2008
Выделить буфер
 
Код:
var
  Buf: array [0..4095] of Char;

или через GetMem(). Обнулить его. Дать его адрес в .lpstrFile, его размер в .nMaxFile
27K
24 декабря 2008 года
Everhest
44 / / 20.07.2008
спасибо
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог