Форум: "Начинающим";
Текущий архив: 2008.03.02;
Скачать: [xml.tar.bz2];
ВнизTFileStream Найти похожие ветки
← →
Александр В. (2008-02-06 18:37) [0]Есть такой код, им считывается заголовок файла:
FS := TFileStream.Create(file, fmOpenRead);
try
if FS.Read(FSHeader, sizeof(TFSHeader)) = SizeOf(TFSHeader) then
begin
...
И такая загвоздка: на одной системе спокойно читается на одной, и отказывается работать на другой по ошибке "Stream read error". Возможности отладить на проблемной машине не могу.
В чем может быть проблема? В каком случае такая ошибка модет возникнкть?
← →
clickmaker © (2008-02-06 19:00) [1]
> на одной системе спокойно читается на одной, и отказывается
> работать на другой по ошибке "Stream read error
один и тот же файл?
← →
Александр В. (2008-02-06 19:23) [2]Вообще я сейчас уже точно не вспомню, какие в ходе экспериментов были файлы. (сегодня нет возможности повторить)
Возможно было такое, что создавали файл на одной машине (на которой все хорошо), а открывали на другой и вот там случалась ошибка.
← →
Александр В. (2008-02-06 21:43) [3]Совсем нет предположений?
В каком случае такая ошибка может быть?
← →
Джо © (2008-02-06 21:44) [4]> [3] Александр В. (06.02.08 21:43)
> Совсем нет предположений?
>
> В каком случае такая ошибка может быть?
Например, файл могли погрызть мыши.
← →
Джо © (2008-02-06 21:48) [5]Прошерстите файл Classes.pas на предмет вхождения ресурсной строки SReadError и увидите места, где потенциально это может случиться. И вернитесь к мышам.
← →
Slym © (2008-02-07 06:05) [6]sizeof(TFSHeader) - на обоих машинах одинаковый? (компилитесь в одном месте?)
← →
Александр В. (2008-02-07 09:23) [7]
> (компилитесь в одном месте?)
Компилируется все на одной системе, на ней все работает, на двух других ситуация выше. На всех компьютерах запускается один и тот же exe.
Файл создается на той же системе на которой и открывается (ну или отказывается открываться).
← →
Palladin © (2008-02-07 11:00) [8]а попросить созданные файлики прислать тебе и глазами посмотреть, что же там?
← →
antonn (work) (2008-02-07 11:40) [9]что то я не пому конструкции
if FS.Read(FSHeader, sizeof(TFSHeader)) = SizeOf(TFSHeader)
не проще сразу проверить, чтобы FS был больше sizeof?
← →
Palladin © (2008-02-07 11:42) [10]а чего тут не понятного? считали и проверили сколько считали...
← →
Palladin © (2008-02-07 11:43) [11]ты учитывай что файл может быть и в десятки раз больше SizeOf, но указатель может стоять в конце файла
← →
antonn (work) (2008-02-07 11:50) [12]а если файл меньше, чем sizeof() то будет AV?
← →
Palladin © (2008-02-07 11:53) [13]нет
← →
Palladin © (2008-02-07 11:54) [14]функция TStream.Read возвращает количество фактически прочитанных байт, ничего не прочтет - ноль и вернет
← →
antonn (work) (2008-02-07 11:58) [15]забыл уже:) просто сам юзал только readbuffer :)
← →
Anatoly Podgoretsky © (2008-02-07 12:07) [16]
> В каком случае такая ошибка может быть?
В случае отсутствия прав
← →
ANB (2008-02-07 12:13) [17]
> В случае отсутствия прав
Из-за прав файл бы даже не открылся.
← →
Александр В. (2008-02-07 20:55) [18]Посмотрел я файл созданный на проблемной машине - и этот заголовок нормально читается без ошибки в системе на которой компилировали изначально.
На проблемной машине, у пользователя - не права администратора. Может действительно в правах Windows дело?
Есть идеи ещё, что делать?
← →
Anatoly Podgoretsky © (2008-02-07 22:18) [19]Если программа не является системной утилитой для администратора, то она должна быть разработана так, что бы могла работать из под самого бесправного пользователя, а это означает, что она должна писать только туда, куда разрешено пользователю и не куда больше.
← →
Александр В. (2008-02-08 12:50) [20]Так заголовок в файл же записывается спокойно. Без ошибок. А вот при открытии происходит такая ошибка.
Или такое может быть при правах не администратора?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.03.02;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.039 c