blockquote>
id
помечаемого элемента, связанного с формой, в том же документе, что и элемент. Первый элемент в документе с идентификатором, соответствующим значению атрибута
for
, представляет собой помеченный элемент управления для этого элемента метки, если он является помечаемым элементом. Если это не помечаемо, то атрибутfor
не имеет никакого эффекта. Если есть другие элементы, которые также соответствуют значению идентификатора, позже в документе они не рассматриваются.
.form__group { position: relative; padding: 15px 0 0; margin-top: 10px; } .form__field { font-family: inherit; width: 100%; border: 0; border-bottom: 1px solid #d2d2d2; outline: 0; font-size: 16px; color: #212121; padding: 7px 0; background: transparent; transition: border-color 0.2s; } .form__field::-webkit-input-placeholder { color: transparent; } .form__field:-ms-input-placeholder { color: transparent; } .form__field::-ms-input-placeholder { color: transparent; } .form__field::placeholder { color: transparent; } .form__field:placeholder-shown~.form__label { font-size: 16px; cursor: text; top: 20px; } .span-header, .form__field:focus~.form__label { position: absolute; top: 0; display: block; transition: 0.2s; font-size: 12px; color: #9b9b9b; } .form__field:focus~.form__label { color: #009788; } .form__field:focus { padding-bottom: 6px; border-bottom: 2px solid #009788; }
Я не вижу что не так с автоматической повторной попыткой. Я не вижу, что можно сделать что-либо еще. Если некоторый другой процесс считает файл, то Ваш Добавлять/Переписывать перестанет работать. И так как файл является журналом, существует хороший шанс, что что-то, такое как средство просмотра журнала или текстовый редактор, будет читать его в момент, Вы пытаетесь открыть его.
Попытайтесь открыться, файл несколько раз с промежутком задержки пытается прежде, чем перестать работать окончательно. Вы могли использовать экспоненциальную задержку, если бы Вы хотели быть необычными.
Помимо антивируса это может также индексировать программное обеспечение или программное обеспечение управления файлами, как Google Desktop. Однако настоящая проблема здесь, что сообщение об ошибке не помогает Вам решить проблему. Я предлагаю, чтобы Вы переписали код для использования TFileStream, вместо этого, просто для улучшения сообщений об ошибках.
Необходимо обычно помещать открытие файла перед попыткой попытки.. наконец:
if fileexists then
append(..)
else
rewrite(..);
try
// do something with the file
finally
CloseFile(..);
end;
и
AssignFile(lFile, AFileName);
Rewrite(lFile);
CloseFile(lFile);
(попытка наконец не имеет никакого смысла в последнем случае),
В других отношениях заключительный файл мог бы перестать работать, потому что он не мог быть открыт, и это замаскирует реальную ошибку.
Но я не думаю, что это - проблема здесь.
Вы могли смотреть на случайную ошибку от чего-то еще скомпилированного в состоянии $I-?
Действительно ли Ваше приложение является многопоточным? У меня когда-то была та же проблема как это, когда регистрирующийся код назвали одновременно от обоих потоков. Раз так используйте TCriticalSection для управления доступом.
Ваш пример кода должен работать в целом, те ошибки, кажется, ошибки доступа. Для обнаружения случая этого Вы могли попытаться отключить TrendMicro и посмотреть, если проблема сохраняется.
Если я правильно понимаю, присваивание файла не выполняется. Вы уверены, что FileChecks во время вызова AssignFile? Это довольно необычно, но вы можете проверить это, используя:
{$IFOPT I-}
if IOResult <> 0 then
begin
// Error handling
end;
{$ENDIF}
Я согласен на использование TFileStream (или чего-либо еще, кроме функции доступа к файлам низкого уровня). Это критично для производительности и может стать серьезной проблемой при переходе на Unicode.