Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1201602823
БарЛог
2008-01-29 13:33
2008.03.02
Проблема с железом


2-1202463809
Первокласник Вася
2008-02-08 12:43
2008.03.02
TreeNode


8-1175084985
ChinG
2007-03-28 16:29
2008.03.02
Сохранение Canvas


2-1202116130
trubin
2008-02-04 12:08
2008.03.02
Floppy and USB


2-1202206388
@WooF
2008-02-05 13:13
2008.03.02
Sy576





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский