Newsgroup: it.comp.lang.delphi
Titolo: Layout di tastiera (abbastanza urgente)

Salve a tutti,
ho un bel problema che riassumo cosi':
un mio applicativo chiede ad un certo punto di inserire una password (ma potrebbe essere
qualsiasi altra cosa) e poi confronta il testo inserito in una TEdit con una stringa in
memoria.
Che problema c'e' direte voi? Bene ho la necessità di poter eseguire l'applicativo su
sistemi Windows con layout di tastiera differente (ad esempio greco) e qui' cominciano i
problemi:
Stringa attesa per esempio PIPPO
Tasti premuti P I P P O
Stringa letta <non la posso copiare in quanto è greca>
Risultato: impossibile raffrontare le due stringhe - sempre differenti -
Qualcuno ha qualche idea di come risolvere il problema?
Tenete presente che la mia applicazione DEVE utilizzare il layout impostato
dall'operatore.
Grazie a tutti,
David (
www.utilityweb.net
)

Layout di tastiera (abbastanza urgente)
E basta...................
ma è mai possibile.....
a.s.

> Risultato: impossibile raffrontare le due stringhe - sempre differenti -
in questi casi, l'unico modo e' usare i codici di scansione della tastiera,
quelli prodotti dalla matrice, e non i corrispondenti caratteri. Chiaramente
la sequenza di confronto dovra' essere costituita non da "PIPPO" ma dai
codici di scansione corrispondenti ai caratteri "P", "I", ecc.
Ciao, Sandro


Basta che ?
Layout di tastiera? in quasto caso non sapevo proprio come chiamarlo
abbastanza urgente? bè è veramente urgente (almeno per me)
comunque grazie a chi mi potrà rispondere
Bye,
David (
www.utilityweb.net
)

 codici di scansione corrispondenti ai caratteri "P", "I", ecc.
Magari fosse cosi' semplice. Io prendo il ritorno di un TEdit e non controllo null'altro.
Oltre tutto come li pesco?
Ciao,
David

> Oltre tutto come li pesco?
c'e' una funzione GetKeyState, se non sbaglio, che restituisce lo stato
della matrice della tastiera. Potresti interrogare la matrice in
corrispondenza dell'evento OnKeyDown del TEdit, ma bisognerebbe provare
operativamente la cosa per verificare se funziona, non e' una che mi e' mai
servito fare quindi prendi la mia solo come un'indicazione.
Ciao, Sandro

 wrote in message
news:b9d9hq$svh$1...@newsreader.mailgate.org...


 inutili....
consolati, sul newsgroup dell'adsl nonostante sia piu' di un anno che si
dicono peste e corna su Tiscali, un giorno si e uno no arriva uno che posta
"come va Tiscali?" :DDD in questi casi, o ignori i post, o come replica
posti un '
www.google.it
' ;)
Ciao, Sandro

 della mia reazione.
La tua reazione non č giustificata. Per quanto tu abbia ragione devi sempre
tenere conto che non tutti seguono assiduamente il gruppo, alcuni lo usano
*solo* nei momenti di maggior bisogno, per cui non sanno neppure le
discussioni dell' intera settimana. Non so se sia questo il caso, tuttavia
dovresti rivolgerti in modo tale da invitare l' amico ad evitare parole come
urgente e aiuto nel subject. Oltretutto sei anche tu autore di un errore, il
quoting. Non trascinare in fondo ai tuoi messaggi il testo di quelli vecchi.
Inoltre vorrei invitare *tutti* quelli del gruppo ad evitare certi tipi di
reazione, negli ultimi mesi vedo un po' troppi "attacchi gratuiti" ... take
it easy!
--
- Carlo -

 servito fare quindi prendi la mia solo come un'indicazione.
A patto che cosi' sarebbe un casino (pressione BackSpace, Cancel, Selezione del testo e
relativa cancellazione ecc...)
Comunque ho risolto e lo dico casomai serva anche ad altre persone:
Quando si cambia il layout di tastiera con uno a caratteri differenti dagli europei, il
windows attiva il 7° bit in corrispondenza della pressione di un tasto compreso tra 33 (!)
e 128, quindi per risalire alla stringa originale basta controllare che un determinato
carattere sia superiore a 128 ed in questo caso sottrargli 128 (questo vale per
inserimenti standard. Se si vuole poter inserire anche caratteri superiori al 128 e
renderli validi è un'altro paio di maniche)
Bye, Bye,
David (
www.utilityweb.net
)

Ok, Ok ho capito ma visto che è la prima volta che consulto il gruppo abbiate un po' di
pietà. Giuro che non ricapiterà piu' ;-)
Bye e alla prossima,
David (
www.utilityweb.net
)

Risultato: impossibile raffrontare le due stringhe - sempre differenti -
trasformare la stringa inserita dall'utente 
in base ad una trasformazione matriciale
generata mappando tutti i tasti della tastiera.
questo in realtà lo fa delphi con i virtual key
cerca key codes nella guida
lo dico perchè SUPPONGO che i key codes tengano conto
(almeno spero... e qui mi aspetto una smentita dal ng)
del fatto che la tastiera possa avere diversi layout
ora in base al tasto premuto, che rilevi sull'onKeyPress
del tEdit puoi ricostruirti la parola corretta in italiano 
o in Nepalese ;)
penso sia così ... (ed anche qui non lo ho provato 
ma un'idea e sempre meglio di niente...)
tasto premuto ?
nel codice onKeyPress
//questo dovrebbe essere vero se delphi considera i diversi layout
if Key = VK_A Then   
  InternalText := InternalText + 'a'
else if Key = VK_B Then
[cut]
e così puoi automatizzare la procedura per tutti i 
virtual key nella maniera che più ti garba.
dove internalText è il testo che poi andrai a confrontare
con la variabile dell'applicazione.
certo è un bel casino ed il metodo
del 7° bit è sicuramente più fiko e pratico ;)
comunque il mio post lo invio per essere smentito nel caso
abbia detti "boiate" ... non so se questo comportamento
è giusto ai fini del "corretto posting" sul ng
ma anche su questo ho visto che il ng è molto attivo ;) 
spero funzioni ...
se no devo studiarmi meglio i vitual key ;)
	Ciao
	MassimoB
 

tasto premuto ?
? sta per alpha
	Ciao
	MassimoB
 

 Alessandro
-- 
Ciao, Anto', [35, 143, AQ] 
MB C SC 220 CDI Magma Red