Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2014, 20:50   #1
Ship_1
Форумчанин
 
Регистрация: 10.02.2014
Сообщений: 526
Печаль Что это она ругается на мой GetOpenFileName? [Delphi7]

Простенькая выдранная из примера для изучения функция
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  ofn: TOpenFilename;
  buffer: array [0..259] of Char;
  OutString: string;

const
  MAXSIZE = 260;

  FilterString = 'All Files' + #0 + '*.*' + #0 + 'Text Files' + #0 + '*.txt' + #0#0;
  OurTitle = 'Выбор файла';

begin
        ofn.lStructSize := SizeOf(ofn);
        ofn.hWndOwner := Application.Handle;
        ofn.hInstance := HInstance;
        ofn.lpstrFilter := FilterString;
        ofn.lpstrFile := buffer;
        ofn.nMaxFile := MAXSIZE;
        ofn.Flags := OFN_FILEMUSTEXIST or OFN_PATHMUSTEXIST or OFN_LONGNAMES or
                      OFN_EXPLORER or OFN_HIDEREADONLY;
        ofn.lpstrTitle := OurTitle;
        if GetOpenFileName(ofn) then
        begin
          OutString := OutString +  ofn.lpstrFile + #13#10;
          OutString := OutString +  ExtractFileName(ofn.lpstrFile) + #13#10;
          OutString := OutString +  ExtractFileExt(ofn.lpstrFile);
          MessageBox(Application.Handle, PChar(OutString), PChar(Application.ExeName), MB_OK);
        end;
end;
И выдаёт ошибку сразу при нажатии кнопки, на которую записана процедура...
Цитата:
Project Project1.exe raiced exception class EAccessViolatoin with message 'Access violation at address 75EDA056 in module 'comdlg32.dll'. Write of address 00000003'.
Что же ей таки не нравится и как с этим бороться?.. На всякий случай: винда - семёрка.
Ship_1 вне форума Ответить с цитированием
Старый 02.04.2014, 05:29   #2
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,876
По умолчанию

Код:
ZeroMemory(ofn, SizeOf(ofn));
В начало добаить.
phomm вне форума Ответить с цитированием
Старый 03.04.2014, 12:58   #3
Ship_1
Форумчанин
 
Регистрация: 10.02.2014
Сообщений: 526
По умолчанию

Не хочет принимать.
Цитата:
Incompatible types: 'tagOFNA' and 'Pointer'
В начало чего? Перед присвоением значений списку ofn?
Добавил перед
Код:
ofn.lStructSize := SizeOf(ofn);
(она это не поняла)
Ship_1 вне форума Ответить с цитированием
Старый 03.04.2014, 13:09   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Код:
  FillChar(ofn, SizeOf(TOpenFilename), 0);
        ofn.lStructSize := SizeOf(ofn);
...
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обьясните пожалуста как и что делает эта программа и почему она это делает. Dimka-novitsek Общие вопросы C/C++ 7 16.10.2013 12:02
Не могу понять, почему ругается на это :( The Real Kos Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 19.09.2012 10:07
если написано что в проце Graf-850 то это встроеная память или она идет как дополнение к основной видюхе goluzov Компьютерное железо 1 01.05.2012 23:01
Что тут не так? Ругается почему-то.... kat297 Общие вопросы Delphi 1 03.06.2010 04:24
Эквалайзер...что это? кто это? Можно ли с ним подружиться? .Phoenix Мультимедиа в Delphi 45 08.04.2010 23:37