Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.68/47: Рейтинг темы: голосов - 47, средняя оценка - 4.68
 Аватар для xamelione25
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,861

_tWinMain Несогласованная аннотация для "wWinMain": данный экземпляр содержит нет аннотаций

28.05.2019, 20:49. Показов 10146. Ответов 41
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ошибку см.на скрине. Код в архиве.
Помогите чтобы программа нормально запустилась.
Программа делалась к заданию:
Разработать в Visual C++ оконное приложение Win32, которое:
• должно для выбранного файла или каталога выводить его имя, атрибуты и размер, а также время его создания, изменения и последнего обращения;
• должно иметь возможность переименования выбранного файла или каталога:
• должно иметь возможность изменять атрибуты выбранного файла или каталога (кроме атрибутов системный и временный файл. а также атрибутов сжатия и шифрования);
• должно сохранять в системном реестре размер и положение окна, а также имя последнего выбранного файла или каталога, чтобы использовать их при повторном запуске.
• сохранение в системном реестре должно осуществляться в раздаче HKCU\Software\IT-37.
Миниатюры
_tWinMain Несогласованная аннотация для "wWinMain": данный экземпляр содержит нет аннотаций  
Вложения
Тип файла: rar WindowsProject4-2.part01.rar (23.00 Мб, 6 просмотров)
Тип файла: rar WindowsProject4-2.part02.rar (18.27 Мб, 9 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.05.2019, 20:49
Ответы с готовыми решениями:

Аннотация для работы с методом
Необходимо написать аннотацию, которая бы игнорировала вывод строки, а вместо неё выводила строку "Аннотация". Аннотацию...

Есть ли аннотация для регулярных выражений ?
Вот такие выражения, вызывают массу предупреждений в Intelliji Idea. Есть ли способ как то пометить их соответствующей аннотацией,...

Аннотация в Spring для чтения properties
Для того, чтобы читать данные из application.properties, которые находятся в classpath, для этого можно использовать анноатцию @Value, ...

41
 Аватар для xamelione25
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,861
29.05.2019, 22:12  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
посмотри в окне "Локальные" (внизу), чему равен cchPath
cchPath не в локальных был а в видимых
Миниатюры
_tWinMain Несогласованная аннотация для "wWinMain": данный экземпляр содержит нет аннотаций   _tWinMain Несогласованная аннотация для "wWinMain": данный экземпляр содержит нет аннотаций  
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
29.05.2019, 22:15
Цитата Сообщение от xamelione25 Посмотреть сообщение
cchPath не в локальных был а в видимых
Неважно. Ты видишь, что он у тебя кривой?
Т.е. вот это вот cchPath = (DWORD)(lpszFileName - szPath) - 1; // вычисление длины пути к файлу/каталогу
вычисляется не правильно
Посмотри, чему равен lpszFileName
0
 Аватар для xamelione25
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,861
29.05.2019, 22:17  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Посмотри, чему равен lpszFileName
в смысле... чему он равен в коде????
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
29.05.2019, 22:21
Цитата Сообщение от xamelione25 Посмотреть сообщение
в смысле... чему он равен в коде????
Там же в окошках его найди

Добавлено через 35 секунд
А вижу

Добавлено через 53 секунды
cchPath = (DWORD)(lpszFileName - szPath) - 1; // вычисление длины пути к файлу/каталогу

У тебя lpszFileName == szPath, т.е. lpszFileName - szPath == 0

Добавлено через 1 минуту
Ты отнимаешь из нуля единицу, получаешь cchPath = DWORD(-1) - очень большое число
0
 Аватар для xamelione25
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,861
29.05.2019, 22:22  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
У тебя lpszFileName == szPath, т.е. lpszFileName - szPath == 0
т.е мне нада сделать lpszFileName = 0 или szPath = 0????
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
29.05.2019, 22:28
Потом пытаешься по этому индексу в массиве что-то присвоить. Получаешь ошибку.

Добавлено через 2 минуты
Цитата Сообщение от xamelione25 Посмотреть сообщение
т.е мне нада сделать lpszFileName = 0 или szPath = 0????
Наверное нет. Я не знаю, что ты там вообще пытаешься сделать.
Подозреваю, что здесь szPath не должно быть пустой строкой. Смотри, почему так получилось

Добавлено через 3 минуты
Проверь в отладчике после этих строчек что он не пустой
C++
1
2
3
4
5
6
7
8
9
    if ((NULL != lpszCmdLine) && (_T('\0') != lpszCmdLine[0]))
    {
        StringCchCopy(szPath, _countof(szPath), lpszCmdLine); // копирование имение файла/каталога из командной строки
        PathUnquoteSpaces(szPath); // удаление в начале и конце кавычек 
    } // if
    else
    {
        RegGetValueSZ(hKey, TEXT("szPath"), szPath, _countof(szPath), NULL); // копирование имение файла/каталога из системного реестра
    } // else
0
 Аватар для xamelione25
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,861
29.05.2019, 22:41  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Ты отнимаешь из нуля единицу, получаешь cchPath = DWORD(-1) - очень большое число
Я просто в упор не понимаю как мне от этого избавиться...очень вероятно что из-за этого весь сыр-бор
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
29.05.2019, 22:42
Я ж тебе написал выше - szPath не должен быть пустым.
0
 Аватар для xamelione25
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,861
09.06.2019, 01:20  [ТС]
oleg-m1973, ну я сделал-исправил...заработало (исправил в 93 и 145 строке)..... но у меня проблема в том, что у меня не получается добавить возможность переименования файла...или оно возможно даже есть ...но просто на корректно работает....не пойму почему .....141 строка в коде.....

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
#include <Windows.h>
#include <WindowsX.h>
#include <tchar.h>
#include <strsafe.h>
#include <shlwapi.h>
#pragma comment(lib, "shlwapi.lib")
#include "resource.h"
#include "WindowsProject4-2-1.h"
TCHAR szPath[MAX_PATH] = TEXT(""); // путь к файлу/каталогу
DWORD cchPath = 0; // длина пути к файлу/каталогу
LPCTSTR lpszFileName = NULL; // указатель на имя файла/каталога
RECT rect = { 0 }; // размер и положение окна
typedef BOOL(__stdcall *LPSEARCHFUNC)(LPCTSTR lpszFileName, const LPWIN32_FILE_ATTRIBUTE_DATA lpFileAttributeData, LPVOID lpvParam);
INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); // процедура диалогового окна "Свойства файла"
BOOL Dialog_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam); // обработчик сообщения WM_INITDIALOG
void Dialog_OnClose(HWND hwnd); // обработчик сообщения WM_CLOSE
void Dialog_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify); // обработчик сообщения WM_COMMAND
BOOL __stdcall CalculateSize(LPCTSTR lpszFileName, const LPWIN32_FILE_ATTRIBUTE_DATA lpFileAttributeData, LPVOID lpvParam); // функция, используемая при поиске, для вычисления размера
BOOL FileSearch(LPCTSTR lpszFileName, LPCTSTR lpszDirName, LPSEARCHFUNC lpSearchFunc, LPVOID lpvParam); // функция выполняющая поиск внутри каталога
void StringCchPrintFileSize(LPTSTR lpszBuffer, DWORD cch, ULARGE_INTEGER size); // функция для представления размера файла в строковом виде
BOOL GetFileTimeFormat(const LPFILETIME lpFileTime, LPTSTR lpszFileTime, DWORD cchFileTime); // функция форматирования даты и времени
// ----------------------------------------------------------------------------------------------
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE, LPTSTR lpszCmdLine, int nCmdShow)
{
    HKEY hKey = NULL; // дескриптор ключа рееста
    DWORD dwDisposition;
    RegCreateKeyEx(HKEY_CURRENT_USER, TEXT("Software\\WindowsProject4-2"),  // создние и откртие ключа реестра для сохранения параметров приложения
        0, NULL, REG_OPTION_NON_VOLATILE, KEY_QUERY_VALUE | KEY_SET_VALUE, NULL, &hKey, &dwDisposition);
    if ((NULL != lpszCmdLine) && (_T('\0') != lpszCmdLine[0]))
    {
        StringCchCopy(szPath, _countof(szPath), lpszCmdLine); // копирование имение файла/каталога из командной строки
        PathUnquoteSpaces(szPath); // удаление в начале и конце кавычек 
    } // if
    else
    {
        RegGetValueSZ(hKey, TEXT("szPath"), szPath, _countof(szPath), NULL); // копирование имение файла/каталога из системного реестра
    } // else
    WIN32_FILE_ATTRIBUTE_DATA fa;
    DWORD bRet = GetFileAttributesEx(szPath, GetFileExInfoStandard, &fa);
    if (INVALID_FILE_ATTRIBUTES != bRet)
    {
        RegGetValueBinary(hKey, TEXT("rect"), (LPBYTE)&rect, sizeof(rect), NULL); // копирование положения окна из системного реестра
        LoadLibrary(TEXT("ComCtl32.dll")); // загрузка библиотеки элементов управления общего пользования
        int mres;
        if (fa.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
        {
            mres = DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_DIALOG_DIRECTORY), NULL, DialogProc, (LPARAM)&fa); // открытие диалогового окна "Свойства каталога"
        } // if
        else
        {
            mres = DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_DIALOG_FILE), NULL, DialogProc, (LPARAM)&fa); // открытие диалогового окна "Свойства файла"
        } // else
        if (IDOK == mres)
        {
            RegSetValueSZ(hKey, TEXT("szPath"), szPath); // сохранение имени файла/каталога в системный реестр
        } // if
        RegSetValueBinary(hKey, TEXT("rect"), (LPCBYTE)&rect, sizeof(rect)); // сохранение положения окна в системный реестр
    } // if
    RegCloseKey(hKey); // закрытие дескриптора ключа реестра
} // _tWinMain
  // ----------------------------------------------------------------------------------------------
INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg)
    {
    case WM_INITDIALOG:
    {
        BOOL bRet = HANDLE_WM_INITDIALOG(hwndDlg, wParam, lParam, Dialog_OnInitDialog);
        return SetDlgMsgResult(hwndDlg, uMsg, bRet);
    }
    case WM_CLOSE:
        HANDLE_WM_CLOSE(hwndDlg, wParam, lParam, Dialog_OnClose);
        return TRUE;
    case WM_COMMAND:
        HANDLE_WM_COMMAND(hwndDlg, wParam, lParam, Dialog_OnCommand);
        return TRUE;
    } // switch
    return FALSE;
} // DialogProc
  // ----------------------------------------------------------------------------------------------
BOOL Dialog_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
    if (IsRectEmpty(&rect) == FALSE)
    {
        SetWindowPos(hwnd, NULL, rect.left, rect.top, 0, 0, SWP_NOSIZE); // изменение положения окна
    } // if
    LPWIN32_FILE_ATTRIBUTE_DATA lpfa = (LPWIN32_FILE_ATTRIBUTE_DATA)lParam;
    TCHAR szBuffer[100];
    ULARGE_INTEGER size = { 0 }; // вычисление размер файлы или каталога
    CalculateSize(szPath, lpfa, &size);
    lpszFileName = PathFindFileName(szPath); // поиск имени в пути к файлу/каталогу
    cchPath = (DWORD)(lpszFileName - szPath) - 1; // вычисление длины пути к файлу/каталогу
    szPath[cchPath] = _T('\\*.*'); // разделение нуль-символом пути и имение файла/каталога
    SendDlgItemMessage(hwnd, IDC_EDIT_FILENAME, EM_LIMITTEXT, (WPARAM)_countof(szPath), 0); // задавание ограничения на ввод имени файла/каталога
    SetDlgItemText(hwnd, IDC_EDIT_FILENAME, lpszFileName); // копирование имени файла/каталога в поле ввода
    SetDlgItemText(hwnd, IDC_EDIT_PATH, szPath); // копирование пути к файлу/каталогу в поле ввода (расположене)
    StringCchPrintFileSize(szBuffer, _countof(szBuffer), size); // вывод в строку размера файла/каталога
    SetDlgItemText(hwnd, IDC_EDIT_FILESIZE, szBuffer); // копирование строки в поле ввода (размер)
    GetFileTimeFormat(&lpfa->ftCreationTime, szBuffer, _countof(szBuffer)); // вывод в строку дату и время создания
    SetDlgItemText(hwnd, IDC_EDIT_CREATIONTIME, szBuffer); // копирование строки в поле ввода (время создания)
    GetFileTimeFormat(&lpfa->ftLastWriteTime, szBuffer, _countof(szBuffer)); // вывод в строку даты и времение последнего изменения
    SetDlgItemText(hwnd, IDC_EDIT_LASTWRITETIM, szBuffer); // копирование строки в поле ввода (время последнего изменения)
    GetFileTimeFormat(&lpfa->ftLastAccessTime, szBuffer, _countof(szBuffer)); // вывод в строку даты и времени последнего обращения
    SetDlgItemText(hwnd, IDC_EDIT_LASTACCESSTIME, szBuffer); // копирование строки в поле ввода (время последнего обращения)
    constexpr DWORD attr[] = // массив атрибутов
    {
        FILE_ATTRIBUTE_READONLY, FILE_ATTRIBUTE_HIDDEN, FILE_ATTRIBUTE_ARCHIVE, FILE_ATTRIBUTE_SYSTEM, FILE_ATTRIBUTE_TEMPORARY, FILE_ATTRIBUTE_COMPRESSED, FILE_ATTRIBUTE_ENCRYPTED
    };
    constexpr DWORD ids[] = { // массив идентификаторов флажков для атрибутов
        IDC_ATTRIBUTE_READONLY, IDC_ATTRIBUTE_HIDDEN, IDC_ATTRIBUTE_ARCHIVE, IDC_ATTRIBUTE_SYSTEM, IDC_ATTRIBUTE_TEMPORARY, IDC_ATTRIBUTE_COMPRESSED, IDC_ATTRIBUTE_ENCRYPTED
    };
    for (int i = 0; i < _countof(attr); ++i) // растановка усовных обазначений соответственно с установленными атрибутами файла/каталога
    {
        UINT uCheck = (lpfa->dwFileAttributes & attr[i]) ? BST_CHECKED : BST_UNCHECKED;
        CheckDlgButton(hwnd, ids[i], uCheck);
    } // for
    UINT uCheck = (lpfa->dwFileAttributes & FILE_ATTRIBUTE_NOT_CONTENT_INDEXED) ? BST_UNCHECKED : BST_CHECKED;
    CheckDlgButton(hwnd, IDC_ATTRIBUTE_CONTENT_INDEXED, uCheck);
    return TRUE;
} // Dialog_OnInitDialog
  // ----------------------------------------------------------------------------------------------
void Dialog_OnClose(HWND hwnd)
{
    GetWindowRect(hwnd, &rect); //сохранение в памяти размера и положения окна
    EndDialog(hwnd, IDCLOSE); // завершение работы диалогового окна
} // Dialog_OnClose
  // ----------------------------------------------------------------------------------------------
void Dialog_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
    switch (id)
    {
    case IDOK:
    {
        TCHAR szNewFileName[MAX_PATH]; // новое имя файла/каталога
        GetDlgItemText(hwnd, IDC_EDIT_FILENAME, szNewFileName, _countof(szNewFileName)); // копирование имени файла/каталога из поля ввода
        if (CompareString(LOCALE_USER_DEFAULT, 0, lpszFileName, -1, szNewFileName, -1) != CSTR_EQUAL) // (!) изменилось имя файла/каталога
        {
            TCHAR szExistingFileName[MAX_PATH]; // старое имя файла/каталога
            StringCchPrintf(szExistingFileName, _countof(szExistingFileName), TEXT("%s\\%s"), szPath, lpszFileName);
            PathAppend(szPath, szNewFileName); // формирование нового пути к файлу/каталогу
            MoveFile(szExistingFileName, szPath); // переименование файла/каталога
        } // if
        else
        {
            szPath[cchPath] = _T('\\*.*'); // замена нуль-символа, разделяющего путь и имя файла/каталога
        } // else
        constexpr DWORD attr[] = { // массив атрибутов
            FILE_ATTRIBUTE_READONLY, FILE_ATTRIBUTE_HIDDEN, FILE_ATTRIBUTE_ARCHIVE, FILE_ATTRIBUTE_SYSTEM, FILE_ATTRIBUTE_TEMPORARY, FILE_ATTRIBUTE_COMPRESSED, FILE_ATTRIBUTE_ENCRYPTED
        };
        constexpr DWORD ids[] = { // массив идентификаторов флажков для атрибутов
            IDC_ATTRIBUTE_READONLY, IDC_ATTRIBUTE_HIDDEN, IDC_ATTRIBUTE_ARCHIVE, IDC_ATTRIBUTE_SYSTEM, IDC_ATTRIBUTE_TEMPORARY, IDC_ATTRIBUTE_COMPRESSED, IDC_ATTRIBUTE_ENCRYPTED
        };
        DWORD dwFileAttributes = 0; // атрибуты файла/каталога
        for (int i = 0; i < _countof(attr); ++i) // определение, выбранных атрибутов
        {
            if (IsDlgButtonChecked(hwnd, ids[i]) == BST_CHECKED) // установка условного обозначения
            {
                dwFileAttributes |= attr[i]; // добавление соответствующего атрибута
            } // if
        } // for
        if (IsDlgButtonChecked(hwnd, IDC_ATTRIBUTE_CONTENT_INDEXED) == BST_UNCHECKED) // снятие условного обозначения
        {
            dwFileAttributes |= FILE_ATTRIBUTE_NOT_CONTENT_INDEXED; // добавление соответствующего атрибута
        } // if
        SetFileAttributes(szPath, dwFileAttributes); // задавание атрибутов
        GetWindowRect(hwnd, &rect); // сохранение в памяти размера и положения окна
        EndDialog(hwnd, IDOK); // завершение работы диалогового окна
    }
    break;
    case IDCANCEL:
    {
        GetWindowRect(hwnd, &rect); // сохранение в памяти размера и положения окна
        EndDialog(hwnd, IDCANCEL); // завершение работы диалогового окна
    }
    break;
    } // switch
} // Dialog_OnCommand
  // ----------------------------------------------------------------------------------------------
BOOL __stdcall CalculateSize(LPCTSTR lpszFileName, const LPWIN32_FILE_ATTRIBUTE_DATA lpFileAttributeData, LPVOID lpvParam)
{
    if (lpFileAttributeData->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
    {
        return FileSearch(TEXT("*"), lpszFileName, CalculateSize, lpvParam); // продолжение поиска внутри каталога
    } // if
    ULARGE_INTEGER size = { lpFileAttributeData->nFileSizeLow, lpFileAttributeData->nFileSizeHigh }; // добавление к результату размера найденного файла
    ((ULARGE_INTEGER *)lpvParam)->QuadPart += size.QuadPart;
    return TRUE; // возврат TRUE для продоления поиска
} // CalculateSize
  // ----------------------------------------------------------------------------------------------
BOOL FileSearch(LPCTSTR lpszFileName, LPCTSTR lpszDirName, LPSEARCHFUNC lpSearchFunc, LPVOID lpvParam)
{
    WIN32_FIND_DATA fd;
    TCHAR szFileName[MAX_PATH];
    StringCchPrintf(szFileName, MAX_PATH, TEXT("%s\\%s"), lpszDirName, lpszFileName); // формирование шаблона поиска
    HANDLE hFindFile = FindFirstFile(szFileName, &fd); // начало поиска
    if (INVALID_HANDLE_VALUE == hFindFile) return FALSE;
    BOOL bRet = TRUE;
    for (BOOL bFindNext = TRUE; FALSE != bFindNext; bFindNext = FindNextFile(hFindFile, &fd))
    {
        if (_tcscmp(fd.cFileName, TEXT(".")) == 0 || _tcscmp(fd.cFileName, TEXT("..")) == 0)
        {
            /* пропуск текущего и родительского каталога */
            continue;
        } // if
        StringCchPrintf(szFileName, MAX_PATH, TEXT("%s\\%s"), lpszDirName, fd.cFileName); // формирование полного пути к файлу/каталогу
        bRet = lpSearchFunc(szFileName, (LPWIN32_FILE_ATTRIBUTE_DATA)&fd, lpvParam);
        if (FALSE == bRet) break; // пауза поиску
    } // for
    FindClose(hFindFile); // завершение поиска
    return bRet;
} // FileSearch
  // ----------------------------------------------------------------------------------------------
void StringCchPrintFileSize(LPTSTR lpszBuffer, DWORD cch, ULARGE_INTEGER size)
{
    if (size.QuadPart >= 0x40000000ULL)
    {
        StringCchPrintf(lpszBuffer, cch, TEXT("%.1f ГБ"), (size.QuadPart / (float)0x40000000ULL));
    } // if
    else if (size.QuadPart >= 0x100000ULL)
    {
        StringCchPrintf(lpszBuffer, cch, TEXT("%.1f МБ"), (size.QuadPart / (float)0x100000ULL));
    } // if
    else if (size.QuadPart >= 0x0400ULL)
    {
        StringCchPrintf(lpszBuffer, cch, TEXT("%.1f КБ"), (size.QuadPart / (float)0x0400ULL));
    } // if
    else
    {
        StringCchPrintf(lpszBuffer, cch, TEXT("%u байт"), size.LowPart);
    } // else
    size_t len = _tcslen(lpszBuffer);
    if (len < cch)
    {
        StringCchPrintf((lpszBuffer + len), (cch - len), TEXT(" (%llu байт)"), size.QuadPart);
    } // if
} // StringCchPrintFileSize
  // ----------------------------------------------------------------------------------------------
BOOL GetFileTimeFormat(const LPFILETIME lpFileTime, LPTSTR lpszFileTime, DWORD cchFileTime)
{
    SYSTEMTIME st;
    BOOL bRet = FileTimeToSystemTime(lpFileTime, &st); // преобразование даты и времение из FILETIME в SYSTEMTIME
    if (FALSE != bRet) // приведение даты и времени к текущему часовому поясу
        bRet = SystemTimeToTzSpecificLocalTime(NULL, &st, &st);
    if (FALSE != bRet)
    {
        GetDateFormat(LOCALE_USER_DEFAULT, DATE_LONGDATE, &st, NULL, lpszFileTime, cchFileTime); // копирование даты в результирующей строки
        StringCchCat(lpszFileTime, cchFileTime, TEXT(", ")); // добавление времени в результирующую строку
        DWORD len = _tcslen(lpszFileTime);
        if (len < cchFileTime)
            GetTimeFormat(LOCALE_USER_DEFAULT, TIME_FORCE24HOURFORMAT, &st, NULL, lpszFileTime + len, cchFileTime - len);
    } // if
    return bRet;
} // GetFileTimeFormat
// --------------------------------------------------------------------------------------------------------------------------------------
и мне не понятно еще следующее....

• если я меняю атрибуты выбранного файла или каталога - то они по факту не меняются, если залезть в свойства файла то они те же самые и остаются.......что не так, тоже не понятно...;
• должно сохранять в системном реестре размер и положение окна, а также имя последнего выбранного файла или каталога, чтобы использовать их при повторном запуске. - как это можно проверить...правильно оно все сохраняет, и сохраняет ли???
• сохранение в системном реестре должно осуществляться в раздаче HKCU\Software\IT-37. - как это можно проверить...правильно оно все сохраняет, и сохраняет ли???
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
09.06.2019, 11:03
Цитата Сообщение от xamelione25 Посмотреть сообщение
• должно сохранять в системном реестре размер и положение окна, а также имя последнего выбранного файла или каталога, чтобы использовать их при повторном запуске. - как это можно проверить...правильно оно все сохраняет, и сохраняет ли???
• сохранение в системном реестре должно осуществляться в раздаче HKCU\Software\IT-37. - как это можно проверить...правильно оно все сохраняет, и сохраняет ли???
Ну, открой regedit и посмотри

Добавлено через 2 минуты
Цитата Сообщение от xamelione25 Посмотреть сообщение
oleg-m1973, ну я сделал-исправил...заработало (исправил в 93 и 145 строке)..... но у меня проблема в том, что у меня не получается добавить возможность переименования файла...или оно возможно даже есть ...но просто на корректно работает....не пойму почему .....141 строка в коде.....
Вызови GetLastError() после MoveFile и посмотри, что она возвращает
0
 Аватар для xamelione25
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,861
09.06.2019, 11:44  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
и посмотри, что она возвращает
ну я добавил....как посмотреть то что она возвращает - не пойму??? Потому что программа открылась...я переименовал файл..но ничего не произошло....или я не правильно понял....

Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Ну, открой regedit и посмотри
спс
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
09.06.2019, 11:59
Цитата Сообщение от xamelione25 Посмотреть сообщение
ну я добавил....как посмотреть то что она возвращает - не пойму??? Потому что программа открылась...я переименовал файл..но ничего не произошло....или я не правильно понял....
Поставь там точку останова и запусти под отладчиком
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
09.06.2019, 12:00
Цитата Сообщение от xamelione25 Посмотреть сообщение
ну я добавил....как посмотреть то что она возвращает - не пойму??? Потому что программа открылась...я переименовал файл..но ничего не произошло....или я не правильно понял....
Поставь там точку останова и запусти под отладчиком
0
 Аватар для xamelione25
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,861
09.06.2019, 13:12  [ТС]
oleg-m1973, Не понятно почему ...но оно пропущено...
Миниатюры
_tWinMain Несогласованная аннотация для "wWinMain": данный экземпляр содержит нет аннотаций  
0
 Аватар для xamelione25
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,861
09.06.2019, 14:58  [ТС]
oleg-m1973,
Миниатюры
_tWinMain Несогласованная аннотация для "wWinMain": данный экземпляр содержит нет аннотаций  
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
09.06.2019, 16:41
Цитата Сообщение от xamelione25 Посмотреть сообщение
oleg-m1973, Не понятно почему ...но оно пропущено...
DWORD err = ::GetLastError();
Смотришь, чему равен err;
0
 Аватар для xamelione25
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,861
09.06.2019, 16:53  [ТС]
oleg-m1973,
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Смотришь, чему равен err;
где???
----------------------------------------
я поставил поставил после строки
C++
1
MoveFile(szExistingFileName, szPath);
строку с точкой останова DWORD err = ::GetLastError();

... запустил открылась прога ....я вбил адрес .... C:\Users\annas\Desktop\111.txt

и дальше через F11..... но дальше я никаких ошибок не вижу.....

или я чего-то не понимаю
Миниатюры
_tWinMain Несогласованная аннотация для "wWinMain": данный экземпляр содержит нет аннотаций  
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
09.06.2019, 16:57
Цитата Сообщение от xamelione25 Посмотреть сообщение
строку с точкой останова DWORD err = ::GetLastError();
... запустил открылась прога ....я вбил адрес .... C:\Users\annas\Desktop\111.txt
и дальше через F11..... но дальше я никаких ошибок не вижу.....
или я чего-то не понимаю
Напиши вот так
C++
1
2
3
BOOL res = MoveFile(..............................;
DWORD err = ::GetLastError();
std::cout << err; //Поставь точку останова здесь и посмотри в окне Locals чему равны res и err
0
 Аватар для xamelione25
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,861
09.06.2019, 17:01  [ТС]
oleg-m1973,
Миниатюры
_tWinMain Несогласованная аннотация для "wWinMain": данный экземпляр содержит нет аннотаций  
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
09.06.2019, 17:05
err = 3. Системе не удается найти указанный путь.
Проверь пути, что все есть

Добавлено через 1 минуту
Посмотри там переменную szExistingFileName - какой-то странный путь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.06.2019, 17:05

Аннотация @Version для сущностей (Entity)
В книге по spring написано что для того чтобы Hibernate разбирался с различными версиями объектов что ему присылают чтобы таким образом...

Доказать, что данный граф не содержит моста
Доказать, что если каждая вершина графа имеет парный степень, то данный граф не содержит моста. Буду благодарен за помощь.

Проверить, содержит ли данный массив из n чисел, все числа от 1 до n
Задание: Проверить, содержит ли данный массив из n чисел, все числа от 1 до n. Сделала массив, но голова не соображает, как сделать...

Проверить, содержит ли данный массив из n чисел все числа от 1 до n
Проверить, содержит ли данный массив из n чисел, все числа от 1 до n

контейнер set как проверить содержит ли он данный ключ
Есть контейнер set&lt;string&gt; мне нужно узнать содержит ли строку str. Или это делается только через перебор всего set? set&lt;string&gt;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот. Ларри Уингет
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru