|
| 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 » | |
12-12-2007, 18.09.06 | #1 |
Made in Japan
Top Poster
Registrato: 04-07-2001
Messaggi: 4.461
|
Una variabile mal vista
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. |
13-12-2007, 12.28.35 | #2 |
Made in Japan
Top Poster
Registrato: 04-07-2001
Messaggi: 4.461
|
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); 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 Aiuto! Ultima modifica di Alhazred : 13-12-2007 alle ore 12.35.45 |
13-12-2007, 12.44.01 | #3 |
Made in Japan
Top Poster
Registrato: 04-07-2001
Messaggi: 4.461
|
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. |
Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti) | |
Strumenti discussione | |
|
|
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 |