Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.61/36: Рейтинг темы: голосов - 36, средняя оценка - 4.61
6140 / 1898 / 14
Регистрация: 07.07.2008
Сообщений: 10,417

Получение списка файлов, на которые ссылаются ярлыки

30.12.2008, 10:28. Показов 7055. Ответов 45
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
дано:
1)ярлыки с рабочих столов юзеров.(ярлыки каждого юзера в отдельной папке)
2)C++ builder 6
надо
получить список файлов, на которые ссылаются ярлыки каждого юзера.
имя юзера брать по названию папки.

Например:
Иванов
C:\Documents and Settings\aaa.exe
C:\Intel\bbb.exe
Петров
C:\Program Files\qwer.exe

Я не знаю как:
1)как получить список файлов в папке
2)как получить список папок в папке
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.12.2008, 10:28
Ответы с готовыми решениями:

Ярлыки браузеров ссылаются на .bat
Здравствуйте. Помогите пожалуйста справиться с проблемой. Ярлыки браузеров ссылаются на bat файл. При открытии браузеров открываются...

Ярлыки браузеров ссылаются на .bat
Ярлык браузера ссылается на файлы с расширением .bat(C:\ProgramData\UXdqrULZJN\ZkHxTDG0.bat). После удаления папки с этими...

Ярлыки браузеров ссылаются на .bat
Ярлыки браузера ссылаются на файлы с расширением .bat(C:\ProgramData\OyJxBEdcTyC\mFsqBq4.bat), после удаления папки с этими файлами, и...

45
 Аватар для oxotnik
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
30.12.2008, 10:36
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <SysUtils.hpp>
 
void FileList (AnsiString Dir)
{
  TSearchRec sr;
  if (FindFirst(Dir+"\\*.*", faAnyFile, sr) == 0) // можно задать маску для файлов, например: Dir+"\\*.txt" 
     {
       do
         {
           if (!(sr.Attr & faDirectory)) // это значит файлы
                Memo1->Lines->Add(sr.Name.c_str()); // выводим в TMemo
           еlse 
           {
               // выводим в мемо имена папок
               // если надо все прошерстить с папками и подпапками 
               // здесь можно вызвать рекурсивно 
               FileList (sr.Name);
           }
         } while (FindNext(sr) == 0);
     }
  FindClose(sr);
}
1
6140 / 1898 / 14
Регистрация: 07.07.2008
Сообщений: 10,417
30.12.2008, 16:19  [ТС]
Я хреново разбираюсь в C.
Если несложно(в принципе сам разберусь, но щас времени мало)
Можешь дописать программу, чтоб открыть на чтение и закрыть все файлы, находящиеся в папках, которые находятся в указанной папке?
Например
указанная папка\папка1\файл1
указанная папка\папка1\файл2
указанная папка\папка2\файл3
указанная папка\папка3\файл4

вариант:
указанная папка\папка4\папка5\файл5
предусматривать не надо(это я сам уже смогу)
0
 Аватар для oxotnik
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
30.12.2008, 16:35
а что с этим открытым файлом надо сделать? в каком виде: текстовый/бинарный?
каков конечный результат должен быть?
0
6140 / 1898 / 14
Регистрация: 07.07.2008
Сообщений: 10,417
30.12.2008, 19:16  [ТС]
хочу открыть ярлык как текстовый файл(пробовал блокнотом норм открывается), найти строку, на что ссылается ярлык, записать ее в другой файл. Так-же в файл записывать названия папок, когда переходишь в них.

Результат:
Получу список всех программ, установленных на компе.
Прим:
1)Юзеры тупые, и все прожки у них на рабочем столе.(точнее ярлыки к ним)
2)Никак иначе проверить нельзя, т.к. основная масса прожек досовская, и вообще лежит на серваке, а на раб столе тока ярлык.

Результирующий файл должен быть
типа
Кликните здесь для просмотра всего текста
Иванов
C:\Documents and Settings\aaa.exe
C:\Intel\bbb.exe
Петров
C:\Program Files\qwer.exe
0
 Аватар для oxotnik
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
30.12.2008, 22:16
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <SysUtils.hpp>
 
void FileList (AnsiString Dir)
{
  TSearchRec sr;
  if (FindFirst(Dir+"\\*.*", faAnyFile, sr) == 0) // можно задать маску для файлов, например: Dir+"\\*.txt" 
     {
       do
         {
           if (!(sr.Attr & faDirectory)) // это значит файлы
           {
                      TStringList *list = new TStringList();
                      list->LoadFromFile(Dir+"\\" + sr.Name);
                      // дальше парсим этот list на предмет нужной строки, вычленяем ее передаем в другой TStringList, который после заполнения можно записать в файл SaveToFile
                      delete list;
         } while (FindNext(sr) == 0);
     }
  FindClose(sr);
}
1
6140 / 1898 / 14
Регистрация: 07.07.2008
Сообщений: 10,417
04.01.2009, 09:36  [ТС]
[C++ Error] Unit1.cpp(12): E2451 Undefined symbol 'TStringList'
[C++ Error] Unit1.cpp(12): E2451 Undefined symbol 'list'

Добавлено через 2 минуты 21 секунду
Dir+
это как я понял надо заменить на путь к папке?
0
 Аватар для oxotnik
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
04.01.2009, 17:46
Цитата Сообщение от Lurker Посмотреть сообщение
[C++ Error] Unit1.cpp(12): E2451 Undefined symbol 'TStringList'
[C++ Error] Unit1.cpp(12): E2451 Undefined symbol 'list'
#include <Classes.hpp>
Цитата Сообщение от Lurker Посмотреть сообщение
Добавлено через 2 минуты 21 секунду
Dir+
это как я понял надо заменить на путь к папке?
Это переменная, содержащая путь к папке
1
6140 / 1898 / 14
Регистрация: 07.07.2008
Сообщений: 10,417
06.01.2009, 12:17  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <Classes.hpp>
#include <SysUtils.hpp>
 
void FileList (AnsiString Dir)
{
TSearchRec sr;
Dir="C:\\gs\\gp";
if (FindFirst(Dir+"\\*.*", faAnyFile, sr) == 0) // ìîæíî çàäàòü ìàñêó äëÿ ôàéëîâ, íàïðèìåð: Dir+"\\*.txt"
        {
        do
                {
                if (!(sr.Attr & faDirectory)) // ýòî çíà÷èò ôàéëû
                        {
                        TStringList *list = new TStringList();
                        list->LoadFromFile(Dir+"\\" + sr.Name);
                        // äàëüøå ïàðñèì ýòîò list íà ïðåäìåò íóæíîé ñòðîêè, âû÷ëåíÿåì åå ïåðåäàåì â äðóãîé TStringList, êîòîðûé ïîñëå çàïîëíåíèÿ ìîæíî çàïèñàòü â ôàéë SaveToFile
                        delete list;
                        }
                }
        while (FindNext(sr) == 0);
        }
FindClose(sr);
}
[Linker Error] Unresolved external '_main' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\C0X32.OBJ

Я добавил строку Dir="C:\\gs\\gp";
кстати какого типа Dir почему он используется но не объявлен?

// дальше парсим этот list на предмет нужной строки, вычленяем ее передаем в другой TStringList, который после заполнения можно записать в файл SaveToFile
В смысле ищем нужную строку и перезаписываем ее куда-нибудь?
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
06.01.2009, 12:51
В смысле ищем нужную строку и перезаписываем ее куда-нибудь?
необязательно переписывать, можешь и обрабатывать, как тебе надо...
AnsiString Dir - это параметр, передаваемый в функцию... если он не нужен, перенеси его просто в код функции...
0
6140 / 1898 / 14
Регистрация: 07.07.2008
Сообщений: 10,417
06.01.2009, 14:09  [ТС]
перенеси его просто в код функции...
с моими знаниями лучше не буду пытаться.. (на всяк пожарный)
AnsiString Dir - это параметр, передаваемый в функцию... если он не нужен, перенеси его просто в код функции...
мне интересно, правильное я значение в него положил? или нет?
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
06.01.2009, 14:13
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <Classes.hpp>
#include <SysUtils.hpp>
 
void FileList ()
{
TSearchRec sr;
AnsiString Dir ="C:\\gs\\gp";
if (FindFirst(Dir+"\\*.*", faAnyFile, sr) == 0) 
        {
        do
                {
                if (!(sr.Attr & faDirectory))                         {
                        TStringList *list = new TStringList();
                        list->LoadFromFile(Dir+"\\" + sr.Name);
                        delete list;
                        }
                }
        while (FindNext(sr) == 0);
        }
FindClose(sr);
}
а значение правильное, косые для пути надо, чтобы задвоенные были... только если где-то прописан прототип функции, там тоже параметр следует затереть...
1
6140 / 1898 / 14
Регистрация: 07.07.2008
Сообщений: 10,417
06.01.2009, 15:17  [ТС]
[Linker Error] Unresolved external '_main' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\C0X32.OBJ
что означает вот эта ошибка?
только если где-то прописан прототип функции
где где-то? это вся прога пока.
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
06.01.2009, 15:22
ну вообще у тебя не хватает основной функции... если это вся прога, тогда ничего дописываnь не надо... допиши еще такой кусок:
C++
1
2
3
4
int main(){
FileList ();
return 0;
}
0
6140 / 1898 / 14
Регистрация: 07.07.2008
Сообщений: 10,417
06.01.2009, 16:09  [ТС]
ой блин точно %)

Добавлено через 2 минуты 16 секунд
а почему все int main
пишут а не
void main
все равно 0 возвращают?

Добавлено через 3 минуты 35 секунд
прога скомпилилась и завершилась.. и даже без ошибок!
следующий пункт сделать список файлов которые она нашла.
Потом их прочитать.
Щас буду думать над
сделать список файлов которые она нашла.
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
06.01.2009, 16:29
Lurker, таков стандарт по поводу этой функции

а по остальным пунктам, уже несильно сложно, главное - определиться, что конкретно
0
6140 / 1898 / 14
Регистрация: 07.07.2008
Сообщений: 10,417
07.01.2009, 10:39  [ТС]
C++
1
2
3
4
5
  if (FindFirst(Dir+"\\*.*", faAnyFile, sr) == 0) // можно задать маску для файлов, например: Dir+"\\*.txt" 
     {
       do
         {
           if (!(sr.Attr & faDirectory)) // это значит файлы
зачем 2-й if ведь на 1-м уже выбираются файлы и даже по какой-то маске можно.

Добавлено через 1 минуту 50 секунд
и что делает
C++
1
2
TStringList *list = new TStringList();
list->LoadFromFile(Dir+"\\" + sr.Name);
передает в лист содержимое файла?
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
07.01.2009, 11:31
Lurker, первое условие выбирает содержимое всей папки, а потом уже анализирует, что именно в папке, хотя можно их совместить, но тогда вложенные папки выпадут из анализа...
а второй вопрос - ага, вычитывает содержимое файла в TStringList
0
6140 / 1898 / 14
Регистрация: 07.07.2008
Сообщений: 10,417
07.01.2009, 14:09  [ТС]
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
#include <Classes.hpp>
#include <SysUtils.hpp>
#include <stdio.h>
#include <string.h>
#include <conio.h>
 
void main(){
//FILE *pF1 = fopen("C:\\tmp\\1.txt", "rb");
FILE *pF2 = fopen("C:\\tmp\2.txt", "wt");
if (1)//за это не ругать так БУДЕТ надо
{
TSearchRec sr;
AnsiString Dir ="C:\\gs\\gp";
if (FindFirst(Dir+"\\*.*", faAnyFile, sr) == 0)
        {
        do
                {
                if (!(sr.Attr & faDirectory))                         {
                        TStringList *list = new TStringList();
                        list->LoadFromFile(Dir+"\\" + sr.Name);
                        fwrite(list, sizeof(list), 1, pF2);
                        delete list;
                        }
                }
        while (FindNext(sr) == 0);
        }
FindClose(sr);
}
}
ошибка
Unable to create process: отказанно в доступе
почему такое может быть?

Запись в файл правильно я написал?
0
 Аватар для oxotnik
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
07.01.2009, 14:12
не легче:

C++
1
2
3
TStringList *list = new TStringList();
list->LoadFromFile(Dir+"\\" + sr.Name);
list->SaveToFile("C:\\tmp\2.txt");
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.01.2009, 14:12
Помогаю со студенческими работами здесь

Ярлыки браузеров ссылаются на файлы .bat
Ярлыки браузеров начали ссылаться на файлы с расширением .bat (C:\ProgramData\eAJrzsenu\CxuGVg0.bat), при этом после удаления папки с этими...

Ярлыки ссылаются на файлы с расширением bat
Антивирус выдает сообщения о подозрительных файлах.

Ярлыки браузеров ссылаются на файлы .bat
Ярлыки браузеров начали ссылаться на файлы с расширением .bat(C:\ProgramData\gFaveww\CxuGVg0.bat), при этом после удаления папки с этими...

Bat файлы ,ярлыки браузеров ссылаются на них
Добрый вечер!. При входа в программу google , открывается cmd (в ней что-то происходит ,ip адреса и ещё что-то , ссылки на bat файлы)...

Ярлыки браузеров ссылаются на файлы с расширением .bat
Ярлыки браузеров начали ссылаться на файлы с расширением .bat(C:\ProgramData\OyJxBEdcTyC\mFsqBq4.bat), при этом после удаления папки с...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Функция установки текстового статуса в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru