code_31686.txt
1. DirectoryChanges выдаёт все результаты, если количество тестовых дисковых операций не более 28.
2. Если их меньше 29, то выделяется исключение из общей картины - "file_9.tst$".
Только у меня так?
P.S.: HiAsm 4.185; FPC/D4; XP-SP3
------------ Дoбавленo в 22.10:
Сегодня опять то же самое..
Этот топик читают: Гость
Ответов: 3851
Рейтинг: 159
|
|||
карма: 0 |
| ||
файлы: 1 | code_31686.txt [1.9KB] [649] | ||
Голосовали: | foksov |
Разработчик
Ответов: 26153
Рейтинг: 2127
|
|||
Да, есть такое, но не понятно почему ???
Надо попробовать не создавать и удалять файлы в цикле, а сделать небольшую задержку перед каждой операцией и посмотреть, те не использовать For, а применить счетчик с условием |
|||
карма: 22 |
|
Ответов: 4630
Рейтинг: 749
|
|||
Это поведение зависит от длины имени файла. Как раз от перехода из 9 к 10 длина увеличивается. То же и даже больше можно увидеть при изменении длины имени в FormatStr. Выглядит, будто где-то при считывании/записывании строки неправильно определяется её длина и в конце остается мусорный символ.
------------ Дoбавленo в 14.04: MSDN-FILE_NOTIFY_INFORMATION писал(а):
FileName A variable-length field that contains the file name relative to the directory handle. The file name is in the Unicode character format and is not null-terminated. Получилось примерно так:
|
|||
карма: 26 |
| ||
Голосовали: | nesco |
Разработчик
Ответов: 26153
Рейтинг: 2127
|
|||
Netspirit писал(а): Получилось примерно так:Вроде нормально работает. Netspirit писал(а): У меня на Windows 2000 что в оригинале, что здесь при нажатии на 36 (а точнее, при некоторых длинах файлов) выдается только первое имя и пустое второе, дальше всё останавливается.У меня так же |
|||
карма: 22 |
|
Ответов: 4630
Рейтинг: 749
|
|||
Причина второго - похоже, недостаточный размер буфера, чтобы вместить все произошедшие изменения. Если уменьшить длину имени файла - 36 срабатывает.
|
|||
карма: 26 |
|
Разработчик
Ответов: 26153
Рейтинг: 2127
|
|||
Andrey, кстати, поток в схеме не нужен, внутри компонента уже и так создается поток на мониторинг
|
|||
карма: 22 |
|
Ответов: 3851
Рейтинг: 159
|
|||
nesco писал(а): сделать небольшую задержкуNetspirit писал(а): от длины имени файлаа при "штатных" скоростях - как оно обычно происходит в системе, он просто "не успевает": code_31711.txt .. |
|||
карма: 0 |
| ||
файлы: 2 | code_31710.txt [1.6KB] [567], code_31711.txt [1.8KB] [608] |
Разработчик
Ответов: 26153
Рейтинг: 2127
|
|||
Andrey писал(а): ага - проблема исчезлаЛучше обнови компонент и попробуй старую схему, но без потока |
|||
карма: 22 |
|
Ответов: 4630
Рейтинг: 749
|
|||
Никто не замечал рантайм-эррор с этой поправкой при нажатии на 35 (зависит, из какого каталога запускать программу)?
Нужно поэкспериментировать. Кажется функция WideCharLenToString требует длину строки в символах, а не в байтах и плюет на нули в конце. А раз так, может ещё раз поправить вот так:
|
|||
карма: 26 |
|
Разработчик
Ответов: 26153
Рейтинг: 2127
|
|||
Netspirit писал(а): А раз так, может ещё раз поправить вот так:Поправил |
|||
карма: 22 |
|
Ответов: 3851
Рейтинг: 159
|
|||
обновил DirectoryChanges: ~ в старой (code_31686.txt) схеме, но без потока "35" - работает, "36" - не работает, затыкается после первых двух строчек. ~ тоже самое в реальной жизни (code_31711.txt) - по прежнему "не успевает" |
|||
карма: 0 |
|
Разработчик
Ответов: 26153
Рейтинг: 2127
|
|||
Andrey писал(а): тоже самое в реальной жизни (code_31711.txt) - по прежнему "не успевает"У меня работает эта схема нормально с задержкой в 10 Andrey писал(а): "36" - не работает, затыкается после первых двух строчек.Написал же Netspirit предположение Netspirit писал(а): Причина второго - похоже, недостаточный размер буфера, чтобы вместить все произошедшие изменения. Если уменьшить длину имени файла - 36 срабатывает. |
|||
карма: 22 |
|
Ответов: 3851
Рейтинг: 159
|
|||
В code_31711.txt, у меня результат такой: code_31713.txt, если у кого другой, покажите плиз..
|
|||
карма: 0 |
| ||
файлы: 1 | code_31713.txt [2.8KB] [737] |
Разработчик
Ответов: 26153
Рейтинг: 2127
|
|||
Andrey писал(а): если у кого другой, покажите плизУ меня срабатывает вот так result_10101.png |
|||
карма: 22 |
| ||
файлы: 1 | result_10101.png [35.7KB] [555] |
Ответов: 4630
Рейтинг: 749
|
|||
Если конкретная схема не дает достаточно результатов, можно для себя увеличить буфер здесь:
FWatchBuf : array[0..64*1024] of Byte; |
|||
карма: 26 |
|