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

Вниз

FindFirst-FindNext   Найти похожие ветки 

 
Anatoly P   (2003-06-09 19:56) [0]

Есть ли альтернатива FindFirst-FindNext-у, а то замечена некорректная работа на NTFS под WXP?


 
clickmaker   (2003-06-09 19:59) [1]

Нет. А в чем некорректность ?


 
Anatoly P   (2003-06-09 20:04) [2]

Возникает при работе с каталогом в котором лежит EXE-шник, лично сталкивался на двух компах, пока не понял в чем проблема


 
TCrash   (2003-06-09 20:09) [3]

А при работе с другими каталогами все нормально ?
и в каком месте возникает пробдема?


 
Anatoly P   (2003-06-09 20:11) [4]

Проблема только при работе в каталоге EXE-шника


 
TCrash   (2003-06-09 20:36) [5]

Что за проблема? при сканировании атрибутов какого файла?
Что-то я подозреваю, что только при чтении атрибутов exe-шника или dll-ок


 
panov   (2003-06-09 20:45) [6]

FindFirstFile
FindNextFile


 
Mystic   (2003-06-09 20:51) [7]

Привели код, который работает ошибочно


 
Anatoly P   (2003-06-10 12:50) [8]

Код тотже что в справке, только в Edit1.text путь, где лежит Exe-шник


 
Юрий Федоров   (2003-06-10 12:58) [9]

Альтернатива - IShellFolder

Так мы и не узнаем, в чем заключается ошибка при FindFirst ??



 
Palladin   (2003-06-10 13:05) [10]

А зачем нам знать?
Anatoly P признаный авторитет в области разработки приложений с максимальной плотностью ошибок, ему даже не нужно эту ошибку указывать, она точно есть, а вы дяденьки ищите думайте.


 
Домарощинер   (2003-06-10 13:15) [11]

Довольно интересный подход к выбору ника.
Сразу напрашивается ассоциация - Anatoly P</p>odgoretsky.
Но насколько мне известны привычки последнего, ему не свойственно искать ответы подобным образом.

С Уважением.


 
Anatoly P   (2003-06-10 13:39) [12]

что-то Вы тут мутите, а с этим я сталкивался 2 раза.


 
Игорь Шевченко   (2003-06-10 13:43) [13]

Anatoly P (10.06.03 13:39)

Код в студию!


 
Anatoly P   (2003-06-10 13:44) [14]

sss:=ExtractFileDir(Application.ExeName)+"\*.mye";
if findfirst(sss,FileAttrs, sr) = 0 then
repeat
if ((sr.Attr and FileAttrs) = sr.Attr) then
ComboBox1.Items.Add(sr.Name);
until FindNext(sr) <> 0;
FindClose(sr);

Вот код , до строки ComboBox1.Items.Add(sr.Name); не доходит


 
Anatoly P   (2003-06-10 13:45) [15]

Да еще, при переносе на диск c не NTFS, все работает как положено


 
Юрий Федоров   (2003-06-10 13:48) [16]

а FileAttrs проинициализировать не забыл ?


 
Игорь Шевченко   (2003-06-10 14:02) [17]

Anatoly P (10.06.03 13:44)

Мало кода


 
panov   (2003-06-10 14:02) [18]

Так какая ошибка-то происходит?

Это что - засекреченная информация или насмешка над всеми?


 
NailMan   (2003-06-10 14:12) [19]

if ((sr.Attr and FileAttrs) = sr.Attr) then
я всю сознательную программерскую жизнь не не видел чтобы сравнивали переменную модифицированную константой(опрератором and) c самой переменной. Обычно делают так:

if ((sr.Attr and FileAttrs) = FileAttrs) then




 
Palladin   (2003-06-10 14:17) [20]


> NailMan © (10.06.03 14:12)

зря ты так...


 
NailMan   (2003-06-10 14:40) [21]

To -> Palladin ©
Любите мучать? :-)


 
NailMan   (2003-06-10 14:43) [22]

Но мне тоже интересно в чем заключалась "некорректная работа на NTFS под WXP" и как этот код работал на FAT32 и под win9x.


 
sniknik   (2003-06-10 15:02) [23]

Anatoly P (10.06.03 13:44)
sss:=ExtractFileDir(Application.ExeName)+"\*.mye";
замени на
sss:=ExtractFileDir(Application.ExeName)+"*.mye";
и проверь
p.s.
"путь\\*.mye" не всегда находит, "путь\*.mye" всегда.


 
Palladin   (2003-06-10 16:00) [24]


> sniknik © (10.06.03 15:02)

ExtractFileDir возвращает без \
ExtractFilePath возвращает с \

> NailMan © (10.06.03 14:12)

условие наисано корректно, FileAttr скорее всего не инициализирован или у него просто нет прав на эту директорию...


 
Anatoly P   (2003-06-10 16:06) [25]

Повторяю:

Проблема только при работе в каталоге EXE-шника

Да еще, при переносе на диск c не NTFS, все работает как положено

И никаких насмешек!


 
Anatoly P   (2003-06-10 16:08) [26]

Не выполняется строка: ComboBox1.Items.Add(sr.Name);


 
Anatoly P   (2003-06-10 16:10) [27]

> Palladin © (10.06.03 16:00) А как эти права раздобыть? Скорее всего проблема в этом


 
Palladin   (2003-06-10 16:13) [28]

в свойствах папки смотри Permissions и
наконец покажи код выше строки
sss:=ExtractFileDir(Application.ExeName)+"\*.mye";
где у тебя FileAttr инициализируется!!



 
Anatoly P   (2003-06-10 16:15) [29]

ComboBox1.Clear;
FileAttrs:=faAnyFile;

Вот оно! И все


 
Игорь Шевченко   (2003-06-10 16:18) [30]

Anatoly P (10.06.03 16:15)

Дружище, мой тебе совет: возьми в руки отладчик, посмотри, что происходит при работе твоей программы в разных случаях и нам потом расскажи. Интересно ведь:))

FindFirst/FindNext отлично работают в WinXP в ЛЮБОМ каталоге, будь то каталог exe"шника или другой. Доказано Zanussi.



 
Юрий Федоров   (2003-06-10 16:21) [31]

Обрати наконец внимание на
NailMan © (10.06.03 14:12)


 
Palladin   (2003-06-10 16:22) [32]

тогда ничего сказать немогу кроме доступа, но доступ есть, я в этом уверен... трассируй... может ты директории перепутал...
чудес не бывает


 
Anatoly P   (2003-06-10 16:24) [33]

У меня дома XP - и никаких проблем, у клиента XP и когда программа лежит на диске с FAT - никаких проблем, а на NTFS, то о чем говорил
> Игорь Шевченко © (10.06.03 16:18) - Смотрел - обходит злополучную строку.

ЗЫ: В принципе для меня это не проблема - ведь есть и раздел с фат, но все же. Когда-нибудь столкнетесь - вспомните!


 
Anatoly P   (2003-06-10 16:26) [34]

> Palladin © (10.06.03 16:22)
sss:=ExtractFileDir(Application.ExeName)+"\*.mye";
Хоть убей, не перепутал


 
handra   (2003-06-10 16:31) [35]

Anatoly P (10.06.03 16:15)
ComboBox1.Clear;
FileAttrs:=faAnyFile;

Вот оно! И все

Таким образом ищутся папки (они же метки тома) с аттрибутами ReadOnly+System+Hidden, имеющие имя с маской "*.mye"! Вероятность их существования равна нулю ;)


 
handra   (2003-06-10 16:32) [36]

хотя нет, погорячился...


 
Мое имя (клоны все равно суксь)   (2003-06-10 16:32) [37]


> Palladin © (10.06.03 13:05)

;))))))))))

> NailMan © (10.06.03 14:12)


> я всю сознательную программерскую жизнь

значит на самом деле то была матрица...)))))))
что плохого в выражении if (i*1=i) ? ;-)


 
Игорь Шевченко   (2003-06-10 16:34) [38]

Anatoly P (10.06.03 16:24)

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


 
Юрий Федоров   (2003-06-10 16:42) [39]

> NailMan © (10.06.03 14:12)
Блин, запутал... И я повелся :-)


 
Sandman25   (2003-06-10 16:44) [40]

По-моему, единственное объяснение - не выполняется условие if.

Constant Value Description
faReadOnly $00000001 Read-only files
faHidden $00000002 Hidden files
faSysFile $00000004 System files
faVolumeID $00000008 Volume ID files
faDirectory $00000010 Directory files
faArchive $00000020 Archive files
faAnyFile $0000003F Any file

То есть в NTFS у найденного файла установлены не только младшие 6 бит установлены, но еще установлены какие-то старшие биты. И естественно при проверке $010000xx and $3f мы получаем $000000xx, что не равно исходному $010000xx.
Уберите проверку - она все равно не нужна.



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

Форум: "Потрепаться";
Текущий архив: 2003.06.30;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.53 MB
Время: 0.008 c
1-97700
marat_ch
2003-06-18 02:11
2003.06.30
Thread


14-97803
Anatoly P
2003-06-09 19:56
2003.06.30
FindFirst-FindNext


1-97724
marat_ch
2003-06-18 14:27
2003.06.30
TThread


14-97889
Silentium!
2003-06-12 14:01
2003.06.30
SystemTray


3-97471
Ler
2003-06-04 12:14
2003.06.30
Глюк ?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский