PDA

Просмотр полной версии : Трабл с чтением из файла...


Xxor
26.04.2008, 12:14
Возник непонятный трабл с открытием файла...
Буду рад помощи...

#include <dos.h>
#include <stdio.h>
#include <conio.h>
#include <mem.h>
#include <stdlib.h>
void main(){
unsigned char buff[199][319];
unsigned char sprite[39][31];
unsigned char far *screen = (char far *)MK_FP(0xa000,0);
int i,j,k;
FILE *bmp;
REGPACK r;
if((bmp=fopen("1.bmp","rb"))==NULL){
printf("Cant open file\n");
getch();
}else{
fseek(bmp,1078,0);
fread(&sprite,sizeof(sprite),1,bmp);
fclose(bmp);
for(i=0;i<=39;i++){
for(j=0;j<=31;j++){
buff[i][j]=sprite[i][j];
}
}
r.r_ax=0x13;
intr(0x10,&r);
k=0;
for(i=0;i<=199;i++){
for(j=0;j<=319;j++){
screen[k]=buff[i][j];
k++;
}
}
sleep(5);
r.r_ax=0x3;
intr(0x10,&r);
getch();
}
}

Kaimi
26.04.2008, 13:07
Написал бы что компилятор выдает

Xxor
26.04.2008, 13:26
Дык в том то и дело что компилятор молчит цука

KSoniX
26.04.2008, 14:07
где именно баг добавь меня в ИСК № 465-497-196

Xxor
26.04.2008, 14:10
где именно баг
Непроходи открытие файла (

if((bmp=fopen("1.bmp","rb"))==NULL){
printf("Cant open file\n");
getch();
}else{

Forcer
26.04.2008, 17:59
проверь директорию. попробуй указывать абсолютный путь до файла .

Delimiter
26.04.2008, 18:03
абсолютный путь нужно указывать всегда, чтоб не думать какая директория в данный момент дефаултовая.

Xxor
26.04.2008, 18:09
все предложения нащет пути втопку .. пока нетрогаю масив buff все идет отлично . нормально читаетса файл. выводитса данные других масивов в бижеобуфер .. отображаетса все в разрешении 320*200*256 норм .. . но как токо пишу се тв масив buff то пц ( а он нада позарез для формирования изображеня перед выводом .. ибо нада анимировать примерно 10 спрайтов одновременно

Forcer
26.04.2008, 19:05
все предложения нащет пути втопку
Вы очень вежливы когда просите о помощи.

fread(&sprite,sizeof(sprite),1,bmp);
&sprite - ?
sizeof(sprite) = 4

Xxor
26.04.2008, 19:19
Вы очень вежливы когда просите о помощи.
Еслибы проблема была в пути я бы не просил о помощи. И пожалуста ненадо "выкать"

desTiny
26.04.2008, 19:57
fread(&sprite,sizeof(sprite),1,bmp);
По-моему, это переполнение :)
разве не так:
fread(sprite,31*39,1,bmp);



АХТУНГ:

for(i=0;i<=39;i++){
for(j=0;j<=31;j++){
buff[i][j]=sprite[i][j];
}
вместо <= должно быть <
END АХТУНГ

Xxor
26.04.2008, 20:49
Ахтунги приняты во внимание но проблема осталась прежней. Методом каментированием всего подряд выяснил кое что.
Код работает ели закоментить в которых выполняютса операции над масивом buff строки:

#include <dos.h>
#include <stdio.h>
#include <conio.h>
#include <mem.h>
#include <stdlib.h>
void main(){
unsigned char buff[199][319];
unsigned char sprite[39][31];
unsigned char far *screen = (char far *)MK_FP(0xa000,0);
int i,j,k;
FILE *bmp;
REGPACK r;
if((bmp=fopen("c:\\1.bmp","rb"))==NULL){
printf("Cant open file\n");
getch();

}else{

fseek(bmp,1078,0);
fread(&sprite,36*31,1,bmp);
fclose(bmp);
//
// for(i=0;i<39;i++){
// for(j=0;j<31;j++){
// buff[i][j]=sprite[i][j];
// }
// }
//
r.r_ax=0x13;
intr(0x10,&r);
k=0;
//
// for(i=0;i<199;i++){
// for(j=0;j<319;j++){
// screen[k]=buff[i][j];
// k++;
// }
// }
//
sleep(5);
r.r_ax=0x3;
intr(0x10,&r);
getch();

}
}