Форум: "Начинающим";
Текущий архив: 2009.08.16;
Скачать: [xml.tar.bz2];
ВнизИмя файла но короче. Найти похожие ветки
← →
OlegNik © (2009-06-22 13:36) [0]Есть вопрос есть большой список файлов, с которыми надо работать. Пользовательская программа через общую память, создает список указывая полный путь файлов.
(образно говоря заполняет структуру
TRec = packed record
Action : TAction;
FullName : TString[97];
end;
)
Но здесь есть две беды
если полное имя файла больше 97 байт
слишком здоровый объем приходится выделять под массив.
А теперь вопрос есть ли в винде унекальные номера (файловой таблице) файлов и функции по которым можно их получить?
FullNameToNum(S: String): Integer; DWord; или какая нибуть структурка. Ну обратная ей
← →
Palladin © (2009-06-22 13:51) [1]
> есть ли в винде унекальные номера
их нет... даже больше... слова "унекальные" тоже нет..
← →
Palladin © (2009-06-22 13:52) [2]кто придумал эту структуру? по идее он должен быть уволен...
← →
Anatoly Podgoretsky © (2009-06-22 13:56) [3]> Palladin (22.06.2009 13:51:01) [1]
И TString тоже не наблюдается
← →
Юрий Зотов © (2009-06-22 14:09) [4]1. Заводим список каталогов (TStringList с DupIgnore).
2.
type
TRec = packed record
Action: TAction;
DirIndex: integer; // Индекс в списке каталогов
FileName: string[...]; // Только имя файла, без каталога
end;
Экономия памяти получается за счет списка каталогов. То есть, нет дублирования хранящейся информации.
← →
капут (2009-06-22 14:22) [5]Все стринги в поток и 7зипом их, тогда будут мало места занимать. =)
← →
OlegNik © (2009-06-22 14:43) [6]Мне не требуются тупые коментарии есть вопрос нужен ответ.
И вероятнее пионеры не знают есть ли такой механизм или нет там зачем писать.
А капут я бы Power-ом пожал.
Palladin А что не нравится есть файл необходимо совершить над ним действие. Palladin Ваше предложение в части организации структуры.
> Экономия памяти получается за счет списка каталогов. То
> есть, нет дублирования хранящейся информации.
Я не понял где я что то дублирую
array of TRec
← →
Palladin © (2009-06-22 14:47) [7]
> А что не нравится есть файл необходимо совершить над ним
> действие.
это вопрос или утверждение? или что вообще?
> Ваше предложение в части организации структуры.TRec = packed record
Action : TAction;
FullName : String;
end;
> Мне не требуются тупые коментарии
Это не тупые комментарии, это комментарии к тупости.
← →
Игорь Шевченко © (2009-06-22 14:54) [8]
> Ваше предложение в части организации структуры
RTFM: ReadDirectoryChangesW
type
FILE_NOTIFY_INFORMATION = packed record
NextEntryOffset: DWORD;
Action: DWORD;
FileNameLength: DWORD;
FileName: array[0..0] of WideChar;
end;
PFILE_NOTIFY_INFORMATION = ^FILE_NOTIFY_INFORMATION;
← →
OlegNik © (2009-06-22 15:11) [9]Делаю пример для очень умных ребяток.
"C:\мама мыла раму\дедка съел репку\мышка хвостом\унекальные исправить на уникальные\Pasp0001.dat";
......................
......................
"C:\мама мыла раму\дедка съел репку\мышка хвостом\унекальные исправить на уникальные\PaspN-1.dat";
число N может быть большим. При этом общаю память по историческим причинам = 40kb
образно говоря зная NTFS хотя бы на уровне Palladinа можно предположить
что всеже есть уникальная нумерация файлов в таблице NTFS. ну и вопрос
стоял и стоит можно ли заменить "C:\мама мыла раму\дедка съел репку\мышка хвостом\унекальные исправить на уникальные\Pasp0001.dat";
что то более компактное.
← →
Игорь Шевченко © (2009-06-22 15:12) [10]
> можно ли заменить
Ты че, разрешения спрашиваешь ? Разрешаем.
← →
Плохиш © (2009-06-22 15:13) [11]В [4] уже сказали.
← →
Palladin © (2009-06-22 15:16) [12])))
← →
Cobalt © (2009-06-22 15:30) [13]> OlegNik © (22.06.09 13:36)
ЗамениFullName : TString[97];
наFullName : String;
тогда проблема длинных имен файлов исчезнет сама собой.
← →
Сергей М. © (2009-06-22 15:30) [14]
> Я не понял где я что то дублирую
А это что
> "C:\мама мыла раму\дедка съел репку\мышка хвостом\унекальные исправить на уникальные\Pasp0001.dat";
> "C:\мама мыла раму\дедка съел репку\мышка хвостом\унекальные исправить на уникальные\PaspN-1.dat";
?
Два раза фигурирует одно и тоже - и это, по-твоему, не дублирование ?)
← →
Cobalt © (2009-06-22 15:31) [15]P.S. Указывай тогда все ограничения:
версия MSDos, версия Pascal и т.р.
← →
капут (2009-06-22 15:31) [16]
> OlegNik © (22.06.09 14:43) [6]
> Я не понял где я что то дублирую
"C:\мама мыла раму\дедка съел репку\мышка хвостом\унекальные исправить на уникальные\Pasp0001.dat";
......................
......................
"C:\мама мыла раму\дедка съел репку\мышка хвостом\унекальные исправить на уникальные\PaspN-1.dat";
Дублирование "C:\мама мыла раму\дедка съел репку\мышка хвостом\унекальные исправить на уникальные\"
Различие "Pasp0001.dat"
← →
Palladin © (2009-06-22 15:32) [17]просто сплошной унекум какой то ))
← →
Sapersky (2009-06-22 15:41) [18]У открытого файла есть Handle, который по сути 32-битный номер. Handle"ы эти, насколько помню, уникальны только на уровне процесса, но можно использовать DuplicateHandle для "конвертации".
Впрочем, постоянно держать все файлы открытыми - вряд ли хорошее решение. Лучше использовать то, что здесь предложили - [4], [5] (можно и без сжатия), [8].
← →
Юрий Зотов © (2009-06-22 15:48) [19]> OlegNik © (22.06.09 14:43) [6]
Цитата 1:
Мне не требуются тупые коментарии
Цитата 2: Я не понял где я что то дублирую
Цитата 3:
Делаю пример для очень умных ребяток.
"C:\мама мыла раму\дедка съел репку\мышка хвостом\унекальные исправить на уникальные\Pasp0001.dat";
......................
......................
"C:\мама мыла раму\дедка съел репку\мышка хвостом\унекальные исправить на уникальные\PaspN-1.dat";
число N может быть большим.
И резюме.
Как выяснилось давным-давно, еще в фильме "Повиг разведчика", диагноз "болван" Штюбингу был поставлен абсолютно верно. Потому что бедняга Штюбинг, сам написав 90%-ный дубликат, так и не понял, где же и что он дублирует.
Но почему-то даже после этого болваном Штюбинг счел не себя, а всех остальных. Тем самым показав, что болван двойной, да к тому же еще и хам.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.08.16;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.034 c