Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di r1cky`
    Registrato dal
    Feb 2007
    Messaggi
    431

    [C#] Catturare una parola digitata da tastiera

    Salve a tutti,
    Ho un forum e mi serve poter intercerttare la digitazione di una parola sulla tastiera per successivamente aprire un altro form.
    Ho visto come catturare i singoli tasti e le combinazioni ma per una parola non saprei proprio da dove partire...
    Qualcuno si è mai troato in una situazione simile o ha per caso idee?
    Grazie

  2. #2
    Utente di HTML.it L'avatar di r1cky`
    Registrato dal
    Feb 2007
    Messaggi
    431
    Ho scritto questo codice e sembra funzionare correttamente

    Codice PHP:
    private String password "ciao";
    private 
    int pwdLen//inizlizzata poi alla lunghezza
    private StringBuilder charaters = new StringBuilder();

    ...

    protected 
    override void OnKeyPress(KeyPressEventArgs e)
    {

                if (
    charaters.Length >= pwdLen)
                   
    charaters.Remove(01);    

                
    charaters.Append(e.KeyChar.ToString());
         
                if (
    charaters.ToString().Equals(password))
                    
    MessageBox.Show("giusto!");
                
                
    base.OnKeyPress(e);

    Però ho paura che, pur utilizzando lo stringbuilder che dovrebbe avere prestazioni migliori del semplice concatenamento, si possa ulteriormente migliorare. Qualcuno di voi ha suggerimento per il refactoring?

  3. #3
    Per quanto possa essere lento sarà sempre infinitamente piu veloce dell'utente che digita all'impazzata sulla tastiera

    Di solito si ottimizzano i loop dove un risparmio di ad esempio 50 nanosecondi moltiplicato per un milione di iterazioni (ad esempio) significa risparmiare 50 secondi... naturalmente se non si possono ridurre le iterazioni...

    Chiusa la parentesi teorica il tuo codice se funziona va benissimo non mi metterei ad ottimizzarlo.

    Altrimenti potresti mantenere un array di caratteri della password ed un indice.

    confronti il carattere inserito con il carattere indicato da indice, se password[indice] != carattere riporta indice a zero altrimenti indice++ . Se indice = lunghezza(password) è OK.

    A questo punto elimineresti un sacco di chiamate a funzione che hanno parecchio overhead. Ma come gia detto non mi pare un problema, anzi non sacrificherei la leggibilità del codice per le prestazioni.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.