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

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



Память: 0.47 MB
Время: 0.015 c
3-82092
Vitalygavrilov
2003-09-05 10:27
2003.09.25
Как перехватить сообщение о конфликтной ситуации?


1-82328
Rustik
2003-09-12 11:41
2003.09.25
Как из реестра достать адрес расоложения шаблона Word


1-82175
Overstep
2003-09-02 12:06
2003.09.25
Fastreport и TXT-фильтр


1-82283
Sima
2003-09-13 18:07
2003.09.25
Передача данных между формами


14-82467
k-man
2003-09-05 18:34
2003.09.25
Вот так бывает...




   Наверх