Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
1 / 1 / 1
Регистрация: 04.05.2016
Сообщений: 266

Выбор случайного файла

28.10.2017, 19:07. Показов 1539. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
мне нужна фунция которая через FindFirst/Next выводит случайное имя файла
например
C++
1
FileFind("*.dic");
выводит имя случайного dic файла
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.10.2017, 19:07
Ответы с готовыми решениями:

Выбор случайного файла
Добрый день всем:) Подскажите пожалуйста, как сделать выбор рандом файл из такой конструкции? var s = new...

Выбор случайного слова из файла
В ТХТ файле есть строки: Ваш автомобиль . автоцентр на . ... и т.д. строк много Как при нажатии на кнопку получить в TextBox...

Выбор случайного слова с файла
Есть програмка "игра Поле Чудес", и также текстовый файл с определенными словами и их описаниями. Нужно чтоб в програме с файла выбирало...

7
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33399 / 21509 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
28.10.2017, 22:27
Получаешь список всех файлов с нужным расширением в нужной папке, и выбираешь из них один, случайно:

C++
1
2
3
4
5
6
#include <System.IOUtils.hpp>
// ...
 
    TStringDynArray Files;
    Files = TDirectory::GetFiles("C:\\__Volvo", "*.dic", TSearchOption::soTopDirectoryOnly);
    ShowMessage(Files[Random(Files.Length)]);
(работает на RAD 2009 и выше)
2
1 / 1 / 1
Регистрация: 04.05.2016
Сообщений: 266
02.11.2017, 20:46  [ТС]
Цитата Сообщение от volvo Посмотреть сообщение
Получаешь список всех файлов с нужным расширением в нужной папке, и выбираешь из них один, случайно:

C++
1
2
3
4
5
6
#include <System.IOUtils.hpp>
// ...
 
    TStringDynArray Files;
    Files = TDirectory::GetFiles("C:\\__Volvo", "*.dic", TSearchOption::soTopDirectoryOnly);
    ShowMessage(Files[Random(Files.Length)]);
(работает на RAD 2009 и выше)
а мне надо с использованием WinAPI и FindFirstFile и FindNextFile
0
106 / 93 / 44
Регистрация: 26.07.2015
Сообщений: 197
03.11.2017, 10:37
Тогда так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int iAttributes = faAnyFile;
TSearchRec sr;
AnsiString PathAndExt = "C:\\*.dic";
TStringList *FileList = new TStringList;
 
randomize();
if (FindFirst(PathAndExt, iAttributes, sr) == 0)
{
        do
        {
                FileList->Add(sr.Name);
        }
        while ( FindNext(sr) == 0 );
        FindClose(sr);
}
int idx = random(FileList->Count);
AnsiString Rezult = FileList->Strings[idx];
delete FileList;
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33399 / 21509 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
03.11.2017, 10:47
Цитата Сообщение от viramir Посмотреть сообщение
а мне надо с использованием WinAPI и FindFirstFile и FindNextFile
Значит, вопрос надо было задавать в форуме WinAPI, чего ты все время в Билдер лезешь, если тебе его функционал не нужен?
0
1 / 1 / 1
Регистрация: 04.05.2016
Сообщений: 266
03.11.2017, 11:12  [ТС]
Цитата Сообщение от volvo Посмотреть сообщение
Значит, вопрос надо было задавать в форуме WinAPI, чего ты все время в Билдер лезешь, если тебе его функционал не нужен?
Я лезу в билдер тк я с ним работаю.Но люблю API
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33399 / 21509 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
03.11.2017, 11:43
Цитата Сообщение от Si14 Посмотреть сообщение
Тогда так:
Нет, ребята. Все по-взрослому тогда уже. WinAPI - так WinAPI, никаких StringList-ов, никаких AnsiString-ов. Работайте с char*... Или уже не выделывайтесь, и используйте нормальные средства, которые предоставляют выбранные для разработки среда/компилятор.
Цитата Сообщение от viramir Посмотреть сообщение
Но люблю API
Любил бы - умел бы сам делать те вещи, о которых просишь. Это - азбука для WinAPI-программиста, потому что никаких других средств для перебора всех файлов в папке там нет. А то, что я вижу здесь - это чистой воды извращение: использовать WinAPI в Билдере, который позволяет сделать тремя строками то, что записано выше в 18 строк - да ради чего? Этот код что, будет быстрее моего работать? Не будет. Он даст меньший исполнимый код? Возможно но при использовании других средств Билдера, таких как StringList-ы это не будет заметно в общей массе, вот если бы весь проект целиком писался на WinAPI (и компилировался бы более эффективным компилятором) - тогда было бы заметно. Он что, более поддерживаемый? Нет, чем больше строк - тем сложнее поддержка. Он что, более универсальный? Нет. Изменением одного параметра:
C++
1
Files = TDirectory::GetFiles("C:\\__Volvo", "*.dic", TSearchOption::soAllDirectories);
я заставлю приложение находить .dic-файлы во всех вложенных подпапках. Тебе для этого придется выносить код в отдельную функцию и вызывать ее рекурсивно. Более того, GetFiles - кроссплатформенная, а не прибитая гвоздями к Windows, как вышеприведенный код. И когда понадобится перенести приложение на другую ОС - это очень сократит время переноса, переделывать придется только задание самого пути, все остальное останется без изменений. Про вышеприведенный код я молчу, заставить его работать на том же Андроиде вообще нереально...

Итак, повторяю вопрос: ради чего использовать WinAPI?
1
1 / 1 / 1
Регистрация: 04.05.2016
Сообщений: 266
03.11.2017, 11:47  [ТС]
Цитата Сообщение от volvo Посмотреть сообщение
Нет, ребята. Все по-взрослому тогда уже. WinAPI - так WinAPI, никаких StringList-ов, никаких AnsiString-ов. Работайте с char*... Или уже не выделывайтесь, и используйте нормальные средства, которые предоставляют выбранные для разработки среда/компилятор.
Любил бы - умел бы сам делать те вещи, о которых просишь. Это - азбука для WinAPI-программиста, потому что никаких других средств для перебора всех файлов в папке там нет. А то, что я вижу здесь - это чистой воды извращение: использовать WinAPI в Билдере, который позволяет сделать тремя строками то, что записано выше в 18 строк - да ради чего? Этот код что, будет быстрее моего работать? Не будет. Он даст меньший исполнимый код? Возможно но при использовании других средств Билдера, таких как StringList-ы это не будет заметно в общей массе, вот если бы весь проект целиком писался на WinAPI (и компилировался бы более эффективным компилятором) - тогда было бы заметно. Он что, более поддерживаемый? Нет, чем больше строк - тем сложнее поддержка. Он что, более универсальный? Нет. Изменением одного параметра:
C++
1
Files = TDirectory::GetFiles("C:\\__Volvo", "*.dic", TSearchOption::soAllDirectories);
я заставлю приложение находить .dic-файлы во всех вложенных подпапках. Тебе для этого придется выносить код в отдельную функцию и вызывать ее рекурсивно. Более того, GetFiles - кроссплатформенная, а не прибитая гвоздями к Windows, как вышеприведенный код. И когда понадобится перенести приложение на другую ОС - это очень сократит время переноса, переделывать придется только задание самого пути, все остальное останется без изменений. Про вышеприведенный код я молчу, заставить его работать на том же Андроиде вообще нереально...

Итак, повторяю вопрос: ради чего использовать WinAPI?
Потому что не работает то что было раньше
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.11.2017, 11:47
Помогаю со студенческими работами здесь

Выбор случайного файла из указанной папки
Как выбирать из указанной папки случайное изображение?

Выбор случайного слова из txt файла и вывод в textBox
Делаю игру &quot;Виселица&quot; и мне нужно реализовать,чтобы по нажатию кнопки выбиралось рандомное слово из текстового файла и textbox присваивал...

Выбор случайного файла из множества, его перемещение и переименование
Добрый день. Помогите с решением задачи. В папке &quot;f:\17 4\----15.tcr&quot; лежит множество файлов doc и rtf с разными названиями. ...

Выбор случайного действия
Тоесть у меня есть: if (hi == &quot;Привет&quot;) { Console.WriteLine(&quot;Привет&quot;); Console.WriteLine(&quot;Хай&quot;); Console.WriteLine(&quot;Тут...

Выбор случайного id (формула)
Здравствуйте. Помогите, пожалуйста составить формулу распределения вероятности. В общем задача следующая: в массиве n пользователей, у...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru