Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Супер запутанные лупы [D5, D6, Win95/98, WinXP]


Fog ©   (2002-09-18 16:15:00) 

у меня функция:
function LoadMap(Slot: Integer): Integer;
var
MapFile: TFileStream;
buff: Char;
begin
MapFile := TFileStream.Create(MapFileName, fmOpenRead);
MapFile.Position := Slot;
while MapFile.Position < Slot + 1 do
begin
MapFile.Read(buff, 1);
Result := Result + StrToInt(buff);
end;
MapFile.Free;
end;


и DXTimer:

procedure DXTimerOnTimer(blablabla);
var
k: integer...
begin
for k := 0 to 46 do
begin
if not Odd(k) then
begin
DXImageList1.Items[1].Draw(DXDraw1.Surface, MapX[LoadMap(k)], mapY[5], 0);
end;
end;
end;


Выскакивает Access violation
Возможно это ужасающий непрофессиолизм, но лучше этого я придумать не мог... Это загрузка положения спрайтов из фалы... MapX, MapYэто массив изомерических тилей...


Fog   (2002-09-19 15:29:00) [1]

В файле я пишу либо
010203040506...

или
1 2 3 4 5 6...


Fog   (2002-09-18 18:49:00) [2]


> Подземельный Кадастрат

как это не инициализирован, он у меня в виде сонстанты!
const MapX: array[0..23] of integer =
(chisla)...


Подземельный Кадастрат   (2002-09-18 18:37:00) [3]

MapX, если это динамический массив, не инициализирован (не создан) к тому времени, когда его вызывает таймер


Fog   (2002-09-18 18:06:00) [4]


> ART_43

for k := 0 to 46 do
begin
if not Odd(k) then
begin
DXImageList1.Items[1].Draw(DXDraw1.Surface, MapX[LoadMap(k)],
mapY[5], 0);
end;
end;


Гдето тут...


ART_43   (2002-09-18 17:15:00) [5]

В какой строке?


Fog   (2002-09-18 17:04:00) [6]

AV хоть ты тут тресни :(


> ART_43
В таймере...


Алексей Ким   (2002-09-18 16:25:00) [7]

oops... сам себя запутал...
var i: array[0,1] of char;

mapfile.position := slot;
if mapfile.position + 2 < mapfile.size then
mapfile.read(i,2);

так вроде...


Алексей Ким   (2002-09-18 16:21:00) [8]

var i: array [0..1] of char;

while MapFile.Position < MapFile.Size do
begin
read(buff,1);
Result := Result + StrToInt(buff);
end;
так?


ART_43   (2002-09-18 16:21:00) [9]

AV в каком месте вылезает?


Fog   (2002-09-18 16:18:00) [10]

дело в том что мне нужно читать двузначное значение...


Алексей Ким   (2002-09-18 16:16:00) [11]

function LoadMap(Slot: Integer): Integer;
var
MapFile: TFileStream;
buff: Char;
begin
MapFile := TFileStream.Create(MapFileName, fmOpenRead);
MapFile.Position := Slot;
while MapFile.Position < Slot dobegin
MapFile.Read(buff, 1);
Result := Result + StrToInt(buff);
end;
MapFile.Free;
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо