Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    258

    [C] funzione farmalloc

    Apro una nuova discussione perchè ho degli altri problemi sempre con la funzione farmalloc().

    Allora, io ho un file (chiamato video.dll) contenente 8 immagini al suo interno. Per poter velocizzare il programma che le visualizza (sono immagini 640x350) ho pensato di rifare il file utilizzando la funzione getimage e poi nel programma di visualizzazione usare la putimage. Però ho bisogno di una zona di memoria allocata; per questo mi serve la funzione farmalloc().

    Questi sono i due programmi:


    Conversione del video:

    #define DIM_IMM 112006
    FILE *filein,*fileout;
    int i,j,ind;
    int driver = VGA, modo = VGAMED;
    char far *imm;

    main()
    {
    if ((imm = (char far *)farmalloc(DIM_IMM*2))==NULL) return;
    initgraph (&driver,&modo,"");

    filein = fopen ("video.dll","rb");
    fileout = fopen ("video2.dll","wb");
    for (ind=0;ind<8;ind++)
    {
    for (i=350;i>0;i--)
    for (j=0;j<640;j++)
    putpixel (j,i-1,fgetc(filein));
    getimage (0,0,639,349,imm);
    fwrite (imm,DIM_IMM,1,fileout);
    getch();
    }
    fclose (filein);
    fclose (fileout);
    farfree (imm);
    closegraph();
    }



    Visualizzazione del video:

    #define DIM_IMM 112006
    FILE *file;
    int i,j,ind;
    int driver = VGA, modo = VGAMED;
    char far *imm;

    main()
    {
    if ((imm = (char far *)farmalloc(DIM_IMM))==NULL) return;
    initgraph (&driver,&modo,"");

    file = fopen ("video2.dll","rb");
    for (ind=0;ind<8;ind++)
    {
    fread (imm,DIM_IMM,1,file);
    putimage (0,0,imm,COPY_PUT);

    getch();
    }
    fclose (file);
    farfree (imm);
    closegraph();
    }






    Penso che il problema sia delle funzioni getimage e putimage perchè quando compilo mi dice "Suspicious pointer conversion" per entrambe. Però la farmalloc() non funziona in turboC, bisogna lanciare l'exe. E quindi non riesco a fare il passo passo ed esserne sicuro.
    Però:

    Il file creato è lungo 364kB (invece di 8*112006B = 876kB)
    Se provo a far girare un file creato correttamente (da un altro programma che spezzetta l'immagine in 5 pezzi per usare la malloc() e che funziona) non me lo visualizza lo stesso, anche se alloca la memoria.

    Che posso fare?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Qual e' il prototipo delle funzioni getimage e putimage?

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    258
    sono:

    void far getimage (int left, int top, int right, int bottom, void far *bitmap)
    void far putimage (int left, int top, void far *bitmap, int op)

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    258
    qualche idea sul perchè non funziona?

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    258
    up

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.