Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2013.04.28;
Скачать: [xml.tar.bz2];

Вниз

Сравнить два пути к файлу.   Найти похожие ветки 

 
Дмитрий С ©   (2012-10-15 13:38) [0]

Есть FileName1, FileName2:string. Как достоверно определить указывают они на один и тот же файл или нет?
спасибо


 
brother ©   (2012-10-15 13:45) [1]

ээ, применить ansiuppercase для каждого и сравнить?


 
Inovet ©   (2012-10-15 13:45) [2]

ExpandFileName


 
Inovet ©   (2012-10-15 13:55) [3]

> [2] Inovet ©   (15.10.12 13:45)

и
AnsiCompareFileName


 
Jeer ©   (2012-10-15 14:11) [4]


> Как достоверно определить указывают они на один и тот же
> файл или нет?
> спасибо


Сравнить размер, при совпадении - контрольную сумму ( CRC )


 
Дмитрий С ©   (2012-10-15 14:15) [5]


> Jeer ©   (15.10.12 14:11) [4]

А может адрес первого блока? :)


 
Inovet ©   (2012-10-15 14:29) [6]

> [4] Jeer ©   (15.10.12 14:11)

Файлы при этом могут быть разные.


 
RWolf ©   (2012-10-15 14:32) [7]

GetFinalPathNameByHandle() ?


 
Jeer ©   (2012-10-15 16:06) [8]


> А может адрес первого блока? :)


Я всего лишь угадываю Ваши желания :)

Размер файла, уже вычисленная сущность.
Имя файла - тоже.
Дальше остается сравнение по содержимому.
Как - есть много способов.


 
Jeer ©   (2012-10-15 16:07) [9]


> Файлы при этом могут быть разные.


Что такое "разные файлы" ? Название, содержимое, то-се..
Тогда и решение будет конкретным или, наоборот, расплывчатым :)


 
Ega23 ©   (2012-10-15 16:14) [10]


> Что такое "разные файлы" ? Название, содержимое, то-се..
> Тогда и решение будет конкретным или, наоборот, расплывчатым


cmd subst x: d:\temp

Файл d:\temp\1.txt и файл x:\1.txt - суть один и тот же файл.
Вот что-то типа этого и надо сравнить, если я правильно понял вопрос.


 
Jeer ©   (2012-10-15 16:29) [11]

Да я тоже гадаю :)


 
Дмитрий С ©   (2012-10-15 17:02) [12]


> GetFinalPathNameByHandle() ?

То что надо, только смущает, что Vista minimum


 
Dmitriy   (2012-10-15 17:38) [13]


> То что надо, только смущает, что Vista minimum


GetFileInformationByHandle ?

в частности :

nFileIndexHigh The high-order part of a unique identifier that is associated with a file. For more information, see nFileIndexLow. nFileIndexLow
The low-order part of a unique identifier that is associated with a file.

The identifier (low and high parts) and the volume serial number uniquely identify a file on a single computer. To determine whether two open handles represent the same file, combine the identifier and the volume serial number for each file and compare them.


Minimum supported client Windows XP


 
Rouse_ ©   (2012-10-15 19:31) [14]


> Дмитрий С ©   (15.10.12 17:02) [12]
> То что надо, только смущает, что Vista minimum

Ну а в чем проблема то? Открыл хэндл, вызвал NtQueryObject с классом #define ObjectNameInformation  1 , на руки получишь буфер OBJECT_NAME_INFORMATION.

 TUNICODE_STRING = packed record
   Length : WORD;
   MaximumLength : WORD;
   Buffer : array [0..MAX_PATH - 1] of WideChar;
 end;

 POBJECT_NAME_INFORMATION = ^TOBJECT_NAME_INFORMATION;
 TOBJECT_NAME_INFORMATION = packed record
   Name : TUNICODE_STRING;
 end;


Можешь сразу оба буфера сравнивать, ну или приводить его к реальному пути, как это делает GetFinalPathNameByHandle.


 
QAZ2   (2012-10-15 21:10) [15]

а как насчет хард\симлинков и субституты?


 
Rouse_ ©   (2012-10-15 21:21) [16]


> QAZ2   (15.10.12 21:10) [15]
> а как насчет хард\симлинков и субституты?

А что с ними не так?


 
QAZ2   (2012-10-15 21:33) [17]

[14] тоже покажет что это один и тотже файл?


 
Rouse_ ©   (2012-10-15 21:40) [18]


> QAZ2   (15.10.12 21:33) [17]
> [14] тоже покажет что это один и тотже файл?

Ну а куда он денется то?


 
QAZ2   (2012-10-15 21:44) [19]

как куда один файл c:\qqq.txt другой d:\qaz.txt оба линки ,как определить что это один файл?


 
Rouse_ ©   (2012-10-15 21:49) [20]


> QAZ2   (15.10.12 21:44) [19]
> как куда один файл c:\qqq.txt другой d:\qaz.txt оба линки
> ,как определить что это один файл?

омг, ты вообще разбирался как они работают и что за функцию я тебе привел?
Для начала сделай небольшой RTFM потом и спрашивай какой конкретно пункт не понятен...


 
QAZ2   (2012-10-15 22:02) [21]

есть мнение что та функция непоможет :)


 
Rouse_ ©   (2012-10-15 22:11) [22]


> QAZ2   (15.10.12 22:02) [21]
> есть мнение что та функция непоможет :)

Ну ты не стесняйся - пиши код, раз мнение есть :)


 
QAZ2   (2012-10-15 22:14) [23]

у меня в дельфе нет таких функций :(
напиши, буть другом :)


 
Rouse_ ©   (2012-10-15 22:16) [24]


> QAZ2   (15.10.12 22:14) [23]
> у меня в дельфе нет таких функций :(

Печально...


 
kilkennycat ©   (2012-10-16 01:26) [25]


> AnsiCompareFileName

а если файлик на сетевом диске, где никс?


 
Германн ©   (2012-10-16 02:40) [26]

Вот опять "дурацкий" вопрос вместо описания задачи.


 
Inovet ©   (2012-10-16 07:56) [27]

> [25] kilkennycat ©   (16.10.12 01:26)
> а если файлик на сетевом диске, где никс?

А не пофиг из-под Вин?


 
Jeer ©   (2012-10-16 09:52) [28]

Модифицировать какой-либо аттрибут у одного файла и сравнить с другим :)


 
kilkennycat ©   (2012-10-16 11:01) [29]


> Inovet ©   (16.10.12 07:56) [27]

конечно пофиг. просто два одинаковоназванныходинаковопутевых файла, а так - пофиг.


 
QAZ2   (2012-10-16 12:42) [30]


> Для начала сделай небольшой RTFM

и сказал википед про hardlink
"Все ссылки одного файла равноправны и неотличимы друг от друга — нельзя сказать, что файл существует в таком-то каталоге, а в других местах есть лишь их копии"
вот и непонятно как ты определиш что это один файл через GetFinalPathNameByHandle


 
Медвежонок Пятачок ©   (2012-10-16 13:22) [31]

ээ, применить ansiuppercase для каждого и сравнить?


это особенно круто поможет, если это файлы Test.txt и test.txt на линупсовой шаре в одной и той же папке.


 
brother ©   (2012-10-16 13:23) [32]

> на линупсовой шаре

без комментариев!


 
Медвежонок Пятачок ©   (2012-10-16 13:28) [33]

экспандфайлнейм обоим и сравнение регистрозависимое.
плюс файлэкзист обоим (после экспанда) плюс анализ пути до папки.

только так.


 
QAZ4   (2012-10-16 13:35) [34]


> Медвежонок Пятачок ©   (16.10.12 13:28) [33]

а как насчет хард\симлинков и субституты?


 
Медвежонок Пятачок ©   (2012-10-16 13:42) [35]

насчет их все хорошо.


 
QAZ4   (2012-10-16 14:20) [36]

какже хорошо если пути разные?


 
Медвежонок Пятачок ©   (2012-10-16 14:23) [37]

У файлов разные?
Или у файлов-линков разные?
получи физические имена и сравнивай.
и так же хорошо и будет.


 
QAZ4   (2012-10-16 14:39) [38]


> Или у файлов-линков разные?

ага, а файл один и тотже

> получи физические имена и сравнивай

эт какие такие физические


 
Медвежонок Пятачок ©   (2012-10-16 14:57) [39]

это не химические


 
Rouse_ ©   (2012-10-16 14:58) [40]


> QAZ2   (16.10.12 12:42) [30]
> и сказал википед про hardlink

Ну ты нашел авторитетный источник, еще бы в лурке поискал :)
Я ж сказал - напиши код и проверь, че катать с пустого в порожнее?



Страницы: 1 2 вся ветка

Форум: "Начинающим";
Текущий архив: 2013.04.28;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.003 c
15-1356642898
ННН
2012-12-28 01:14
2013.04.28
Подскажите программу для перехвата DEBUG-сообщений.


15-1356763220
slvcomputer
2012-12-29 10:40
2013.04.28
Требуется ведущий Delphi-разработчик (з/п 80-120 т.р.)


15-1356257259
Дмитрий С
2012-12-23 14:07
2013.04.28
Название поля первичного ключа.


3-1289205363
VikOss
2010-11-08 11:36
2013.04.28
ClientDataSet


15-1356769502
Undertacker
2012-12-29 12:25
2013.04.28
Как прочитать сохраненные файлы Оперы-мини?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский