Создание тестов на скорость чтения и скорость записи

Roman1867

Проблемка такая - пишу простенький тест на скорость записи и скорость чтения, локальных и съемных дисков. Как написать тесты вроде разобрался, но не могу разобраться с выбором диска или носителя. Есть мысль выбирать диск через combobox, но не знаю как реализовать. Помогите пожалуйста. MS Visual Studio 2013, на с++
14 ответов

Roman1867

WinAPI?


Roman1867

Windows Form


Roman1867

Это код кнопки тестирования:
#pragma endregion
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
        long ****** Tstart, Tend;
        ****** Zapis[9], Tmp = 0;
        int j;
        for (j = 0; j < 9; j++)
        {
            Tstart = GetTickCount();
            std::fstream ofs("proba.txt", std::ios_base::out);
            for (****** i = 0; i < 999999; i++)
            {
                ofs << printf(" ");
            }
            ofs.close();
            Tend = GetTickCount();
 
            Zapis[j] = 1 / (((Tend - Tstart) / 2600));
        }
        for (int i = 0; i < 9; i++)
        {
            Tmp = Tmp + Zapis[i];
        }
        Tmp = Tmp / 10;
        label1->Text = Convert::ToString(Tmp);
        progressBar1->Maximum = 30;
        progressBar1->Value = Tmp;
но нужно чтобы файл создавался на выбираемом нами диске


Roman1867

Ну ты добавил Combobox? Заполнил?


Roman1867

Нет. Именно с этим я и не могу разобраться. Не знаю как выбрать нужный диск и какие для этого нужны функции. И как это все загнать в Combobox?


Roman1867

Ну на форму добавь его в редакторе. Список дисков - GetLogicalDrives(). Здесь пример смотри: https://msdn.microsoft.com/ru-ru/lib...code-snippet-1


Roman1867

А как сделать чтобы в combobox записывалось по одному диску в строку? просто он пишет все диски в одну строку.


Roman1867

Показывай программу.


Roman1867

Таак, спасибо с этим разобрался. Теперь надо как-то связать combobox и создание файла.С записью в combobox все получилось:
array<String^>^drives = Environment::GetLogicalDrives();
    for (int i = 0; i < drives->Length; ++i)
    comboBox1->Items->Add(drives[i]);
А как сделать что-бы файл создавался по выбранному диску? Вот строка создания файла:
std::fstream ofs("proba.txt", std::ios_base::out);


Roman1867

Пользуйся средствами .NET. Здесь показано для C#: Как создать текстовый файл? Подкорректируй.


Roman1867

Ну ладно как создать файл я разберусь, но вопрос чуть чуть другой - А как сделать что-бы файл создавался по выбранному диску?


Roman1867

Ну возьмёшь текущий элемент из combobox и сформируешь путь, используя String.


Roman1867

Спасибо!!! Разобрался вроде: String^ fileName = comboBox1->SelectedItem->ToString()+"proba.txt";Появился еще один вопрос - как мне выбрать именно локальные диски? Пытался запихать все это в условие, но выдает ошибку несовпадения типов. Вот код вывода дисков в combobox:
array<String^>^drives = Environment::GetLogicalDrives();
for (int i = 0; i < drives->Length; ++i)
{
comboBox1->Items->Add(drives[i]);
}


Roman1867

Смотри класс DriveInfo: https://msdn.microsoft.com/en-us/library/system.io.driveinfo.aspx Там есть пример.