Newsgroup: it.comp.lang.pascal
Titolo: aiuto urgente!!!

qualcuno sa dirmi dove posso trovare programmi di esempio su come importare
file sonori tipo wav e file di immagini tipo bmp?
ne ho un disperato bisogno!!!

 wrote in message
8e6oig$bmn$1...@news.mclink.it...

Ti posso aiutare sui file bmp  :
il file bmp è formato da 2 record che indicano tutte le informazioni sul
file
1)  BITMAPFILEHEADER structure contiene informazioni sul tipo, grandezza, ed
la disposizione del  device-independent bitmap (DIB) file.
Member          Description
bfType          Specifica il tipo di file. Questo numero deve essere BM.
bfSize          Specifica le dimenzioni del file, in byte.
bfReserved1     Reserved; must be set to zero.
bfReserved2     Reserved; must be set to zero.
bfOffBits       Specifica i byte di offset da the BITMAPFILEHEADER structure
all'attuale dati bitmap nel file.
2) BITMAPINFOHEADER structure contiene informazioni sulle dimenzioni ed il
colore (DIB).
Member          Description
biSize          Specifica il numero di bytes requisiti per il
BITMAPINFOHEADER structure.
biWidth         Specifica la lunghezza del bitmap, in pixels.
biHeight        Specifica la larghezza del bitmap, in pixels.
biPlanes        Specifica il numero di piani il device. Questo numero deve
essere settato ad 1.
biBitCount      Specifica il numero di bits per pixel. Questo valore deve
essere 1, 4, 8, o 24.
biCompression   Specifica il tipo di compressione per un bitmap compresso.
     Esso pu. essere uno dei seguenti valori :
          BI_RGB   bitmap  non 0 compresso.
         BI_RLE8  bitmaps con 8 bits
         BI_RLE4  bitmaps con 4 bits
biSizeImage     Specifica la dimenzione, in bytes, dell' immagine.
  Se S 0 il bitmap S in BI_RGB format.
biClrUsed       Specifica il numero di colori indicizzati
  nell'attuale tabella di coloro usata dal bitmap.
biClrImportant  Specifica il numero di colori che sono considerati
importanti
Riconverto le procedure da c++, strana la vita le scrissi in TP7 le
convertii in C++ ed ora ritornano come prima  :
per semplicità definisco come variabili globali
var tagfile :BitMapFileHeader;
      tagInfo : BitMapInfoHeader;
function  LeggiBIHeader(nomefile : string;var tagFile : BitMapFileHeader;
var tagInfo : BitMapInfoHeader) : boolena;
    {
       PARAMETRI  INPUT  :  NESSUNO
       PARAMETRI OUTPUT  :  BITMAPFILEHEADER  FI      HEADER DEL FILE
       BITMAPINFOHEADER  INF     HEADER INFO DELL'IMM.
       biPalette         Colori  VALORI RGB
       int               Ncolori NUMERO DI COLORI UTILI.
       VALORE DI RITORNO :  True  SE IL FILE LETTO E' UN BMP FILE
    }
var f : file {se non sbaglio file indica binario cmq correggi qualche errore
che commetterò sicuramente}
 begin
       assign(f,nomfile);      // APRE IL FILE BMP
       reset(f);
       read(f,tagFile);
       read(f,tagINFO);
       nColori=Potenze(tagINFO.biBitCount)-1; {Potenze calcola
2^tagINFO.biBitCount}
      LeggiBIHeader:= (tagFILE.bfType==BMPfile);
 end;
(*divide  i 8 bit del colore i 4 bit basi e 4 alti*)
procedure Divid(C : byte; var at,bs : byte)
   (*
       PARAMETRI  INPUT  :  BYTE C   VALORE DA DIVIDERE
       PARAMETRI OUTPUT  :  BYTE AT  4-BITs ALTI  DI C
       BYTE BS  4-BITs BASSI DI C
       VALORE DI RITORNO :  VOID
   *)
 var  A, B: byte;
begin  (* // indica il commento in c++ campialo con (* commento *)   *)
 asm
  xor  ah, ah     // Azzera ah
  mov  al, C      // Carica il colore in al
  mov  cl, 4      // Numero di bit da spostare
  shl  ax, cl     // Sposta cl bit da ax
  mov   A, ah     // Copia higth color in A
  mov  cl, 4      // Numero di bit da spostare
  shr  al, cl     // Sposta cl bit da al
  mov   B, al     // Copia low color in B
end;
 At=A; Bs=B;
end;
procedure biVisual16(int X, int Y)
   /*
       PARAMETRI  INPUT  :  INT X, Y   COORDINATE VIDEO
       PARAMETRI OUTPUT  :  NESSUNO
       VALORE DI RITORNO :  VOID
   */
     {
  var   P, cHi, cLo: byte;
         iX : integer;
      // IMPOSTA COORDINATE
       if (X+tagINFO.biWidth>640) X=1;
       Y+=tagINFO.biHeight;
       if (Y>480) Y=tagINFO.biHeight;
       iX=1;
       if (tagINFO.biCompression == BI_RGB) then
         begin
             seek(bmpfile, tagFILE.bfOffBits)
            while (not eof(biF)) do
                 begin
                     read(bmpfile,P);
                     Divid(P,cHi,cLo);
                     putpixel(X+iX, Y, cHi); iX=iX+1;
                     putpixel(X+iX, Y, cLo); iX=iX+1;
                     if (iX > tagINFO.biWidth)
                        begin
                           iX=1; Y=Y-1;
                       end;
                 end;
  end;
x quanto riguarda immagini a 256 se ne parla la prossima volta è tardi e
domani mi devo alzare presto
ReDiCuori
mirc : #portici
icq : 74961604