Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.49 MB
Время: 0.015 c
2-1201900613
HaJik
2008-02-02 00:16
2008.03.02
Как мне "прикрутить" на событие функцию, которая также бы храни


3-1192536774
Lamer666
2007-10-16 16:12
2008.03.02
ADOConnection плохо видит MsSql


15-1198377007
Dummy
2007-12-23 05:30
2008.03.02
Стандартный шрифт фиксированной ширины?


15-1201332607
Sergey Masloff
2008-01-26 10:30
2008.03.02
Еще про WinXP но не оффтопик


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




   Наверх