Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - undefined window() e bioskey()
Forum - C/C++ - undefined window() e bioskey()

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
paul90 (Normal User)
Newbie


Messaggi: 5
Iscritto: 09/08/2008

Segnala al moderatore
Postato alle 14:34
Sabato, 09/08/2008
ciao a tutti!
ho un grande problema, anzi due.
Ho scaricato un programmino molto semplice giusto per un primo approccio al C.
Il problema sarebbe che appena faccio compilare il codice (utilizzo dev c++) ricevo questo errore:
[Linker error] undefined reference to `window'
[Linker error] undefined reference to `bioskey'

Qualcuno mi potrebbe aiutare?se volete il codice chiedete...

grazie!

PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 12:00
Lunedì, 11/08/2008
posta il codice e in che punto del programma viene dato errore...

PM Quote
Avatar
paul90 (Normal User)
Newbie


Messaggi: 5
Iscritto: 09/08/2008

Segnala al moderatore
Postato alle 14:07
Lunedì, 11/08/2008
ecco il codice:

Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <windows.h>
  3. #include <conio.h>
  4. #include <conio.c>
  5.  
  6. #include <stdlib.h>
  7. //Definizione di costanti di comodo
  8.  
  9. #define UP      328
  10. #define DOWN    336
  11. #define LEFT    321
  12. #define RIGHT   333
  13. #define CR      13
  14. #define ESC     27
  15. #define DEL     339
  16. #define TAB     9
  17. #define BSP     8
  18.  
  19.   struct persona{                          //Definizione di un tipo struttura
  20.      char nome[30];
  21.      char cognome[30];
  22.      char indirizzo[100];
  23.      char telefono[20];
  24.      };
  25.  
  26.   struct persona amico;             //amico è una variabile di tipo persona
  27.  
  28.       int getkey(void);
  29.       void closewin(int x1,int y1,int x2,int y2);
  30.       void inverte();
  31.       void printat(int x,int y, char s1[]);
  32.       void schermo();
  33.       void cancella(int a[10][100]);
  34.       void message(char st1[]);
  35.       void campi_protetti(int a[10][100],int x0, int y0,
  36.                      int max_len, int max_voci,
  37.                    char voce_1[30], char voce_2[30],
  38.                  char voce_3[30], char voce_4[30]);
  39.  
  40.  
  41.  
  42.  
  43. //PROGRAMMA PRINCIPALE
  44.  
  45.    int main()
  46.    {
  47.  
  48.    #define testo_titolo "  CAMPI PROTETTI"
  49.  
  50.    int  cmd, lt, i ,j;
  51.    int a[10][100];                //Matrice che contiene la scheda di input
  52.  
  53.    inverte();           //      Inverte i colori dello sfondo e del testo
  54.    schermo();
  55.    cancella(a);                                         // Inizializza la matrice a
  56.  
  57.    message(" <Esc> Inserisci  ");                  // Messaggio a fondo schermo
  58.  
  59. campi_protetti(a,20,10,40,4, "Cognome", "Nome", "Indirizzo",  
  60.                "Telefono");
  61.  
  62.  
  63.                                         // Trasferimento della matrice a in amico
  64.  
  65.    for(i=0;i<=20;i++)amico.cognome[i]=a[1][i+1];
  66.    for(i=0;i<=20;i++)amico.nome[i]=a[2][i+1];
  67.    for(i=0;i<=40;i++)amico.indirizzo[i]=a[3][i+1];
  68.    for(i=0;i<=20;i++)amico.telefono[i]=a[4][i+1];
  69.  
  70.    closewin(28,3,75,7);           //  Preparazione finestra per stampa dati
  71.    window(28,3,75,7);
  72.    printat(1,1," Scheda utente inserita");          //Stampa della scheda
  73.                                                        //       inserita
  74.    gotoxy(1,2);
  75.    cprintf("%s", amico.cognome);
  76.    gotoxy(1,3);
  77.    cprintf("%s", amico.nome);
  78.    gotoxy(1,4);
  79.    cprintf("%s", amico.indirizzo);
  80.    gotoxy(1,5);
  81.    cprintf("%s", amico.telefono);
  82.  
  83.    message(" <Esc> Esci  ");
  84.  
  85.    getch();
  86.  
  87.    return 0;
  88.  
  89.      }
  90.  
  91. //FINE PROGRAMMA PRINCIPALE
  92.  
  93.      void printat(int x,int y, char s1[])                         //  Scrive un msg
  94.      {
  95.      gotoxy(x,y);cprintf("%s",s1);}
  96.  
  97.      void message(char st1[])                   //Scrive un msg a fondo schermo
  98.      {closewin(2,25,78,25);gotoxy(2,25);cprintf(st1);}
  99.  
  100.      int lunghezza_stringa(char s[])       // Calcola la lunghezza di s
  101.      {int i;
  102.      i=0;while(s[i]!='\0') i++;
  103.      return i;    }
  104.  
  105.      void inverte()                              //Inverte lo sfondo e il testo
  106.      {
  107.  
  108.      window(1,1,80,25);textbackground(WHITE);textcolor(BLACK);
  109.      clrscr();}
  110.  
  111.      void closewin(int x1,int y1,int x2,int y2)    // Chiude una finestra
  112.      {textbackground(WHITE);
  113.      textcolor(BLACK);window(x1,y1,x2,y2);clrscr();
  114.      textbackground(WHITE);textcolor(BLACK);window(1,1,80,25);}
  115.  
  116.      void openwin(int x1,int y1,int x2,int y2)  //      Apre una finestra
  117.      {textbackground(BLACK);textcolor(GREEN);
  118.      window(x1,y1,x2,y2);clrscr();}
  119.  
  120.      void screenview()                                       // Disegna il quadro
  121.      {
  122.      int j,x0,x1,y0,y1;
  123.      x0=1;y0=1;x1=80;y1=24;
  124.      printat(x0,y0,"?");
  125.      for(j=1;j<=x1-2;j++) cprintf("?");cprintf("?");
  126.      for(j=1;j<=y1-4;j++){printat(x0,y0+j,"?");
  127.      gotoxy(x0+x1-1,y0+j);cprintf("?");}
  128.      printat(x0,y0+y1-4,"?");
  129.      for(j=1;j<=x1-2;j++) cprintf("?");cprintf("?");
  130.      printat(x0,y0+y1-3,"?");printat(x0+x1-1,y0+y1-3,"?");
  131.      printat(x0,y0+y1-2,"?");printat(x0+x1-1,y0+y1-2,"?");
  132.      printat(x0,y0+y1-1,"?");
  133.      for(j=1;j<=x1-2;j++) cprintf("?");printat(x0+x1-1,y0+y1+1,"?");}
  134.  
  135.      void schermo()                                  // Scrive l'intestazione
  136.      {int n;
  137.      n=lunghezza_stringa(testo_titolo);
  138.      clrscr(); screenview();
  139.      gotoxy(40-n/2,1); cprintf(testo_titolo);  }
  140.  
  141.      int getkey(void)     //Legge dal buffer di tastiera il tasto battuto
  142.      {int key, lo, hi;
  143.      key = bioskey(0);
  144.      lo = key & 0X00FF;
  145.      hi = (key & 0XFF00) >> 8;
  146.      return((lo == 0) ? hi + 256 : lo); }
  147.  
  148.      void cancella(int a[10][100])                          //Cancella la matrice
  149.      {int i,j;
  150.      for(i=0;i<10;i++){for(j=0;j<100;j++)a[i][j]= ' ';}}
  151.  
  152.      int alfa_numerico(int lt)  //      Il carattere è alfanumerico ?
  153.      {int n;
  154.      n=0;
  155.      if((lt>=91)&&(lt<=122)) n=-1;
  156.      if((lt>=32)&&(lt<=63 )) n=-1;
  157.      if((lt>=65)&&(lt<=90))  n=-1;
  158.      if(n==0) return lt;else return n;
  159.      }
  160.  
  161.     void campi_protetti(int a[10][100],int x0, int y0,
  162.         int max_len, int max_voci,
  163.         char voce_1[30],
  164.       char voce_2[30],
  165.       char voce_3[30],
  166.       char voce_4[30])
  167.     {int lt,cmd;
  168.     window(3,y0,23,y0+4);
  169.     gotoxy(1,1);
  170.     cprintf("%s",voce_1);
  171.     gotoxy(1,2);
  172.     cprintf("%s",voce_2);
  173.     gotoxy(1,3);
  174.     cprintf("%s",voce_3);
  175.     gotoxy(1,4);
  176.     cprintf("%s",voce_4);
  177.     window(1,1,80,25);
  178.     openwin(x0,y0,x0+max_len,y0+max_voci-1);
  179.     gotoxy(1,1);
  180.     while(1==1) {
  181.      lt=getkey();
  182.      cmd=alfa_numerico(lt);
  183.      switch(cmd)   {
  184.      case ESC:   window(1,1,80,25);return;
  185.      case CR:      gotoxy(1,wherey()+1);break;
  186.      case TAB:   gotoxy(1,wherey()+1);break;
  187.      case LEFT:  gotoxy(wherex()-1,wherey());break;
  188.      case RIGHT: gotoxy(wherex()+1,wherey());break;
  189.      case UP:    gotoxy(wherex(),wherey()-1);break;
  190.      case DOWN:  gotoxy(wherex(),wherey()+1);break;
  191.      case BSP:   gotoxy(wherex()-1,wherey());putchar(' ');
  192.                      a[wherey()][wherex()]=' ';
  193.            gotoxy(wherex()-1,wherey());break;
  194.      case -1:    if(wherex()<=max_len){
  195.                      putchar(lt);
  196.                  a[wherey()][wherex()]=lt;}break;   }       }
  197. }



ogni volta che viene usato window() e bioskey() mi viene rimandato errore..:-|

PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 10:55
Martedì, 12/08/2008
prova ad includere

Codice sorgente - presumibilmente Plain Text

  1. #include<bios.h>



quel tipo di errore indica che la funzione che chiami non è stata definita

PM Quote
Avatar
paul90 (Normal User)
Newbie


Messaggi: 5
Iscritto: 09/08/2008

Segnala al moderatore
Postato alle 13:31
Martedì, 12/08/2008
Ho provato includendo il file bios.h
e come avevo gia' provato mi esce questo errore:
4 C:\..\index.c
bios.h: No such file or directory.


:(

PM Quote
Avatar
lorelapo (Ex-Member)
Expert


Messaggi: 355
Iscritto: 28/02/2007

Segnala al moderatore
Postato alle 20:22
Lunedì, 18/08/2008
:ot: : non pensi che dovresti iniziare con qualcosa di più tradizionale per capirci, tipo chenne sò un Hello, World !

PM Quote
Avatar
paul90 (Normal User)
Newbie


Messaggi: 5
Iscritto: 09/08/2008

Segnala al moderatore
Postato alle 20:34
Lunedì, 18/08/2008
no grazie, nn ho bisogno dei tuoi suggerimenti.
Ho solo bisogno di risolvere questo problema.

PM Quote
Avatar
lorelapo (Ex-Member)
Expert


Messaggi: 355
Iscritto: 28/02/2007

Segnala al moderatore
Postato alle 23:23
Lunedì, 18/08/2008
1 : I Consigli sono sempre utili

2 : Il tuo problema può essere dovuto al fatto che
a) Non hai linkato le librerie necessarie
b) Non hai tutti i file necessari (header e source)
c) Le definizioni delle funzioni provocano problemi di genere
d) Le funzioni che segnali non esistono da nessuna parte nei file

Se tu avessi seguito un percorso normale saresti arrivato a questo programma con conoscenze sufficenti a risolvere il problema da solo, comunque se aggiungi particolari dovrei poterti aiutare meglio non mi sembra un gran problema, il linker fa spesso di questi scherzi.

Ultima modifica effettuata da lorelapo il 18/08/2008 alle 23:29
PM Quote
Avatar
paul90 (Normal User)
Newbie


Messaggi: 5
Iscritto: 09/08/2008

Segnala al moderatore
Postato alle 16:19
Martedì, 19/08/2008
1. i suggerimenti sono utili e lo so, ma il tuo mi sembrava una presa in giro.

2. io sto seguendo una guida che ho scaricato e non so dirti se il percorso che segue e' sensato o no, a me sembra di si.

3. se non esistono queste funzioni mi chiedo se possono esserci funzioni simili.

se ti servono ulteriori informazioni fammelo sapere

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo