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

Вниз

I/O error 998   Найти похожие ветки 

 
DeScriptor ©   (2003-09-08 01:44) [0]

Люди!
Может, кто знает, где найти описание сабжа?! В хелпе по дельфям таковский номер еррора не значится!!! А он имеет место быть.
Что делать, как понять, чего ему нада? Как с этим бороться?
Заранее THNX!!!

p.S. Я обходил это конструкцией {$I-} blah, blah, blah {$I+}, но все равно - нафига такая ошибка?


 
Ihor Osov'yak ©   (2003-09-08 01:50) [1]

Случаем не это
//
// MessageId: ERROR_NOACCESS
//
// MessageText:
//
// Invalid access to memory location.
//
#define ERROR_NOACCESS 998L

см. winerror.h c. ddk


 
DeScriptor ©   (2003-09-08 17:19) [2]

Нет. Моя ошиба вываливается при работе с файлами...


 
ZEE ©   (2003-09-08 17:22) [3]

I/O лучше обходить такой конструкцией
try ... finally ... end;


 
ZEE ©   (2003-09-08 17:23) [4]

пардон
I/O error лучше обходить ... и т.д. :)


 
han_malign ©   (2003-09-08 17:33) [5]

>Как с этим бороться?

ERROR_NOACCESS
Invalid access to memory location.
- не залезать в область кода, при записи данных в память - нормально буфура выделять и за границами следить...


 
Dmk ©   (2003-09-08 20:54) [6]

http://www.gregorybraun.com/MSWinErr.html


 
Anatoly Podgoretsky ©   (2003-09-08 21:02) [7]

ShowMessage(SysErrorMessage(998));


 
DeScriptor ©   (2003-09-11 19:58) [8]

> - не залезать в область кода, при записи данных в память -
> нормально буфура выделять и за границами следить...

А нельзя ли с этого места поподробнее? Как это, "не залезать в область кода"? Как узнать где она, чтобы в нее не врубиться? Вот участок кода. Строка, на которой возникает ошибка, помечена жирным:

procedure SearchHeaders();
var CurOffset:longword;
i,j,OffCount:word;
CurHeader:string;
TempFile:file;

begin
MainWin.ProgBarCurrent.Max:=ResFile.FullSize;
OffCount:=0;
CurOffset:=0;
while ResFile.ReadBlock(CurOffset)=FSuccess do begin
for i:=0 to High(ResFile.DataBlock) do begin
CurHeader:="";
if i<= 65532 then CurHeader:=chr(ResFile.DataBlock[i])+chr(ResFile.DataBlock[i+1])+chr(ResFile.DataBlock[i+2])+chr(ResFile.DataBlock[i+3]) ;
for j:=0 to (MainWin.VFormatsList.Count-1) do begin
if MainWin.VFormatsList.Selected[j] and (FormatsList[j]=CurHeader) then begin
OffCount:=OffCount+1;
SetLength(OffsetsList,OffCount);
OffsetsList[Offcount-1]:=i+CurOffset;
end;
end;
end;
CurOffset:=CurOffset+65530;
MainWin.ProgBarCurrent.Position:=CurOffset;
MainWin.ProgBarCurrent.Repaint;
end;
OffCount:=OffCount+1;
SetLength(OffsetsList,OffCount);
OffsetsList[Offcount-1]:=ResFile.FullSize;
assignfile(TempFile,"testfile.off");
{$I-}
Rewrite(TempFile,4);
{$I+}
BlockWrite(TempFile,Pointer(OffsetsList)^,length(OffsetsList));
CloseFile(TempFile);
end;


Пожалуйста, объясните, если кто может, в чем моя ошибка? Когда в массиве OffsetsList малое количество значений (5), все в порядке. ResFile - это объект моего класса BinaryFile для работы с файлами в "двоичном" режиме, т.е. побайтово.


 
Юрий Зотов ©   (2003-09-11 20:09) [9]

BlockWrite(TempFile, OffsetsList[0], Length(OffsetsList));


 
DeScriptor ©   (2003-09-12 15:45) [10]

Неа. Проверял, что BlockWrite(TempFile, OffsetsList[0], Length(OffsetsList)), что BlockWrite(TempFile,Pointer(OffsetsList)^,length(OffsetsList)) - все едино! По-моему, где-то в справке сказано, что обращение к нулевому эл-ту массива есть заодно указатель на его начало, т.е. то же самое, что и Pointer(массив)^.



Страницы: 1 вся ветка

Текущий архив: 2003.09.25;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.028 c
4-82549
_smile
2003-07-23 10:05
2003.09.25
WM_RASDIALEVENT = ?


1-82241
mur
2003-09-11 22:34
2003.09.25
---|Ветка была без названия|---


4-82551
Goblinus
2003-07-23 02:05
2003.09.25
Получить стандартные шрифты...


6-82382
kjeka
2003-07-28 19:51
2003.09.25
WinPopup


1-82224
maxim2
2003-09-12 09:19
2003.09.25
Можно ли перехватить access violation