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 12-12-2007, 18.09.06   #1
Alhazred
Made in Japan
Top Poster
 
L'avatar di Alhazred
 
Registrato: 04-07-2001
Messaggi: 4.461
Alhazred promette bene
Una variabile mal vista

Nel mio programma vorrei rendere invisibile il cursore lampeggiante sulla console. Riesco a farlo, nessun problema, se non fosse che poi non è più utilizzabile il mailslot sul quale il server invia informazioni al client

E' sufficiente che la variabile
CONSOLE_CURSOR_INFO CCInfo;
sia anche solo dichiarata per far si che il mailslot non funzioni, la elimino e tutto torna alla normalità.
Da che cosa potrebbe dipendere?
Potrei capire, con difficoltà sinceramente, se questo dipendesse da un seguente uso improprio della variabile, per questo ho provato a rimuovere tutto il codice in cui viene usata per nascondere il cursore, ma niente devo togliere per forza anche la dichiarazione.
Alhazred non è collegato   Rispondi citando
Vecchio 13-12-2007, 12.28.35   #2
Alhazred
Made in Japan
Top Poster
 
L'avatar di Alhazred
 
Registrato: 04-07-2001
Messaggi: 4.461
Alhazred promette bene
Premessa - per far creare al client un mailslot con nome diverso dagli altri uso l'id del processo, quindi il mailslot ha un nome del tipo \\.\mailslot\client3600 e lo faccio in questo modo
Codice:
ID = GetCurrentProcessId();
sprintf(mailslot_id,"\\\\.\\mailslot\\client%d", ID);
a questo punto nella variabile mailslot_id c'è il nome del mailslot da creare ed è sicuramente corretto perché ho controllato mettendo una stamapa.

Mettendo qualche altra stampa per controllare cosa succede ho notato queste cose:

1) Se la variabile CCInfo non è dichiarata
Il client scrive correttamente il nome del mailslot creato nella variabile dedicata a memorizzarlo, accedo al servizio di login, metto il nome utente (ad esempio alhazred) e mailslot_id è ancora intatta, metto la password e mailslot_id è ancora intatta, invio la richiesta, il server la riceve correttamente, attacca senza problemi il mailslot del client e tutto funziona a dovere.

2) Dichiaro la variabile CCInfo (globale visto che va usata in più funzioni), non faccio altro, non c'è alcuna linea di codice che ne faccia uso.
Il client scrive correttamente il nome del mailslot creato nella variabile dedicata a memorizzarlo, accedo al servizio di login, metto il nome utente (ad esempio alhazred) e mailslot_id è ancora intatta, dopo alcune linee di codice mailslot_id diventa \\.\mailslot\clialhazred invece di rimanere una cosa tipo \\.\mailslot\client3600 e in questo codice mailslot_id non compare
Codice:
            /******* leggo username *******/
            PosizionaCursore(hOut,34,10);
            strcpy(MyMessage,UserInput(MAX_SEND_REC,1));
            strcpy(controllo,MyMessage);
            strcat(MyMessage,"\n\0");
            strcpy(request_message.req.da, MyMessage); //metto la username nel messaggio
            PosizionaCursore(hOut,0,1);
            printf("%s",mailslot_id); // qui è tutto ok
            /******************************/
            if(strcmp(controllo,"escape") != 0) { //se è stato premuto esc si torna aalla selezione iniziale
                len = strlen(MyMessage);
                if( MyMessage[len-1] == '\n' )
                    MyMessage[len-1] = 0;
                len = strlen(MyMessage);
                if( MyMessage[len-1] == '\0' )
                    MyMessage[len-1] = 0;
                strcpy(nome, MyMessage); //Sarà il titolo della console
                SetConsoleTextAttribute(hOut,normale);
                PosizionaCursore(hOut,34,10);
                printf("%s",nome);
                len = strlen(nome);
                for(i=0; i<(12 - len);i++)
                    printf(" ");
                PosizionaCursore(hOut,34,12);
                SetConsoleTextAttribute(hOut,invertito);
                printf("            ");

                PosizionaCursore(hOut,0,2);
                printf("%s",mailslot_id); //mailslot_id è stato modificato
Non ne capisco il motivo visto che la differenza tra le due situazioni è solo la dichiarazione di una variabile, non cambia altro.

Aiuto!

Ultima modifica di Alhazred : 13-12-2007 alle ore 12.35.45
Alhazred non è collegato   Rispondi citando
Vecchio 13-12-2007, 12.44.01   #3
Alhazred
Made in Japan
Top Poster
 
L'avatar di Alhazred
 
Registrato: 04-07-2001
Messaggi: 4.461
Alhazred promette bene
Rileggendo il messaggio mi è caduta l'attenzione sulla frase "globale visto che va usata in più funzioni".
Ho fatto diventare la variabile locale alle funzioni dove mi serve e tutto funziona bene.
Il problema dunque è risolto, ma se qualcuno conosce il motivo per cui così funziona e con la variabile globale no mi farebbe comunque piacere se me lo spiegasse.
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
[Vista] Installare XP su Vista AMIGA Windows 7/Vista/XP/ 2003 5 12-11-2007 17.40.03
Importare tema di Vista per Xp con Vista Mizer DreamBoy Windows 7/Vista/XP/ 2003 10 25-09-2007 20.23.20
AutoPatcher Vista June 2007 giancarlof Segnalazioni Web 4 07-08-2007 22.16.05
L'antitrust europeo alle calcagna di Vista Astro Segnalazioni Web 0 14-09-2006 13.10.39
VISTA in 7 salse Macao Segnalazioni Web 0 13-09-2005 10.18.23

Orario GMT +2. Ora sono le: 05.59.43.


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.