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

Вниз

Проблема, черт возьми!!!!!!!!!!!!!!!   Найти похожие ветки 

 
OpenGL   (2003-11-13 10:19) [0]

Интересный форум, пока я писал ответ, мой вопрос как-то бесследно исчез... Забавно. Итак все заново:

type
TChHeader = packed record
_Type:WORD;
Size:DWORD;
end;

TChunkData = array of WORD;
PChunkData = ^TChunkData;

TChunk = packed record
Header:TChHeader;
Data:PChunkData;
end;
PChunk = ^TChunk;

TDSFile = class
private
dsFile:File;
FFileSize:cardinal;
ChunkH:TChHeader;
Chunk:TChunk;
....
и т.д.

procedure TDSFile.ReadChunk;
begin
BlockRead(dsFile, Chunk.Header, CHUNKH_SIZE);
New(Chunk.Data);
BlockRead(dsFile, Chunk.Data^, Chunk.Header.Size - CHUNKH_SIZE);
CurrOffset:=FilePos(dsFile);
end;

function TDSFile.ReadFile(Scene:pScene):HRESULT;
begin
BlockRead(dsFile, ChunkH, 6);
if ChunkH._Type <> CHUNK_MAIN then
begin
Result:=E_FAIL;
Abort;
end;

FFileSize:=ChunkH.Size;
Seek(dsFile, MAIN_OFFSET);
CurrOffset:=FilePos(dsFile);

while CurrOffset < FFileSize do
begin
ReadChunk;
case Chunk.Header._Type of
CHUNK_OBJMESH: ShowMessage("OBJ");
CHUNK_VIEWPORT: ShowMessage("VIEW");
CHUNK_KEYFRAMER:ShowMessage("KEY");
end;
end;
end;

Проблема возникает во время чтения CHUNK_KEYFRAMER, выдает access violation, перед этим CHUNK_OBJMESH чудесно читается. Я запускал программу в отладке, с процедурой ReadChunk() никаких проблем не наблюдалось, ошибка возникает на строчке CHUNK_KEYFRAMER:
ShowMessage("KEY");

Кто не верит могу весь исходник привести.

>Digitman
Извиняюсь, в прошлый раз я привет кусок старого и нового кода, раньше процедура действительно была функцией.


 
Vorobyev Sergey ©   (2003-11-13 10:39) [1]

Такие ошибки возникают из-за бесконтрольного использования выделения/освобождения памяти..
Советую проверить правильно ли используются функции выделения/освобождения памяти: New(), Delete(), SetLength(), TObject.Create(), Obj.Free(), Malloc, Realloc ну и в этом же духе.., проверь все, какие ты используешь..
Освобождается ли память везде, где ее выделяешь..

Желаю успехов!


 
panov ©   (2003-11-13 10:41) [2]

Оформляй вопрос правильно.



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

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

Наверх




Память: 0.47 MB
Время: 0.019 c
3-78760
Ne0z
2003-11-03 00:24
2003.11.24
Как проиграть MIDI из БД


3-78780
Dmitriy O.
2003-11-05 16:44
2003.11.24
Как удалить все записи в таблице TADOTable


3-78857
Andrey000
2003-11-03 11:56
2003.11.24
Помогите с ADO не освобождается память


1-78971
GrYRI
2003-11-14 15:06
2003.11.24
Траблы с фор ду или с руками.


1-79039
Vitalik
2003-11-12 21:33
2003.11.24
Package?