Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.08.16;
Скачать: CL | DM;

Вниз

Имя файла но короче.   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.017 c
15-1242118246
Германн
2009-05-12 12:50
2009.08.16
ООО Кредитэкспресс


6-1204874743
Михаил (Питер)
2008-03-07 10:25
2009.08.16
Широковещательный UDP запрос


15-1245181636
man from earth
2009-06-16 23:47
2009.08.16
а я например верю в лунатиков и в теории заговоров


2-1244993614
Gumz
2009-06-14 19:33
2009.08.16
Преобразование координат пикселей в градусы


15-1245097806
Юрий
2009-06-16 00:30
2009.08.16
С днем рождения ! 16 июня 2009 вторник