 |
|

09.12.2009, 10:29
|
|
Участник форума
Регистрация: 19.05.2007
Сообщений: 281
С нами:
9989619
Репутация:
106
|
|
Сообщение от winterfrost
fclose(fp);
- если файл не открылся, мб и не надо его закрывать? =)
В этом ты прав)
The fopen() function opens a file indicated by fname and returns a stream associated with that file. mode is used to determine how the file will be treated (i.e. for input, output, etc).
If there is an error, fopen() returns NULL.
Если файл не открыт то он пытается закрыть указатель на адрес файла который равен 0 поэтому и получает ошибку сегментации 
|
|
|

09.12.2009, 11:18
|
|
Познающий
Регистрация: 18.08.2008
Сообщений: 45
С нами:
9331083
Репутация:
64
|
|
Код:
if ((fp=fopen(files[i],"r+"))==NULL) {
perror("fopen");
i++;
continue; // <--
}
попробуй добавить continue, что-бы перейти к следующей интерации цикла
|
|
|

09.12.2009, 11:41
|
|
Участник форума
Регистрация: 27.10.2008
Сообщений: 215
С нами:
9230381
Репутация:
90
|
|
Всем спасибо, исправил.
|
|
|

09.12.2009, 17:03
|
|
Постоянный
Регистрация: 06.05.2007
Сообщений: 393
С нами:
10008797
Репутация:
398
|
|
кто в курсе как проактивно защитить файл от удаления в системе windows ?
типа LockFileEx, ZwLockFileEx, NtLockFileEx
|
|
|

09.12.2009, 17:13
|
|
Познающий
Регистрация: 16.07.2008
Сообщений: 82
С нами:
9379631
Репутация:
142
|
|
кто в курсе как проактивно защитить файл от удаления в системе windows ? типа LockFileEx, ZwLockFileEx, NtLockFileEx
Удаление файла сводиться к отсылке IRP_MJ_SET_INFORMATION c FileInformationClass = FileDispositionInformation.
Вывод: писать драйвер фильтр фс и отклонять такие irp для нужного файла.
Последний раз редактировалось _antony; 09.12.2009 в 17:15..
|
|
|

09.12.2009, 19:42
|
|
Участник форума
Регистрация: 10.08.2009
Сообщений: 238
С нами:
8817310
Репутация:
108
|
|
Подскажите, как в Visual Studio 2008 в PictureControl программно загрузить картинку JPG из файла, на API.
|
|
|

09.12.2009, 21:28
|
|
Новичок
Регистрация: 10.03.2009
Сообщений: 10
С нами:
9037993
Репутация:
0
|
|
Подскажите функцию, которая при закрытии формы выдавала бы информационное сообщение с кнопками Да, Нет, Отмена. При нажатии да - открывается окно для сохранения файла, при нажатии нет - программа закрывается, при отмене - остаётся всё как было.
|
|
|

09.12.2009, 21:43
|
|
Участник форума
Регистрация: 19.05.2007
Сообщений: 281
С нами:
9989619
Репутация:
106
|
|
Сообщение от kopBaJIoJI
Подскажите функцию, которая при закрытии формы выдавала бы информационное сообщение с кнопками Да, Нет, Отмена. При нажатии да - открывается окно для сохранения файла, при нажатии нет - программа закрывается, при отмене - остаётся всё как было.
необходимо перехватить событие закрытие формы и вызвать свою функцию. В Qt допустим достаточно переопределить функцию закрытия формы в классе пример отлично разбирается в книге Qt 4. Программирование GUI на С++. В WinAPI примерно так:
PHP код:
#include <windows.h>
// Объявления функций
BOOL RegClass(WNDPROC, LPCTSTR, UINT);
LRESULT CALLBACK WndProc(HWND,UINT, WPARAM, LPARAM); // оконные процедуры
HINSTANCE hInstance;
char szMainClass[] = "MainClass";
char szTitle[] = "Пример 1.2";
// Главная функция приложения
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst,
LPSTR IpszCmdLine, int nCmdShow)
{
MSG msg;
hInstance = hInst;
HWND hwnd;
if (!RegClass(WndProc, szMainClass, COLOR_DESKTOP))
return FALSE;
// До создания окна узнаём габариты экрана в пикселях
int w = GetSystemMetrics(SM_CXSCREEN) - 1; // Ширина
int h = GetSystemMetrics(SM_CYSCREEN) - 1; // Высота
hwnd = CreateWindow(szMainClass, szTitle,
WS_POPUPWINDOW | WS_CAPTION |
WS_MINIMIZEBOX | WS_VISIBLE,
0, 0, w, h, 0, 0, hInstance, NULL);
if (!hwnd) return FALSE;
while (GetMessage(&msg, 0, 0, 0)) DispatchMessage(&msg);
return msg.wParam;
}
BOOL RegClass(WNDPROC Proc, LPCTSTR szName, UINT brBackground)
{
WNDCLASS wc;
wc.style = wc.cbClsExtra = wc.cbWndExtra = 0;
wc.lpfnWndProc = Proc;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(brBackground + 1);
wc.lpszMenuName = (LPCTSTR) NULL;
wc.lpszClassName = szName;
return (RegisterClass(&wc) != 0);
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg,
WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_DESTROY:
{
PostQuitMessage(0);
return 0;
}
case WM_CLOSE:
{
// ТУТ ТВОЙ МЕСАДЖ БОКС И ЕГО ОБРАБОТКА
return 0;
}
}
return DefWindowProc(hwnd, msg, wParam, lParam);
}
|
|
|

09.12.2009, 21:46
|
|
Новичок
Регистрация: 10.03.2009
Сообщений: 10
С нами:
9037993
Репутация:
0
|
|
Благодарю!
|
|
|

09.12.2009, 21:58
|
|
Новичок
Регистрация: 02.12.2009
Сообщений: 16
С нами:
8653839
Репутация:
21
|
|
MessageBox не подходит?
|
|
|
|
 |
|
Предыдущая тема
Следующая тема
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|