Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
 Аватар для MuslimPalit
30 / 6 / 9
Регистрация: 23.03.2015
Сообщений: 508

Не копируются данные файла

26.12.2016, 09:40. Показов 581. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Разработать программу для копирования файлов, используя параллелизм (один поток для чтения, другой для записи). Вроде бы сделал как надо? Но на выходе выдает что то непонятное, пожалуйста поправьте. Вот что получилось
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
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
 
void button3_click(void);
 
#define IDC_EDIT1 100
#define IDC_BUTTON3 103
 
HWND hWnd;
HWND edit1;
HWND button3;
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    switch (msg)
    {
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    case WM_COMMAND:
        switch (wParam)
        {
        case IDC_BUTTON3:
            button3_click();
            break;
        }
 
        break;
 
    default:
        return DefWindowProc(hWnd, msg, wParam, lParam);
    }
 
    return 0;
}
 
void writeF(char* cbuf)
{
    HFILE pWFile;
    int fuAttribute = 0;
    pWFile = _lcreat("CopyFile.txt", fuAttribute);
 
    _lwrite(pWFile, cbuf, sizeof(cbuf));
    _lclose(pWFile);
 
    SetWindowText(edit1, (LPCWSTR)cbuf);
}
 
char* readF(char* szFile)
{
    HFILE pRFile;
    char buf[11];
 
    int fuAttribute = 0;
    pRFile = _lcreat(szFile, fuAttribute);
 
    _lread(pRFile, buf, sizeof(buf));
    _lclose(pRFile);
    
    return buf;
}
 
void button3_click(void)
{
    char* copybuf;
 
    OPENFILENAME ofn;
    char szFile[MAX_PATH];
    ZeroMemory(&ofn, sizeof(ofn));
    ofn.lStructSize = sizeof(ofn);
    ofn.hwndOwner = NULL;
    ofn.lpstrFile = (LPWSTR)szFile;
    ofn.lpstrFile[0] = '\0';
    ofn.nMaxFile = MAX_PATH;
    ofn.lpstrFilter = NULL;
    ofn.nFilterIndex = NULL;
    ofn.lpstrFileTitle = NULL;
    ofn.nMaxFileTitle = 0;
    ofn.lpstrInitialDir = L"D:";
    ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
    GetOpenFileName(&ofn);
    SetWindowText(edit1, (LPCWSTR)szFile);
 
    copybuf = readF(szFile);
    writeF(copybuf);
}
Добавлено через 38 минут
кто-нибудь посмотрите

Добавлено через 9 часов 19 минут
плиз, что-нибудь

Добавлено через 1 час 4 минуты
может быть что-то с кодировкой?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.12.2016, 09:40
Ответы с готовыми решениями:

Не копируются данные считанные из файла в структуру
есть структура struct SomeBitGroup{ unsigned char scale, r_m, mod, kop; unsigned short cond; }sbg; //необходимо заполнить...

Не копируются данные
Проблема в том что не могу скопировать конкретно файлы с расширением .BUP .IFO .VOB с компа. есть ли прога которая сможет это сделать?...

Данные из сайта копируются не все
Здравствуйте. Написал макрос по чтению web-страниц. Однако при тестировании получаю старую информацию из сайта. В броузере страницу...

2
Заблокирован
26.12.2016, 14:07
Enjoy
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
//
// Copyright (c) malhaz
//
 
#include <windows.h>
 
#define IDC_BUTTON1 100
#define IDC_EDIT1   101
 
void writeF(char* svStr)
{
    HFILE File; File = _lopen("CopyFile.txt", OF_WRITE);
    if( HFILE_ERROR == File ) File = _lcreat("CopyFile.txt", 0);
    else _llseek(File, 0L, 2);
    _lwrite(File, svStr, lstrlen(svStr)); _lclose(File);
}
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    LRESULT retval = 0;
    switch( uMsg ){
    case WM_CREATE:{
    HWND hwndButton;hwndButton = CreateWindow("BUTTON", "Start", BS_DEFPUSHBUTTON | WS_TABSTOP | WS_VISIBLE | WS_CHILD, 10, 10, 100, 28, hWnd, (HMENU)(UINT_PTR)IDC_BUTTON1, ((LPCREATESTRUCT)lParam)->hInstance, NULL);
    if( NULL == hwndButton ) {MessageBox(hWnd, "Could not create button", "Error", MB_OK | MB_ICONSTOP);
        exit(EXIT_FAILURE);
    }
    RECT rc; GetClientRect(hWnd, &rc); HWND hwndEdit;
    hwndEdit = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", NULL, ES_MULTILINE | ES_WANTRETURN | ES_AUTOVSCROLL | ES_NOHIDESEL | WS_VSCROLL | WS_CHILD | WS_TABSTOP | WS_VISIBLE, 10, 70, rc.right - 20, rc.bottom - 80, hWnd, (HMENU)(UINT_PTR)IDC_EDIT1, ((LPCREATESTRUCT)lParam)->hInstance, NULL);
    if( NULL == hwndEdit ) {MessageBox(hWnd, "Could not create edit", "Error", MB_OK | MB_ICONSTOP);
        exit(EXIT_FAILURE);
    }
    }
    break;
    case WM_COMMAND:
    {
    int wmId;
    wmId = LOWORD(wParam);
    switch( wmId )
    {
    case IDC_BUTTON1:
    {
    OPENFILENAME ofn={0};
    char svFilename[MAX_PATH]="";
    ofn.lStructSize=sizeof(OPENFILENAME);
    ofn.hwndOwner=GetActiveWindow();
    ofn.hInstance=GetModuleHandle(NULL);
    ofn.lpstrFile=svFilename;
    ofn.nMaxFile=sizeof(svFilename)-1;
    ofn.lpstrFilter="TXT Files\0 *.txt\0All files\0 *.*\0";
    ofn.lpstrInitialDir = "D:";
    ofn.lpstrTitle="Choose a file";
    ofn.Flags=OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
    if( 0 == GetOpenFileName(&ofn) ) break;
    HFILE File;
    File = _lopen(svFilename, OF_READ | OF_SHARE_DENY_WRITE);
    if( HFILE_ERROR == File ) break;
    UINT SizeBuffer;
    SizeBuffer = _llseek(File, 0L, 2);
    _llseek(File, 0L, 0);
    HANDLE hMem;
    hMem = LocalAlloc(LMEM_MOVEABLE | LMEM_ZEROINIT, SizeBuffer + 1);
    if( !hMem ) {MessageBox(hWnd, "Not enough memory", "Error", MB_OK | MB_ICONHAND);break;}
    LPVOID Buffer;
    Buffer = LocalLock(hMem);
    UINT BytesRead;
    BytesRead = _lread(File, Buffer, SizeBuffer);
    _lclose(File);
    if( BytesRead == HFILE_ERROR ||  BytesRead != SizeBuffer ){MessageBox(hWnd, "Could not reading file", "Error", MB_OK | MB_ICONEXCLAMATION);break;}
    LocalUnlock(hMem);  
    int Index = GetWindowTextLength(GetDlgItem(hWnd, IDC_EDIT1));
    SendMessage(GetDlgItem(hWnd, IDC_EDIT1), EM_SETSEL, (WPARAM)Index, (LPARAM)Index);
    SendMessage(GetDlgItem(hWnd, IDC_EDIT1), EM_REPLACESEL, (WPARAM)0, (LPARAM)Buffer);
    writeF(reinterpret_cast<char*>(Buffer));
    }
    break;
    default:break;
    }//eof: wmId
    }
    break;
    case WM_DESTROY:PostQuitMessage(0);break;
    default:retval = DefWindowProc(hWnd, uMsg, wParam, lParam);break;
    }
    return retval;
}
 
//
// Entry Point.
//
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int nCmdShow)
{
    WNDCLASSEX wcex = {sizeof(WNDCLASSEX), CS_VREDRAW | CS_HREDRAW, WndProc, 0, 0, hInstance, LoadIcon(NULL, IDI_APPLICATION), LoadCursor(NULL, IDC_ARROW),(HBRUSH)(COLOR_WINDOW + 1), NULL, "APP_WIN32", NULL,};
    ATOM Atom; Atom = RegisterClassEx(&wcex);
    if( NULL == Atom ) {Atom = RegisterClass((LPWNDCLASS)&wcex.style);
        if( NULL == Atom ) {MessageBox(HWND_DESKTOP, "Cannot RegisterClass", "Error", MB_OK | MB_ICONSTOP);return EXIT_FAILURE;}
    }
    HWND hWnd;
    hWnd = CreateWindowEx(WS_EX_APPWINDOW, MAKEINTATOM(Atom), "App Win32", WS_SYSMENU | WS_CAPTION | WS_MINIMIZEBOX, ((GetSystemMetrics(SM_CXSCREEN) - 640) / 2), ((GetSystemMetrics(SM_CYSCREEN) - 400) / 2), 640, 400, HWND_DESKTOP, NULL, hInstance, NULL);
    if( NULL == hWnd ) {MessageBox(HWND_DESKTOP, "Cannot CreateWindow", "Error", MB_OK | MB_ICONSTOP);return EXIT_FAILURE;}
    ShowWindow(hWnd, nCmdShow);
    UpdateWindow(hWnd);
    MSG Msg;
    while( GetMessage(&Msg, NULL, 0, 0) > 0 ) {TranslateMessage(&Msg);DispatchMessage(&Msg);}
    return (int)Msg.wParam;
}
0
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
26.12.2016, 15:13
Цитата Сообщение от MuslimPalit Посмотреть сообщение
C++
1
2
3
4
5
6
char* readF(char* szFile)
{
 char buf[11];
 ...
return buf;
}
MuslimPalit, вы возвращаете указатель на локальную переменную. После завершения функции readF переменной buf[] не существует.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.12.2016, 15:13
Помогаю со студенческими работами здесь

Сегментный регистр DS, CS, данные копируются из одного и того же адреса
ребята, скажите почему я ставлю 'mov ds адрес', и 'mov cs адрес' копируются данные из одного и того же адреса, хотя значение в сегменте DS...

Неправильно копируются данные из одномерного массива в столбец Excel
Добрый вечер! Помогите разобраться, пожалуйста! Пытаюсь скопировать одномерный массив сразу в столбец Excel, но во всем столбце...

Не копируются данные из одного листа на другой через кнопку
Добрый день. Помогите, пожалуйста, решить проблемы: 1. Лист1. Кнопка &quot;Дата&quot;. Если заполнены все ячейки M,N,O,P,Q (в них...

За счет чего копируются данные в список в приведенном коде
Привет. Наткнулся тут на алгоритм построение нагруженного дерева Приводить его не буду, покажу пробный пример: struct A {...

Считать данные из файла и поместить данные о каждом пассажире и его билете
Всем доброго времени суток! Я пишу программу, смысл которой заключается в следующем: Программа должна записывать данные о пассажире...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru