Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.03.02;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.018 c
2-1201770278
S.T.
2008-01-31 12:04
2008.03.02
Возможно в одном запросе заполнить три DBComboBox-а?


2-1202320069
Res
2008-02-06 20:47
2008.03.02
Ошибка в коде


2-1201861596
Silver...
2008-02-01 13:26
2008.03.02
как прочесть фаил такой структуры


15-1201527834
Kerk
2008-01-28 16:43
2008.03.02
50 работодателей мечты для молодого специалиста


3-1192105820
Dush
2007-10-11 16:30
2008.03.02
условие отображения данных в DBGridEh