Telefonino.net network
 
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. NEI PREFERITI .:: | RSS Forum | RSS News | NEWS web | NEWS software |
| PUBBLICITA' | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | CERCA nel FORUM » |

Torna indietro   WinTricks Forum > Software > Programmazione

Notices

Rispondi
 
Strumenti discussione
Vecchio 06-08-2004, 20.19.07   #466
Alhazred
Made in Japan
Top Poster
 
L'avatar di Alhazred
 
Registrato: 04-07-2001
Messaggi: 4.461
Alhazred promette bene
Quota:
Originariamente inviato da LoryOne
1- Dare una pennellata di colore al tutto che così fa 2 novembre.
Missione riuscita
Quota:
2- Quando eseguo l'input della riga, devo poter utilizzare il backspace per cancellare il carattere che non mi piace.
(Questo almeno lo devi includere)
Missione riuscita con mooooolto aiuto
Quota:
3- Devi escludere la possibilità di chiudere il processo se non c'è un vincitore o su espressa richiesta del contendente.
Missione in corso però se uno dei due chiude la console, all'altro arriva la comunicazione, vale ugualmente?
Quota:
4- Devi eliminare i tasti di riduzione ad icona ed ingrandimento a schermo intero.
Missione riuscita
Quota:
5- Potresti pensare di utilizzare il mouse cliccando direttamente sulla griglia per effettuare il colpo
(Se ho tempo domani ti fo vedere qualcosa di interessante a proposito)
Missione abortita
Quota:
6- Deve fare il caffè se no non è un applicativo valido
(Questo è in più)
Missione in corso
Alhazred non è collegato   Rispondi citando
Vecchio 06-08-2004, 21.43.14   #467
Alhazred
Made in Japan
Top Poster
 
L'avatar di Alhazred
 
Registrato: 04-07-2001
Messaggi: 4.461
Alhazred promette bene
Per il problema dei tasti funzione, ho letto il codice postato da Lory, ma non sono riuscito a risolvere nel mio programma.
Non posso mettere un altro caso perché viene ignorato in quanto il carattere restituito è valido ai fini dell'input. Dal codice di Lory sarei tentato di dire che i tasti funzione nella getch() restituiscono 0, ma non ne sono sicuro, inoltre la getch() non prevede valori di ritorno errati.
Come glielo faccio riconoscere?
Alhazred non è collegato   Rispondi citando
Vecchio 06-08-2004, 22.13.21   #468
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
LoryOne è un gioiello raroLoryOne è un gioiello raroLoryOne è un gioiello raro
Quota:
Originariamente inviato da Alhazred
Non riesco a capire a quanto sia pari strlen(Allowed), ho provato a fare delle stampe e mi viene sempre 12
Si ma persino 12 è cannato come risultato.
La spiegazione è alquanto semplice e più volte si è presentata nel corso di questo 3D.

Codice:
char c[]={'a','b','c','d','e','f','g','h','i','l',
              'm','n','o','p','q','r','s','t','u','v'};
printf("%i",strlen(c));
Tutti ci aspetteremmo di ricavare un valore pari a 20 ma stranamente il valore restituito non è quello che ci aspettiamo.

Codice:
char c[]={'a','b','c','d','e','f','g','h','i','l',
              'm','n','o','p','q','r','s','t','u','v'};
printf("%i",sizeof(c)/sizeof(char));
Questo volta è corretto.

Perchè nel primo caso no ?
Innanzitutto non si è specificato la dimensione dell'array che in questo caso è dinamico, non statico.
Il compilatore sa che deve predisporre un quantitativo di memoria in base al tipo di array (char) ma non è così sicuro di quanta ne serva.
Sicuramente ne allocherà tanta quanto basta per contenere tutto l'array più qualcosa che contiene chissà quali informazioni.

Quel qualcosa però non sfugge all'istruzione strlen(), la quale ricerca il famoso null-char ('\0') all'interno dell'array che a parer suo indica la fine della sequenza.

Utilizzare le cosìdette Safe Strings è fondamentale quando si vogliono usare le funzioni di manipolazione delle stringhe incluse nell'header string.h.

Per fare in modo che strlen() possa essere utilizzato correttamente è necessario aggiungere il terminatore nullo alla sequenza, quindi:

Codice:
char c[]={'a','b','c','d','e','f','g','h','i','l',
              'm','n','o','p','q','r','s','t','u','v','\0'};
printf("%i",strlen(c));
Ora ci siamo.
LoryOne non è collegato   Rispondi citando
Vecchio 07-08-2004, 01.14.01   #469
P8257 WebMaster
Gold Member
 
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
P8257 WebMaster promette bene
In preda all'insonnia .. ti dò una traccia Alh, su come "carpire" il tasto funzione .. in mezzo agli altri casi della vita

Riposto il codice di Lory leggermente modificato:

Codice:
#include <stdio.h>
#include <conio.h>

main(void){
    char c;

    printf("Premi un tasto. Escape termina il programma\n");
    while(c!=27){ //Escape termina il programma
        c=getch();//Non sempre cio che restituisce getch() corrisponde ad
                   //un solo carattere
        printf("Codice ASCII [%i] - Carattere restituito [%c]\n",c,c);
        switch(c){
            case 0 : printf("Il tasto premuto e' un tasto funzione !\n"); break;
            case (0+59) : printf("Ti ho beccato, hai premuto F1.. ;-)\n"); break;
            case 97  : printf("Qui hai premuto la a e posso individuarla ...\n "); break;
            case -32 : printf("Il tasto premuto non e' un tasto funzione !\n");
        }    
    }    
}
A te ogni considerazione in merito ed ogni implementazione correlata (bella questa )...

Bye
P8257 WebMaster non è collegato   Rispondi citando
Vecchio 07-08-2004, 09.47.44   #470
Alhazred
Made in Japan
Top Poster
 
L'avatar di Alhazred
 
Registrato: 04-07-2001
Messaggi: 4.461
Alhazred promette bene
Mi studierò adesso l'esempio proposto, intanto posto il codice di UserInput() che adesso funziona senza che io ne conosca il motivo.
Codice:
...
char AllowedCh[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'};
char AllowedNum[] = {'1', '2', '3', '4', '5', '6', '7', '8', '9', '0'};
...
default: if(max == 1)
         {
             for(Count = 0; Count < strlen(AllowedCh); Count++)
             {
                 if(Current == AllowedCh[Count] && (Count2 < max))
                 {
                     printf("%c", Current);
                     Buff[Count2] = Current;
                     Count2++;
                     cursore++;
                 }
             }
             break;
         }
         else
         {
             for(Count = 0; Count < strlen(AllowedCh+1); Count++)
             {
                  if(Current == AllowedNum[Count] && (Count2 < max))
                  {
                      printf("%c", Current);
                      Buff[Count2] = Current;
                      Count2++;
                      cursore++;
                  }
             }
             break;
          }
Alhazred non è collegato   Rispondi citando
Vecchio 07-08-2004, 10.32.12   #471
Alhazred
Made in Japan
Top Poster
 
L'avatar di Alhazred
 
Registrato: 04-07-2001
Messaggi: 4.461
Alhazred promette bene
Ho capito come fare, ma devo mettere tutti i case 1 per 1 o c'è un modo per dare un range?
Alhazred non è collegato   Rispondi citando
Vecchio 07-08-2004, 12.25.16   #472
Alhazred
Made in Japan
Top Poster
 
L'avatar di Alhazred
 
Registrato: 04-07-2001
Messaggi: 4.461
Alhazred promette bene
No, a quanto pare non ho capito, avevo messo
case(0+65): break;
case(0+66): break;
...
e così via fino a J convinto che lo 0 all'inizio gli avrebbe fatto riconoscere li tasto funzione, ma così non mi accetta neanche i caratteri inseriti coi tasti giusti.
Alhazred non è collegato   Rispondi citando
Vecchio 07-08-2004, 12.27.33   #473
Alhazred
Made in Japan
Top Poster
 
L'avatar di Alhazred
 
Registrato: 04-07-2001
Messaggi: 4.461
Alhazred promette bene
Quota:
Originariamente inviato da P8257 WebMaster
Bene,
vorrei appuntare una cosa...

Trovo abbastanza odioso che debba perforza inserire caratteri maiuscoli (o tenendo lo shift o col caps lock attivato) .. non sarebbe bello se l'utente potesse inserire anche caratteri minuscoli o come gli pare e poi fosse la funzione a fare una semplice 'strupr()' per metterli in maiuscolo...?

Bye
Risolto, ora si può inserire l'input come si vuole, maiuscolo o minuscolo, sarà UserInput() a pensare a convertirlo.
Alhazred non è collegato   Rispondi citando
Vecchio 07-08-2004, 12.46.48   #474
Alhazred
Made in Japan
Top Poster
 
L'avatar di Alhazred
 
Registrato: 04-07-2001
Messaggi: 4.461
Alhazred promette bene
Quota:
6- Deve fare il caffè se no non è un applicativo valido
(Questo è in più)
Missione riuscita
Alhazred non è collegato   Rispondi citando
Vecchio 07-08-2004, 14.15.32   #475
P8257 WebMaster
Gold Member
 
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
P8257 WebMaster promette bene
Quota:
Alhazred ha scritto
No, a quanto pare non ho capito, avevo messo
case(0+65): break;
case(0+66): break;
...
e così via fino a J convinto che lo 0 all'inizio gli avrebbe fatto riconoscere li tasto funzione, ma così non mi accetta neanche i caratteri inseriti coi tasti giusti.
Perché hai inserito i codici sbagliati:

(0+59) = F1
(0+60) = F2
(0+61) = F3

e così via...

Leggi i risultati del programma di Lory...
E' in questi casi che il ciclo deve "breakkare"...

Se tu "breakki" a (0+65) ovviamente non potrai inserire la A...

Bye
P8257 WebMaster non è collegato   Rispondi citando
Vecchio 07-08-2004, 14.21.07   #476
P8257 WebMaster
Gold Member
 
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
P8257 WebMaster promette bene
Codice:
strlen(AllowedCh+1)
Questa cosa non si fa ...

Rivedi il codice, se Max = 2 allora mi sembra che si debbano accettare solo numeri giusto? Perché non utilizzare 'strlen(AllowedNum)' ?

Bye
P8257 WebMaster non è collegato   Rispondi citando
Vecchio 07-08-2004, 14.35.10   #477
Alhazred
Made in Japan
Top Poster
 
L'avatar di Alhazred
 
Registrato: 04-07-2001
Messaggi: 4.461
Alhazred promette bene
Quota:
Originariamente inviato da P8257 WebMaster
Codice:
strlen(AllowedCh+1)
Questa cosa non si fa ...

Rivedi il codice, se Max = 2 allora mi sembra che si debbano accettare solo numeri giusto? Perché non utilizzare 'strlen(AllowedNum)' ?

Bye
Se uso AllowedNum non funziona, mi fa inserire comunque le lettere, con AllowedCh + 1 invece va tutto ok.
Alhazred non è collegato   Rispondi citando
Vecchio 07-08-2004, 14.56.59   #478
P8257 WebMaster
Gold Member
 
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
P8257 WebMaster promette bene
No, deve funzionare...

Colpa del null-terminator .. ricordi cosa disse Lory sulle safe strings?...

Codice:
   char AllowedCh[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', '\0'};
   char AllowedNum[] = {'1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '\0'};
Bye
P8257 WebMaster non è collegato   Rispondi citando
Vecchio 07-08-2004, 15.31.46   #479
Alhazred
Made in Japan
Top Poster
 
L'avatar di Alhazred
 
Registrato: 04-07-2001
Messaggi: 4.461
Alhazred promette bene
Ok, così va anche con AllowedNum.
Alhazred non è collegato   Rispondi citando
Vecchio 07-08-2004, 15.38.08   #480
Alhazred
Made in Japan
Top Poster
 
L'avatar di Alhazred
 
Registrato: 04-07-2001
Messaggi: 4.461
Alhazred promette bene
Quota:
Originariamente inviato da P8257 WebMaster


Perché hai inserito i codici sbagliati:

(0+59) = F1
(0+60) = F2
(0+61) = F3

e così via...

Leggi i risultati del programma di Lory...
E' in questi casi che il ciclo deve "breakkare"...

Se tu "breakki" a (0+65) ovviamente non potrai inserire la A...

Bye
Il programma di Lory da sempre
Codice ASCII [0] - Carattere restituito [ ]
le parti messe da te restituiscono
F1 = Codice ASCII [59] - Carattere restituito [;]
F2 = Codice ASCII [60] - Carattere restituito [<]
F3 = Codice ASCII [61] - Carattere restituito [=]
...
fino a F6 però non mi interessano dato che comunque vengono ignorati (non forniscono un input valido) i problemi vengono proprio da F7, F8, F9, F10, pagup e Home e questi hanno gli stessi codici delle lettere da quanto appare dal programma di Lory, non capisco.
Alhazred non è collegato   Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is ON
Gli smilies sono ON
[IMG] è ON
Il codice HTML è OFF

Vai al forum

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
La grande battaglia dei super eroi! Sbavi Chiacchiere in libertà 83 27-02-2009 10.43.39
battaglia navale in c# Joy&Lu Programmazione 3 01-09-2008 15.08.58
Il Signore degli Anelli - La Battaglia per la terra di mezzo Darth Maul Masterizzazione Giochi Games 0 01-09-2006 18.16.18
[C] Battaglia Navale (versione client server) in Linux Nanri Programmazione 11 06-08-2005 14.50.27

Orario GMT +2. Ora sono le: 03.37.29.


E' vietata la riproduzione, anche solo in parte, di contenuti e grafica.
Copyright © 1999-2017 Edizioni Master S.p.A. p.iva: 02105820787 • Tutti i diritti sono riservati
L'editore NON si assume nessuna responsabilità dei contenuti pubblicati sul forum in quanto redatti direttamente dagli utenti.
Questi ultimi sono responsabili dei contenuti da loro riportati nelle discussioni del forum
Powered by vBulletin - 2010 Copyright © Jelsoft Enterprises Limited.