Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 65, средняя оценка - 4.71
Дашустрик
Дашики
7 / 7 / 1
Регистрация: 26.09.2008
Сообщений: 477
#1

Работа с файлами средствами Win API. - Visual C++

16.03.2009, 20:02. Просмотров 8032. Ответов 19
Метки нет (Все метки)

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

Добавлено через 1 минуту 25 секунд
Программа должна выполнять следующие функции: отображать об-щую информацию о файловой системе : максимально возможную длину имени файла, флаги файловой системы, тип файла, атрибуты, свойства.
http://www.cyberforum.ru/cpp/thread41543.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2009, 20:02
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Работа с файлами средствами Win API. (Visual C++):

Win API (Таймер)
Мне в программе нужно вывести на форму Таймер и надпись ON, при щелчке на ней...

Основы в Win API
WIN32 API начал учить недавно, но разобраться получается чесговоря не очень.......

Реестр Win Api
Добрый вечер! Кто знает как сделать запись в реестр средствами Win Api?

win api элементарная графика
nclude<windows.h> #include<string.h> POINT elips,tr1,tr2; const unsigned...

Создать Trackbar на Win Api
Добрый день, помогите пожалуйста. Нужно создать элемент управления бегунок...

19
Vourhey
Почетный модератор
6490 / 2264 / 187
Регистрация: 29.07.2006
Сообщений: 12,534
16.03.2009, 20:24 #2
читай:
http://msdn.microsoft.com/en-us/library/aa364229(VS.85).aspx
0
Дашустрик
Дашики
7 / 7 / 1
Регистрация: 26.09.2008
Сообщений: 477
16.03.2009, 20:25  [ТС] #3
тут на английском
0
Vourhey
Почетный модератор
6490 / 2264 / 187
Регистрация: 29.07.2006
Сообщений: 12,534
16.03.2009, 20:40 #4
учи английский

Добавлено через 14 минут 8 секунд
а проще. там на странице есть имена функций. введи в поисковике - можешь найти по ним хелп.
0
Дашустрик
Дашики
7 / 7 / 1
Регистрация: 26.09.2008
Сообщений: 477
08.05.2009, 14:13  [ТС] #5
не нашла я там имен функций...
0
Дашустрик
Дашики
7 / 7 / 1
Регистрация: 26.09.2008
Сообщений: 477
12.05.2009, 18:32  [ТС] #6
вот составила код:
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
#include <windows.h>
#include <tchar.h>
#include <string>
#include <iostream>
class CMFStartApp : public CWinApp
{
public:
    virtual BOOL    InitInstance();
    void                    FileSystemInfo();
};
CMFStartApp MFStartApp;
BOOL CMFStartApp::InitInstance()
{
    FileSystemInfo();   
    return FALSE;
}
void CMFStartApp::FileSystemInfo() 
{
    CString VolumeNameBuffer;
    DWORD   nVolumeNameSize = 100;  
    DWORD   VolumeSerialNumber;
    DWORD   MaximumComponentLength;
    DWORD   FileSystemFlags;
    CString FileSystemNameBuffer;
    DWORD   nFileSystemNameSize = 100;
    GetVolumeInformation(
        NULL, 
        VolumeNameBuffer.GetBuffer(nVolumeNameSize), 
        nVolumeNameSize, 
        &VolumeSerialNumber,
        &MaximumComponentLength, &FileSystemFlags,
        FileSystemNameBuffer.GetBuffer(nFileSystemNameSize),
        nFileSystemNameSize );
    VolumeNameBuffer.ReleaseBuffer();
    FileSystemNameBuffer.ReleaseBuffer();
    try
    {
        CStdioFile file("fsystem.dat", 
            CFile::modeCreate | 
            CFile::modeWrite | 
            CFile::typeText);
        CString strTmpOut;
        strTmpOut.GetBuffer(512);
        strTmpOut.Format("Метка тома: %s \n", VolumeNameBuffer);
        file.WriteString(strTmpOut);
        strTmpOut.Format("Серийный номер: %X \n", 
            VolumeSerialNumber);
        file.WriteString(strTmpOut);
        strTmpOut.Format("Тип файловой системы: %s \n", 
            FileSystemNameBuffer);
        file.WriteString(strTmpOut);
            strTmpOut.Format("Максимальная длина имени файла: %d \n", 
            MaximumComponentLength);
        file.WriteString(strTmpOut);
                strTmpOut = "Свойства файловой системы \n";
        if(FileSystemFlags & FS_CASE_IS_PRESERVED)
            strTmpOut += "   FS_CASE_IS_PRESERVED\n";
        if(FileSystemFlags & FS_CASE_SENSITIVE)
            strTmpOut += "   FS_CASE_SENSITIVE\n";
            if(FileSystemFlags & FS_UNICODE_STORED_ON_DISK)
            strTmpOut += "   FS_UNICODE_STORED_ON_DISK\n";
            if(FileSystemFlags & FS_PERSISTENT_ACLS)
            strTmpOut += "   FS_PERSISTENT_ACLS\n";
            if(FileSystemFlags & FS_FILE_COMPRESSION)
            strTmpOut += "   FS_FILE_COMPRESSION\n";
        if(FileSystemFlags & FS_VOL_IS_COMPRESSED)
            strTmpOut += "   FS_VOL_IS_COMPRESSED\n";
        file.WriteString(strTmpOut);    
            file.Close();
        MessageBox(NULL, "File fsystem.dat", "Message", MB_OK);
    }
 
    catch(...)
    {
 
        MessageBox(NULL, "File I/O Error", "Error", MB_OK);
    }
    return;
}
но вот 1 ошибка,подскажите плиз как её исправить
c:\documents and settings\дашустрик\рабочий стол\систематичное программирование\4\4.cpp(83) : fatal error C1010: unexpected end of file while looking for precompiled header directive
Error executing cl.exe.
0
Rififi
2363 / 1056 / 104
Регистрация: 03.05.2009
Сообщений: 2,656
12.05.2009, 18:39 #7
в начало исходника добавь строчку
#include "stdafx.h"
0
Дашустрик
Дашики
7 / 7 / 1
Регистрация: 26.09.2008
Сообщений: 477
12.05.2009, 19:39  [ТС] #8
теперь 39 ошибок
0
Rififi
2363 / 1056 / 104
Регистрация: 03.05.2009
Сообщений: 2,656
12.05.2009, 19:40 #9
Ошибки секретные?
0
Дашустрик
Дашики
7 / 7 / 1
Регистрация: 26.09.2008
Сообщений: 477
12.05.2009, 19:53  [ТС] #10
C:\Documents and Settings\Дашустрик\Рабочий стол\Систематичное программирование\4\4.cpp(7) : error C2504: 'CWinApp' : base class undefined
C:\Documents and Settings\Дашустрик\Рабочий стол\Систематичное программирование\4\4.cpp(20) : error C2065: 'CString' : undeclared identifier
C:\Documents and Settings\Дашустрик\Рабочий стол\Систематичное программирование\4\4.cpp(20) : error C2146: syntax error : missing ';' before identifier 'VolumeNameBuffer'
C:\Documents and Settings\Дашустрик\Рабочий стол\Систематичное программирование\4\4.cpp(20) : error C2065: 'VolumeNameBuffer' : undeclared identifier
C:\Documents and Settings\Дашустрик\Рабочий стол\Систематичное программирование\4\4.cpp(25) : error C2146: syntax error : missing ';' before identifier 'FileSystemNameBuffer'
C:\Documents and Settings\Дашустрик\Рабочий стол\Систематичное программирование\4\4.cpp(25) : error C2065: 'FileSystemNameBuffer' : undeclared identifier
C:\Documents and Settings\Дашустрик\Рабочий стол\Систематичное программирование\4\4.cpp(29) : error C2228: left of '.GetBuffer' must have class/struct/union type
C:\Documents and Settings\Дашустрик\Рабочий стол\Систематичное программирование\4\4.cpp(33) : error C2228: left of '.GetBuffer' must have class/struct/union type
C:\Documents and Settings\Дашустрик\Рабочий стол\Систематичное программирование\4\4.cpp(35) : error C2228: left of '.ReleaseBuffer' must have class/struct/union type
C:\Documents and Settings\Дашустрик\Рабочий стол\Систематичное программирование\4\4.cpp(36) : error C2228: left of '.ReleaseBuffer' must have class/struct/union type
C:\Documents and Settings\Дашустрик\Рабочий стол\Систематичное программирование\4\4.cpp(39) : error C2065: 'CStdioFile' : undeclared identifier
C:\Documents and Settings\Дашустрик\Рабочий стол\Систематичное программирование\4\4.cpp(39) : error C2146: syntax error : missing ';' before identifier 'file'
C:\Documents and Settings\Дашустрик\Рабочий стол\Систематичное программирование\4\4.cpp(39) : error C2065: 'file' : undeclared identifier
C:\Documents and Settings\Дашустрик\Рабочий стол\Систематичное программирование\4\4.cpp(40) : error C2653: 'CFile' : is not a class or namespace name
C:\Documents and Settings\Дашустрик\Рабочий стол\Систематичное программирование\4\4.cpp(40) : error C2065: 'modeCreate' : undeclared identifier
C:\Documents and Settings\Дашустрик\Рабочий стол\Систематичное программирование\4\4.cpp(41) : error C2653: 'CFile' : is not a class or namespace name
C:\Documents and Settings\Дашустрик\Рабочий стол\Систематичное программирование\4\4.cpp(41) : error C2065: 'modeWrite' : undeclared identifier
C:\Documents and Settings\Дашустрик\Рабочий стол\Систематичное программирование\4\4.cpp(42) : error C2653: 'CFile' : is not a class or namespace name
C:\Documents and Settings\Дашустрик\Рабочий стол\Систематичное программирование\4\4.cpp(42) : error C2065: 'typeText' : undeclared identifier
C:\Documents and Settings\Дашустрик\Рабочий стол\Систематичное программирование\4\4.cpp(43) : error C2146: syntax error : missing ';' before identifier 'strTmpOut'
C:\Documents and Settings\Дашустрик\Рабочий стол\Систематичное программирование\4\4.cpp(43) : error C2065: 'strTmpOut' : undeclared identifier
C:\Documents and Settings\Дашустрик\Рабочий стол\Систематичное программирование\4\4.cpp(44) : error C2228: left of '.GetBuffer' must have class/struct/union type
C:\Documents and Settings\Дашустрик\Рабочий стол\Систематичное программирование\4\4.cpp(45) : error C2228: left of '.Format' must have class/struct/union type
C:\Documents and Settings\Дашустрик\Рабочий стол\Систематичное программирование\4\4.cpp(46) : error C2228: left of '.WriteString' must have class/struct/union type
C:\Documents and Settings\Дашустрик\Рабочий стол\Систематичное программирование\4\4.cpp(47) : error C2228: left of '.Format' must have class/struct/union type
C:\Documents and Settings\Дашустрик\Рабочий стол\Систематичное программирование\4\4.cpp(49) : error C2228: left of '.WriteString' must have class/struct/union type
C:\Documents and Settings\Дашустрик\Рабочий стол\Систематичное программирование\4\4.cpp(50) : error C2228: left of '.Format' must have class/struct/union type
C:\Documents and Settings\Дашустрик\Рабочий стол\Систематичное программирование\4\4.cpp(52) : error C2228: left of '.WriteString' must have class/struct/union type
C:\Documents and Settings\Дашустрик\Рабочий стол\Систематичное программирование\4\4.cpp(53) : error C2228: left of '.Format' must have class/struct/union type
C:\Documents and Settings\Дашустрик\Рабочий стол\Систематичное программирование\4\4.cpp(55) : error C2228: left of '.WriteString' must have class/struct/union type
C:\Documents and Settings\Дашустрик\Рабочий стол\Систематичное программирование\4\4.cpp(56) : error C2440: '=' : cannot convert from 'char [28]' to 'int'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast
C:\Documents and Settings\Дашустрик\Рабочий стол\Систематичное программирование\4\4.cpp(58) : error C2297: '+=' : illegal, right operand has type 'char [25]'
C:\Documents and Settings\Дашустрик\Рабочий стол\Систематичное программирование\4\4.cpp(60) : error C2297: '+=' : illegal, right operand has type 'char [22]'
C:\Documents and Settings\Дашустрик\Рабочий стол\Систематичное программирование\4\4.cpp(62) : error C2297: '+=' : illegal, right operand has type 'char [30]'
C:\Documents and Settings\Дашустрик\Рабочий стол\Систематичное программирование\4\4.cpp(64) : error C2297: '+=' : illegal, right operand has type 'char [23]'
C:\Documents and Settings\Дашустрик\Рабочий стол\Систематичное программирование\4\4.cpp(66) : error C2297: '+=' : illegal, right operand has type 'char [24]'
C:\Documents and Settings\Дашустрик\Рабочий стол\Систематичное программирование\4\4.cpp(68) : error C2297: '+=' : illegal, right operand has type 'char [25]'
C:\Documents and Settings\Дашустрик\Рабочий стол\Систематичное программирование\4\4.cpp(69) : error C2228: left of '.WriteString' must have class/struct/union type
C:\Documents and Settings\Дашустрик\Рабочий стол\Систематичное программирование\4\4.cpp(70) : error C2228: left of '.Close' must have class/struct/union type
Error executing cl.exe.
0
Rififi
2363 / 1056 / 104
Регистрация: 03.05.2009
Сообщений: 2,656
12.05.2009, 20:01 #11
криво создала проект

в stdafx.h как минимум должно быть

#include <afxwin.h>
#include <afxext.h>

windows.h - не нужен, желательно добавить STRICT и WIN32_LEAN_AND_MEAN
в настройках проекта проверить что включены прекомпилированные заголовки.

если не работает, создай новый проект, НИЧЕГО не трогай (((Ж, оставь всё по-умолчанию, и перенеси туда функцию FileSystemInfo
0
Дашустрик
Дашики
7 / 7 / 1
Регистрация: 26.09.2008
Сообщений: 477
13.05.2009, 13:02  [ТС] #12
куда именно добавить STRICT и WIN32_LEAN_AND_MEAN?
где находяться настройик,в которых проверить что включены прекомпилированные заголовки?
"если не работает, создай новый проект, НИЧЕГО не трогай (((Ж, оставь всё по-умолчанию, и перенеси туда функцию FileSystemInfo"
это как?
0
Rififi
2363 / 1056 / 104
Регистрация: 03.05.2009
Сообщений: 2,656
13.05.2009, 13:07 #13
куда именно добавить STRICT и WIN32_LEAN_AND_MEAN?
в stdafx.h
подробнее http://social.msdn.microsoft.com/Sea...0checking&ac=3 и http://social.msdn.microsoft.com/Sea..._AND_MEAN&ac=8

где находяться настройик,в которых проверить что включены прекомпилированные заголовки?
Confirgration -> C/C++ -> Precompiled Headers

это как?
Через Copy-Paste (:
0
Дашустрик
Дашики
7 / 7 / 1
Регистрация: 26.09.2008
Сообщений: 477
13.05.2009, 14:28  [ТС] #14
теперь такая ошибка
c:\program files\microsoft visual studio\vc98\mfc\include\afxv_w32.h(14) : fatal error C1189: #error : WINDOWS.H already included. MFC apps must not #include <windows.h>
Error executing cl.exe.
0
Rififi
2363 / 1056 / 104
Регистрация: 03.05.2009
Сообщений: 2,656
13.05.2009, 14:49 #15
ты точно создаешь mfc-приложение?
у тебя где-то в исходниках подключен windows.h, причём вперед всех, а для mfc это нехорошо. надо его убрать и оставить только mfc'шные инклуды.
0
Дашустрик
Дашики
7 / 7 / 1
Регистрация: 26.09.2008
Сообщений: 477
13.05.2009, 14:57  [ТС] #16
вот мой исходник:
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
#include <stdafx.h>
#include <afxwin.h>
#include <afxext.h>
#include <tchar.h>
#include <string>
#include <iostream>
class CMFStartApp : public CWinApp
{
public:
    virtual BOOL    InitInstance();
    void                    FileSystemInfo();
};
CMFStartApp MFStartApp;
BOOL CMFStartApp::InitInstance()
{
    FileSystemInfo();   
    return FALSE;
}
void CMFStartApp::FileSystemInfo() 
{
    CString VolumeNameBuffer;
    DWORD   nVolumeNameSize = 100;  
    DWORD   VolumeSerialNumber;
    DWORD   MaximumComponentLength;
    DWORD   FileSystemFlags;
    CString FileSystemNameBuffer;
    DWORD   nFileSystemNameSize = 100;
    GetVolumeInformation(
        NULL, 
        VolumeNameBuffer.GetBuffer(nVolumeNameSize), 
        nVolumeNameSize, 
        &VolumeSerialNumber,
        &MaximumComponentLength, &FileSystemFlags,
        FileSystemNameBuffer.GetBuffer(nFileSystemNameSize),
        nFileSystemNameSize );
    VolumeNameBuffer.ReleaseBuffer();
    FileSystemNameBuffer.ReleaseBuffer();
    try
    {
        CStdioFile file("fsystem.dat", 
            CFile::modeCreate | 
            CFile::modeWrite | 
            CFile::typeText);
        CString strTmpOut;
        strTmpOut.GetBuffer(512);
        strTmpOut.Format("Метка тома: %s \n", VolumeNameBuffer);
        file.WriteString(strTmpOut);
        strTmpOut.Format("Серийный номер: %X \n", 
            VolumeSerialNumber);
        file.WriteString(strTmpOut);
        strTmpOut.Format("Тип файловой системы: %s \n", 
            FileSystemNameBuffer);
        file.WriteString(strTmpOut);
            strTmpOut.Format("Максимальная длина имени файла: %d \n", 
            MaximumComponentLength);
        file.WriteString(strTmpOut);
                strTmpOut = "Свойства файловой системы \n";
        if(FileSystemFlags & FS_CASE_IS_PRESERVED)
            strTmpOut += "   FS_CASE_IS_PRESERVED\n";
        if(FileSystemFlags & FS_CASE_SENSITIVE)
            strTmpOut += "   FS_CASE_SENSITIVE\n";
            if(FileSystemFlags & FS_UNICODE_STORED_ON_DISK)
            strTmpOut += "   FS_UNICODE_STORED_ON_DISK\n";
            if(FileSystemFlags & FS_PERSISTENT_ACLS)
            strTmpOut += "   FS_PERSISTENT_ACLS\n";
            if(FileSystemFlags & FS_FILE_COMPRESSION)
            strTmpOut += "   FS_FILE_COMPRESSION\n";
        if(FileSystemFlags & FS_VOL_IS_COMPRESSED)
            strTmpOut += "   FS_VOL_IS_COMPRESSED\n";
        file.WriteString(strTmpOut);    
            file.Close();
        MessageBox(NULL, "File fsystem.dat", "Message", MB_OK);
    }
 
    catch(...)
    {
 
        MessageBox(NULL, "File I/O Error", "Error", MB_OK);
    }
    return;
}
0
Rififi
2363 / 1056 / 104
Регистрация: 03.05.2009
Сообщений: 2,656
13.05.2009, 15:12 #17
И это что, такое студия сделала?
как минимум вот это - #include <stdafx.h> - уже неправильно.
в общем, даже не знаю чё тебе сказать, ты явно "плаваешь" в основах.
изучай первые шаги: http://www.firststeps.ru/mfc/steps/mfc1.html
там правда материал уже устаревший и используется Visual Studio 98, но придётся разобраться.
0
Дашустрик
Дашики
7 / 7 / 1
Регистрация: 26.09.2008
Сообщений: 477
13.05.2009, 15:42  [ТС] #18
подождите,добавить эту строчку Вы мне сами посоветовали

Добавлено через 27 минут 3 секунды
молодой человек,что же Вы замолчали?
0
Rififi
2363 / 1056 / 104
Регистрация: 03.05.2009
Сообщений: 2,656
13.05.2009, 16:10 #19
Дашустрик,
подождите,добавить эту строчку Вы мне сами посоветовали
почитай, чем отличается
#include "..."
от
#include <...>

молодой человек,что же Вы замолчали?
Да можем и поговорить
0
Дашустрик
Дашики
7 / 7 / 1
Регистрация: 26.09.2008
Сообщений: 477
13.05.2009, 16:24  [ТС] #20
Цитата Сообщение от Rififi Посмотреть сообщение
Дашустрик,
подождите,добавить эту строчку Вы мне сами посоветовали
почитай, чем отличается
#include "..."
от
#include <...>
а ошибка одна и та же остается
0
13.05.2009, 16:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2009, 16:24
Привет! Вот еще темы с решениями:

Win API vs MFC с APP Wizard
Стало вот интересно, какие есть мнения насчет плюсов и минусов одного и...

Api-ms-win-crt-runtime-|1-1-0.dll
Какую программу мне нужно переустановить, чтобы решить Эту проблему: &quot;Запуск...

Win API в Microsoft Visual Studio 2008
Здравствуйте, уважаемые форумчане! Возникла такая проблема. Пишу простенькую...

Работа с файлами(Запись,чтение,работа с данными)
Здравствуйте, никак не могу осилить файлы... Для начала вот само задание: В...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru