С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
8 / 8 / 0
Регистрация: 31.07.2020
Сообщений: 66

Переопределение данных в файле заголовка

31.07.2020, 15:03. Показов 2086. Ответов 5

Студворк — интернет-сервис помощи студентам
Делаю перезапись bmp файла в свое расширение, использую windows.h для создание окна, а fstream для работы с файлами. Нашел на этом форуме код для расшифровки цветов bmp, но у меня выдает ошибку о переопределении данных (хотя код не менял)
файл Main.cpp
Кликните здесь для просмотра всего текста
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
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
#define _CRT_SECURE_NO_WARNINGS
 
 
 
#include <Windows.h>
#include <string>
 
using namespace std;
 
#include <iostream>
#include <fstream>
 
#include "main.h"
 
void loadBMP(char* fileName)
{
    /* тут оригинал через аргументы
    if (argc < 2) {
        std::cout << "Usage: " << argv[0] << " file_name" << std::endl;
        return 0;
    }
 
    char *fileName = argv[1];
 
 //----------------------------------------
    char* fileName = "test.bmp"; // Для удобства тестирования прописал, оригинал выше, остальное не трогал
    /////----------------------------------------
 */
    // открываем файл
    std::ifstream fileStream(fileName, std::ifstream::binary);
    if (!fileStream) {
        return;
    }
    
    // заголовк изображения
    BITMAPFILEHEADER fileHeader;
    read(fileStream, fileHeader.bfType, sizeof(fileHeader.bfType));
    read(fileStream, fileHeader.bfSize, sizeof(fileHeader.bfSize));
    read(fileStream, fileHeader.bfReserved1, sizeof(fileHeader.bfReserved1));
    read(fileStream, fileHeader.bfReserved2, sizeof(fileHeader.bfReserved2));
    read(fileStream, fileHeader.bfOffBits, sizeof(fileHeader.bfOffBits));
 
    if (fileHeader.bfType != 0x4D42) {
        return;
    }
 
    // информация изображения
    BITMAPINFOHEADER fileInfoHeader;
    read(fileStream, fileInfoHeader.biSize, sizeof(fileInfoHeader.biSize));
 
    // bmp core
    if (fileInfoHeader.biSize >= 12) {
        read(fileStream, fileInfoHeader.biWidth, sizeof(fileInfoHeader.biWidth));
        read(fileStream, fileInfoHeader.biHeight, sizeof(fileInfoHeader.biHeight));
        read(fileStream, fileInfoHeader.biPlanes, sizeof(fileInfoHeader.biPlanes));
        read(fileStream, fileInfoHeader.biBitCount, sizeof(fileInfoHeader.biBitCount));
    }
 
    // получаем информацию о битности
    int colorsCount = fileInfoHeader.biBitCount >> 3;
    if (colorsCount < 3) {
        colorsCount = 3;
    }
 
    int bitsOnColor = fileInfoHeader.biBitCount / colorsCount;
    int maskValue = (1 << bitsOnColor) - 1;
 
    // bmp v1
    if (fileInfoHeader.biSize >= 40) {
        read(fileStream, fileInfoHeader.biCompression, sizeof(fileInfoHeader.biCompression));
        read(fileStream, fileInfoHeader.biSizeImage, sizeof(fileInfoHeader.biSizeImage));
        read(fileStream, fileInfoHeader.biXPelsPerMeter, sizeof(fileInfoHeader.biXPelsPerMeter));
        read(fileStream, fileInfoHeader.biYPelsPerMeter, sizeof(fileInfoHeader.biYPelsPerMeter));
        read(fileStream, fileInfoHeader.biClrUsed, sizeof(fileInfoHeader.biClrUsed));
        read(fileStream, fileInfoHeader.biClrImportant, sizeof(fileInfoHeader.biClrImportant));
    }
 
    // bmp v2
    fileInfoHeader.biRedMask = 0;
    fileInfoHeader.biGreenMask = 0;
    fileInfoHeader.biBlueMask = 0;
 
    if (fileInfoHeader.biSize >= 52) {
        read(fileStream, fileInfoHeader.biRedMask, sizeof(fileInfoHeader.biRedMask));
        read(fileStream, fileInfoHeader.biGreenMask, sizeof(fileInfoHeader.biGreenMask));
        read(fileStream, fileInfoHeader.biBlueMask, sizeof(fileInfoHeader.biBlueMask));
    }
 
    // если маска не задана, то ставим маску по умолчанию
    if (fileInfoHeader.biRedMask == 0 || fileInfoHeader.biGreenMask == 0 || fileInfoHeader.biBlueMask == 0) {
        fileInfoHeader.biRedMask = maskValue << (bitsOnColor * 2);
        fileInfoHeader.biGreenMask = maskValue << bitsOnColor;
        fileInfoHeader.biBlueMask = maskValue;
    }
 
    // bmp v3
    if (fileInfoHeader.biSize >= 56) {
        read(fileStream, fileInfoHeader.biAlphaMask, sizeof(fileInfoHeader.biAlphaMask));
    }
    else {
        fileInfoHeader.biAlphaMask = maskValue << (bitsOnColor * 3);
    }
 
    // bmp v4
    if (fileInfoHeader.biSize >= 108) {
        read(fileStream, fileInfoHeader.biCSType, sizeof(fileInfoHeader.biCSType));
        read(fileStream, fileInfoHeader.biEndpoints, sizeof(fileInfoHeader.biEndpoints));
        read(fileStream, fileInfoHeader.biGammaRed, sizeof(fileInfoHeader.biGammaRed));
        read(fileStream, fileInfoHeader.biGammaGreen, sizeof(fileInfoHeader.biGammaGreen));
        read(fileStream, fileInfoHeader.biGammaBlue, sizeof(fileInfoHeader.biGammaBlue));
    }
 
    // bmp v5
    if (fileInfoHeader.biSize >= 124) {
        read(fileStream, fileInfoHeader.biIntent, sizeof(fileInfoHeader.biIntent));
        read(fileStream, fileInfoHeader.biProfileData, sizeof(fileInfoHeader.biProfileData));
        read(fileStream, fileInfoHeader.biProfileSize, sizeof(fileInfoHeader.biProfileSize));
        read(fileStream, fileInfoHeader.biReserved, sizeof(fileInfoHeader.biReserved));
    }
 
    // проверка на поддерку этой версии формата
    if (fileInfoHeader.biSize != 12 && fileInfoHeader.biSize != 40 && fileInfoHeader.biSize != 52 &&
        fileInfoHeader.biSize != 56 && fileInfoHeader.biSize != 108 && fileInfoHeader.biSize != 124) {
        return;
    }
 
    if (fileInfoHeader.biBitCount != 16 && fileInfoHeader.biBitCount != 24 && fileInfoHeader.biBitCount != 32) {
        return;
    }
 
    if (fileInfoHeader.biCompression != 0 && fileInfoHeader.biCompression != 3) {
        return;
    }
 
    // rgb info
    RGBQUAD** rgbInfo = new RGBQUAD * [fileInfoHeader.biHeight];
 
    for (unsigned int i = 0; i < fileInfoHeader.biHeight; i++) {
        rgbInfo[i] = new RGBQUAD[fileInfoHeader.biWidth];
    }
 
    // определение размера отступа в конце каждой строки
    int linePadding = ((fileInfoHeader.biWidth * (fileInfoHeader.biBitCount / 8)) % 4) & 3;
 
    // чтение
    unsigned int bufer;
 
    for (unsigned int i = 0; i < fileInfoHeader.biHeight; i++) {
        for (unsigned int j = 0; j < fileInfoHeader.biWidth; j++) {
            read(fileStream, bufer, fileInfoHeader.biBitCount / 8);
 
            rgbInfo[i][j].rgbRed = bitextract(bufer, fileInfoHeader.biRedMask);
            rgbInfo[i][j].rgbGreen = bitextract(bufer, fileInfoHeader.biGreenMask);
            rgbInfo[i][j].rgbBlue = bitextract(bufer, fileInfoHeader.biBlueMask);
            rgbInfo[i][j].rgbReserved = bitextract(bufer, fileInfoHeader.biAlphaMask);
        }
        fileStream.seekg(linePadding, std::ios_base::cur);
    }
    // вывод
    ofstream fout;
    fout.open("C:\\Users\\Denis\\Desktop\\file.anime");
    
    fout << std::hex << "ANIME" << fileInfoHeader.biHeight << fileInfoHeader.biWidth << sizeof(rgbInfo) << 255;
   
    for (unsigned int i = 0; i < fileInfoHeader.biHeight; i++) {
        for (unsigned int j = fileInfoHeader.biWidth - 1; j >= 0; j--) {
            fout << std::hex
                << +rgbInfo[i][j].rgbRed << " "
                << +rgbInfo[i][j].rgbGreen << " "
                << +rgbInfo[i][j].rgbBlue << " "
                << +rgbInfo[i][j].rgbReserved;
        }
    }
 
    fout.close();
 
}
 
unsigned char bitextract(const unsigned int byte, const unsigned int mask) {
    if (mask == 0) {
        return 0;
    }
 
    // определение количества нулевых бит справа от маски
    int
        maskBufer = mask,
        maskPadding = 0;
 
    while (!(maskBufer & 1)) {
        maskBufer >>= 1;
        maskPadding++;
    }
 
    // применение маски и смещение
    return (byte & mask) >> maskPadding;
 
 
}
 
char* IntToHex(unsigned Value, unsigned Digits)
{
    char Hex[MAX_PATH];
    Hex[Digits] = '\0';
    int r;
    while (Value >= 16 && Digits != 0)
    {
        r = Value % 16;
        if (r >= 10) Hex[--Digits] = r + 55;
        else Hex[--Digits] = r + 48;
        Value /= 16;
    }
 
    if (Digits > 0)
    {
        if (Value >= 10) Hex[--Digits] = Value + 55;
        else Hex[--Digits] = Value + 48;
 
        for (int i = Digits - 1; i >= 0; i--)  Hex[i] = 48;
    }
    return Hex;
}
 
int CALLBACK  wWinMain(HINSTANCE hInstance, HINSTANCE, PWSTR szCmdLine, int nCmdShow)
{
    MSG msg{};                             // Структура, которая содержит в себе информацию о соообщениях (между Windows и окном или между окнами).
    HWND hwnd{};                          // Дескриптор окна ( HANDLE указ. на объект ядра в котором храниться информация о нашем окне).
    WNDCLASSEX wc{ sizeof(WNDCLASSEX) }; // Эта структура отвечает за некие х-ки окна (в фигурных скобках размеры).Исп. агрегатная инициализация.
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hbrBackground = reinterpret_cast<HBRUSH>(GetStockObject(WHITE_BRUSH));
    wc.hCursor = LoadCursor(nullptr, IDC_ARROW);
    wc.hIcon = LoadIcon(nullptr, IDI_APPLICATION);
    wc.hIconSm = LoadIcon(nullptr, IDI_APPLICATION);
    wc.hInstance = hInstance;
    wc.lpfnWndProc = [](HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) -> LRESULT
    {
        switch (uMsg)
        {
        case WM_CREATE:
        {
            HWND hButton = CreateWindow(
                L"Button",
                L"OK",
                WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,
                20, 20, 100, 30, hWnd, reinterpret_cast<HMENU>(666), NULL, NULL);
 
        }
        return 0;
 
        case WM_COMMAND:
        {
            switch (LOWORD(wParam)) {
            case 666:
 
                OPENFILENAME ofn;
                TCHAR fileName[MAX_PATH];
                *fileName = 0;
 
                memset(&ofn, 0, sizeof(OPENFILENAME));
                ofn.lStructSize = sizeof(OPENFILENAME);
                ofn.hwndOwner = NULL;
                ofn.lpstrFile = fileName;
                ofn.nMaxFile = sizeof(fileName);
                ofn.lpstrFilter = L"BMP (*.bmp)\0*.bmp\0";
                ofn.nFilterIndex = 3;
                ofn.lpstrTitle = L"Выбрать";
                ofn.lpstrInitialDir = L"C:\\";
                ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
 
                if (GetSaveFileName(&ofn))
                    MessageBox(NULL, ofn.lpstrFile, L"выбран файл", MB_OK);
 
                                           
                char fillename[sizeof(fileName)];
                wcstombs(fillename, fileName, sizeof(fileName));
                loadBMP(fillename);
 
                
 
 
            }
            break;
        }
        return 0;
 
        case WM_DESTROY:
        {
            PostQuitMessage(EXIT_SUCCESS);
        }
        return 0;
        }
        return DefWindowProc(hWnd, uMsg, wParam, lParam); // вызывается в случае если сообщение не обрабатывается
    };
    wc.lpszClassName = L"MyAppClass";
    wc.lpszMenuName = nullptr;
    wc.style = CS_VREDRAW | CS_HREDRAW;
 
    if (!RegisterClassEx(&wc))
        return EXIT_FAILURE;
 
    if (hwnd = CreateWindow(wc.lpszClassName, L"Заголовок!", WS_OVERLAPPEDWINDOW, 0, 0, 600, 600, nullptr, nullptr, wc.hInstance, nullptr); hwnd == INVALID_HANDLE_VALUE)
        return EXIT_FAILURE;
    
    ShowWindow(hwnd, nCmdShow); // показ окна
    UpdateWindow(hwnd);         // перерисовка окна (передаётся HANDLE)
 
    while (GetMessage(&msg, nullptr, 0, 0)) // Цикл обработки сообщений
    {
        TranslateMessage(&msg); // функция расшифровывает системное сообщение
        DispatchMessage(&msg);  // функция  передаёт сообщение в оконную процедуру на обработку
    }
 
    return static_cast<int> (msg.wParam); // возвращаемое значение точки входа
 
}

файл main.h
Кликните здесь для просмотра всего текста
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
#ifndef MAIN_H_INCLUDED
#define MAIN_H_INCLUDED
 
// CIEXYZTRIPLE stuff
typedef int FXPT2DOT30;
 
typedef struct {
    FXPT2DOT30 ciexyzX;
    FXPT2DOT30 ciexyzY;
    FXPT2DOT30 ciexyzZ;
} CIEXYZ;
 
typedef struct {
    CIEXYZ  ciexyzRed;
    CIEXYZ  ciexyzGreen;
    CIEXYZ  ciexyzBlue;
} CIEXYZTRIPLE;
 
// bitmap file header
typedef struct {
    unsigned short bfType;
    unsigned int   bfSize;
    unsigned short bfReserved1;
    unsigned short bfReserved2;
    unsigned int   bfOffBits;
} BITMAPFILEHEADER;
 
// bitmap info header
typedef struct {
    unsigned int   biSize;
    unsigned int   biWidth;
    unsigned int   biHeight;
    unsigned short biPlanes;
    unsigned short biBitCount;
    unsigned int   biCompression;
    unsigned int   biSizeImage;
    unsigned int   biXPelsPerMeter;
    unsigned int   biYPelsPerMeter;
    unsigned int   biClrUsed;
    unsigned int   biClrImportant;
    unsigned int   biRedMask;
    unsigned int   biGreenMask;
    unsigned int   biBlueMask;
    unsigned int   biAlphaMask;
    unsigned int   biCSType;
    CIEXYZTRIPLE   biEndpoints;
    unsigned int   biGammaRed;
    unsigned int   biGammaGreen;
    unsigned int   biGammaBlue;
    unsigned int   biIntent;
    unsigned int   biProfileData;
    unsigned int   biProfileSize;
    unsigned int   biReserved;
} BITMAPINFOHEADER;
 
// rgb quad
typedef struct {
    unsigned char  rgbBlue;
    unsigned char  rgbGreen;
    unsigned char  rgbRed;
    unsigned char  rgbReserved;
} RGBQUAD;
 
// read bytes
template <typename Type>
void read(std::ifstream& fp, Type& result, std::size_t size) {
    fp.read(reinterpret_cast<char*>(&result), size);
}
 
// bit extract
unsigned char bitextract(const unsigned int byte, const unsigned int mask);
 
#endif // MAIN_H_INCLUDEDs

Приложу скрин ошибок (на скриншоте не все ошибки, но дальше они однотипные)
Миниатюры
Переопределение данных в файле заголовка  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.07.2020, 15:03
Ответы с готовыми решениями:

В заданном файле найти и напечатать строки заголовка. Строкой заголовка считать строку, до и после которой оставлена хотя бы одна пустая строка.
В заданном файле найти и напечатать строки заголовка. Строкой заголовка считать строку, до и после которой оставлена хотя бы одна пустая...

Определен в файле заголовка
&quot;Класс-контейнер vector определен в файле заголовка &lt;vector&gt; в пространстве имен std&quot; Как это понять?

Ошибка C1583 в файле предкомпилированного заголовка
Ошибка 1 error C1853: файл предкомпилированного заголовка &quot;Debug\Win32Project1.pch&quot; создан в предыдущей версии компилятора или...

5
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
31.07.2020, 15:47
Лучший ответ Сообщение было отмечено SleepingMraze как решение

Решение

Цитата Сообщение от SleepingMraze Посмотреть сообщение
Делаю перезапись bmp файла в свое расширение, использую windows.h для создание окна, а fstream для работы с файлами. Нашел на этом форуме код для расшифровки цветов bmp, но у меня выдает ошибку о переопределении данных (хотя код не менял)
Просто не делай #include "main.h"
Все эти структуры определены в Windows.h

Добавлено через 3 минуты
Хотя, BITMAPINFOHEADER отличается. Просто переименуй его в BITMAPINFOHEADER_EX, например
1
 Аватар для Laborant666
208 / 101 / 20
Регистрация: 30.06.2020
Сообщений: 848
31.07.2020, 15:47
SleepingMraze, можно вопрос не в тему? Что дает эта расшифровка цветов?
0
8 / 8 / 0
Регистрация: 31.07.2020
Сообщений: 66
31.07.2020, 18:34  [ТС]
Я хочу создать программу просмотра изображений, но прочитав про структуры разрешений jpeg и png я пришел к выводу что проще будет составить свое расширение и использовать его как объекты для вывода

Добавлено через 2 минуты
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Просто не делай #include "main.h"
Все эти структуры определены в Windows.h
То есть в Windows.h уже есть эти элементы и можно использовать их, не знал. Надо будет почитать.
0
8 / 8 / 0
Регистрация: 31.07.2020
Сообщений: 66
31.07.2020, 19:25  [ТС]
Понял что дело в конфликте библиотеки и заголовочного файла(спасибо oleg-m1973)
Принял попутку избавится от заголовочного файла, но в его переменных были объявленные пункты которых нет в библиотеке
и решил все просто добавив в название переменных "_BMP"
Кликните здесь для просмотра всего текста
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
#ifndef MAIN_H_INCLUDED
#define MAIN_H_INCLUDED
 
// CIEXYZTRIPLE_BMP stuff
typedef int FXPT2DOT30_BMP;
 
typedef struct {
    FXPT2DOT30_BMP ciexyzX;
    FXPT2DOT30_BMP ciexyzY;
    FXPT2DOT30_BMP ciexyzZ;
} CIEXYZ_BMP;
 
typedef struct {
    CIEXYZ_BMP  ciexyzRed;
    CIEXYZ_BMP  ciexyzGreen;
    CIEXYZ_BMP  ciexyzBlue;
} CIEXYZTRIPLE_BMP;
 
// bitmap file header
typedef struct {
    unsigned short bfType;
    unsigned int   bfSize;
    unsigned short bfReserved1;
    unsigned short bfReserved2;
    unsigned int   bfOffBits;
} BITMAPFILEHEADER_BMP;
 
// bitmap info header
typedef struct {
    unsigned int   biSize;
    unsigned int   biWidth;
    unsigned int   biHeight;
    unsigned short biPlanes;
    unsigned short biBitCount;
    unsigned int   biCompression;
    unsigned int   biSizeImage;
    unsigned int   biXPelsPerMeter;
    unsigned int   biYPelsPerMeter;
    unsigned int   biClrUsed;
    unsigned int   biClrImportant;
    unsigned int   biRedMask;
    unsigned int   biGreenMask;
    unsigned int   biBlueMask;
    unsigned int   biAlphaMask;
    unsigned int   biCSType;
    CIEXYZTRIPLE_BMP   biEndpoints;
    unsigned int   biGammaRed;
    unsigned int   biGammaGreen;
    unsigned int   biGammaBlue;
    unsigned int   biIntent;
    unsigned int   biProfileData;
    unsigned int   biProfileSize;
    unsigned int   biReserved;
} BITMAPINFOHEADER_BMP;
 
// rgb quad
typedef struct {
    unsigned char  rgbBlue;
    unsigned char  rgbGreen;
    unsigned char  rgbRed;
    unsigned char  rgbReserved;
} RGBQUAD_BMP;
 
// read bytes
template <typename Type>
void read(std::ifstream& fp, Type& result, std::size_t size) {
    fp.read(reinterpret_cast<char*>(&result), size);
}
 
// bit extract
unsigned char bitextract(const unsigned int byte, const unsigned int mask);
 
#endif // MAIN_H_INCLUDEDs

Но в этом списке ошибок затесалось еще одно НО.
C++
1
2
3
4
template <typename Type>
void read(std::ifstream& fp, Type& result, std::size_t size) {
    fp.read(reinterpret_cast<char*>(&result), size);
}
Ругается на эту строчку
Миниатюры
Переопределение данных в файле заголовка  
0
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
31.07.2020, 19:38
Лучший ответ Сообщение было отмечено SleepingMraze как решение

Решение

Цитата Сообщение от SleepingMraze Посмотреть сообщение
затесалось еще одно НО
C++
1
#include <fstream>
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.07.2020, 19:38
Помогаю со студенческими работами здесь

Переопределение данных в переменной
Здравствуйте, есть код Строка_таблицы_Word = &quot;Мамин -Сибиряк Иван Петрович&quot; MsgBox1 = UBound(Split(Строка_таблицы_Word)) If...

Переопределение глобальных данных внутри функций
В задании есть пункт: -Проект должен содержать переопределение глобальных данных внутри функции(из int var1 в static double var1). ...

При переносе сложного заголовка таблицы в Word теряются границы ячеек заголовка
При переносе &quot;сложного&quot; заголовка таблицы в Word на следующий лист (на первом листе таблицы все границы у ячеек есть!) теряются некоторые...

определение функции в ЗАГОЛОВОЧНОМ файле. В основном предполагается переопределение ТЕЛА этой функции. Как это сделать, не правя хидер?
Сабж, а подробнее если в заголовочном файле hider.h описана функция, допустим так: void f (); void f () { int per= 10; } ...

Вывод полей набора данных как заголовка
Имеется некий набор данных, который надо выводить слегка необычно - как на рисунке, при этом: январь, февраль и март - поля, выведенные по...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru