Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 12.12.2015
Сообщений: 4
1

Используя функции GetDriveType и GetDiskFreeSpace определить тип диска и количество секторов в кластере

15.12.2015, 10:07. Показов 1805. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите разобраться в чем ошибка. Задание: Используя функции GetDriveType и GetDiskFreeSpace определить тип диска и количество секторов в кластере на диске.
Код
VB.NET
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
 Declare Function GetDriveType Lib "kernel32.dll" Alias "GetDriveTypeA" (ByVal nDrive As String) As Integer 'Обьявлеянм функцию, которая определит  тип диска
 
    Declare Function GetDiscFreeSpace Lib "kernel32.dll" Alias "GetDiskFreeSpaceA" ( _
             ByVal nDriver As String, ByRef Sectorov_vClaster As Integer, ByRef Byt_VSectore As Integer, _
             ByRef Svobodno_Clasterov As Integer, ByRef Vsego_Clasterov As Integer) As Integer 'Обьявлеянм функцию которая определяет информацию о размере диска
 
    'Перечень возвращаемых значений функции GetDriveType:
 
    Public Const DRIVERVERSION = 0 ' Тип устройства определить не удалось
    Public Const DRIVE_REMOVABLE = 2 ' Сменный диск
    Public Const DRIVE_FIXED = 3    ' Жесткий диск
    Public Const DRIVE_REMOTE = 4   ' Сетевой диск
    Public Const DRIVE_CDROM = 5     'CD-ROM
    Public Const DRIVE_RAMDISK = 6    'Виртуальный диск
 
    Public Function Wsego_Clasterov_NaDisce(ByVal nDrivers As String) As Long
        Dim Sectorov_vClaster, Byt_VSectore, Svobodno_Clasterov, Vsego_Clasterov As Long
        Dim a As Long
        a = GetDiscFreeSpace(nDrivers, Sectorov_vClaster, Byt_VSectore, Svobodno_Clasterov, Vsego_Clasterov)
 
        If a > 0 Then ' если тип диска определен, то перехолим 1 условию, иначе переходим к  Throw New Exception
 
            Return (Sectorov_vClaster) 'Возвращаем значение функции BytesToMegabytes над переменной TotalBytes
        Else
            Throw New Exception("Ошибка определения диска") ' сообщение если диск не был определен
        End If
    End Function
    Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click
        Dim a As String = "" 'обьявление строковой переменной 
        Dim B As String = ""   'обьявление строковой переменной 
        Dim i As Integer    'обьявление переменной и присвоение  
        Dim TipDisc() As String = {"Error", " - не существует.", " - сменный диск.", " - жесткий диск.", " - Сетевой диск.", " - CD-ROM.", " Ram диск."}
        'обьявление строковой переменной и присвоение строковых значений
        Dim AlfaVit As String = "CDEFGHIJKLMN" 'обьявление строковой переменной и присвоение строковых значений
        Dim drivetype As Long 'обьявление переменной для хронения значения результата работы функции GetDriveTyp
 
        For i = 1 To Len(AlfaVit) 'создание счетчика для перебора всех дисков ПК
            a = Mid(AlfaVit, i, 1) ' создание одномерного масива
            drivetype = GetDriveType(a & ":")
 
            If drivetype = 1 Then
                B &= (vbCrLf & vbCrLf & "Диск '" & a & "' не определен") & vbCrLf
            Else
                B &= (vbCr & vbCr & "Диск " & a & TipDisc(drivetype) & vbTab & _
                     "Всего кластеров на диске  '" & a & "' : " & Wsego_Clasterov_NaDisce(CStr(a) & ":"))
            End If
        Next
        MsgBox(B)
    End Sub
 
Throw New Exception("Ошибка определения диска")- пишет что не обработано
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.12.2015, 10:07
Ответы с готовыми решениями:

Используя функции GetDriveType и GetDiskFreeSpace определить тип диска и количество свободных кластеров на диске
Доброго времени суток.Нужна помощь в исправлении кода по 2м АР функциям .Используя функции...

Используя функции GetDriveType и GetDiskFreeSpace определить тип диска и количество байт в секторе на диске
Используя функции GetDriveType и GetDiskFreeSpace определить тип диска и количество байт в секторе...

Определить тип диска и количество секторов в кластере на диске
Вот что нужно сделать: Используя функции GetDriveType и GetDiskFreeSpace определить тип диска и...

Функциями GetSystemTime и GetDiskFreeSpace определить текущий месяц и количество байт в секторе на диске
нужна помощь с реализацией второй апи функции GetDiskFreeSpace. Первую смог составить а по второй...

1
4407 / 3531 / 843
Регистрация: 02.02.2013
Сообщений: 3,417
Записей в блоге: 2
15.12.2015, 13:40 2
Я бы заменил конструкцию If Then в цикле на Select Case.
VB.NET
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
Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click
        Dim a As String = "" 'обьявление строковой переменной 
        Dim B As String = ""   'обьявление строковой переменной 
        Dim i As Integer    'обьявление переменной и присвоение  
        Dim TipDisc() As String = {"Error", " - не существует.", " - сменный диск.", " - жесткий диск.", " - Сетевой диск.", " - CD-ROM.", " Ram диск."}
        'обьявление строковой переменной и присвоение строковых значений
        Dim AlfaVit As String = "CDEFGHIJKLMN" 'обьявление строковой переменной и присвоение строковых значений
        Dim drivetype As Long 'обьявление переменной для хронения значения результата работы функции GetDriveTyp
 Try
    For i = 1 To Len(AlfaVit) 'создание счетчика для перебора всех дисков ПК
        a = Mid(AlfaVit, i, 1) ' создание одномерного масива
        drivetype = GetDriveType(a & ":")
        Select Case drivetype
            Case 0, 1
                B &= (vbCrLf & vbCrLf & "Диск '" & a & "' не определен") & vbCrLf
            Case 5
                B &= (vbCr & vbCr & "Диск " & a & TipDisc(drivetype) & vbTab) 
            Case Else
                B &= (vbCr & vbCr & "Диск " & a & TipDisc(drivetype) & vbTab & _
                 "Всего кластеров на диске  '" & a & "' : " & Wsego_Clasterov_NaDisce(CStr(a) & ":"))
        End Select
    Next
    MsgBox(B)
Catch ex As Exception
    MsgBox(ex.Message)
End Try
End Sub
0
15.12.2015, 13:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.12.2015, 13:40
Помогаю со студенческими работами здесь

Количество секторов, кластеров и серийник диска
необходимо определить кол-во секторов, кластеров, байт в кластере и серийник диска перерыл...

Найти количество кластеров и секторов диска
Как найти количество кластеров и секторов локального диска? И возможно ли обойтись без WinApi?

Используя тип множество определить количество согласных в каждой строчке файла
Есть текстовый файл. Используя тип множество опередлить количество согласных в каждой строчке....

Определить количество секторов на диске
Здравствуйте! Требуется посекторно читать диск (флешку). Проблема с определением количества...

Определить,используя функции, количество заданной буквы в предложении.
Определить,используя функции, количество заданной буквы в предложении.

Определить тип диска
Как определить какой тип диска установлен в системе, ssd или hdd ?


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru