Форум: "Потрепаться";
Текущий архив: 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