Newsgroup: it.comp.lang.delphi
Titolo: da stringa a char

Ma robe da matti!
non riesco a convertire una cosa come 'p' nel corrispndente carattere asci.
A dire il vero mi serve la conversione in WORD (tipo intero di delphi).
ord('p') non funziona, visto che ritorna un valore non corretto per il
codice ascii.
Come fare?
Grazie


Ord('p') funziona benissimo e ritorna 112, ovvero il codice ASCII del
carattere "p".
Non è che tu vuoi ottenere il codice ANSI (che per le lettere poi è uguale
all'ascii)?
--
Jax
====
Quando i ceci diventano verdi dalla rabbia si chiamano piselli.

 ha scritto nel messaggio
news:2jgm2hF...@uni-berlin.de...

Allora il problema è questa proecdura (il solito formkeydown)
procedure TFrmCreaOrdine.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  Case Key of
    187: EventAdd; //+
    189: EventDelete; //-
    80: Grid.SetFocus; //p
    88: if Panel5.Visible then GridAggiunte.setFocus; //x
    67: if Panel5.Visible then GridContorni.SetFocus; //c
    79: OrdineView.SetFocus; //o
    13: EventFatto; //invio
 end;
end;
ad esempio se premo p la variabile Key ha valore 80 anzichè ord('p') = 112.
Dal momento che vorrei rendere i codici 80, 187 ecc customizzabili tramite
delle stringhe, vorrei che il codice che estraggo da  stringhe come 'p'
coincida con il valore di key!
Ma non riesco proprio.
Invece funziona con le cifre:
word('1'): ...
funziona e coincide con il valore di key, ma
word('p'): ...
invece NO!

[...]
Dalle prove che ho fatto, nell'OnKeyDown, ti basta
aggiungere 32 ad Ord(Char(Key)) per ottenere l'ASCII
della lettera premuta ... non so se vale per tutti i
tasti ...
L'evento OnKeyPress ha come parametro un Key: Char e
tutto funziona bene con l'Ord ... non puoi usare questo
evento visto che non ti interessa intercettare
pressione di tasti particolari come F!,F", ... o frecce
direzionali, etc ?
	Ciao
	MassimoB
 
---------------------------
http:\\
www.massimobeschi.it

[...] F!,F" [...]
scusa volevo scrivere F1, F2 ... sto facendo troppe
cose contemporaneamente ... lavoro, rispondo al'NG e
guardo la partita ;)


 ha scritto nel messaggio
news:hPFAc.44650$G%.26981@tornado.fastwebnet.it...

Si esatto, uso anche le frecce direzionali.

 tasti ...
Non vale purtroppo per tutti.
Per le letttere bisogna aggiungere 32 a ord(char(stringa)),
per le cifre invece bastya ord(char(stringa)
per altri caratteri invece cambia ancora.
Mi sembra una cosa assurda

 
mi sbagliero', ma se non ricordo male questo non c'entra con il codice 
ascii, e' il codice del tasto premuto, puoi usarlo per le freccie, per i 
tasti (CTRL, ALT, F1, F2, ......), ma se devi cercare il codice ascii 
usi l'evento onkeypress oppure devi convertirlo in ascii, ma al momento 
non so come si fa :-(, dovrai oltre al codice tenere conto anche 
dell'eventuale pressione del Shift o del tasto alt.....
ciao
-- 
-------------------------------
per scrivere in privato
togliere "1975"
e per una risposta piu' veloce
cambiare "libero" -> "lycos"

 per altri caratteri invece cambia ancora.
E' mezzanotte e sono appena tornato da una cena, quindi perdonami se dico
una castroneria. Ma considerare l'uso di un THotKey (palette Win32)? Io non
l'ho mai usato, ma mi sembra che calzi a pennello per quello che vuoi fare.
--
Jax
====
Tutti nella vita hanno una uguale quantità di ghiaccio. I ricchi
d'estate, i poveri d'inverno. (B. Masterson)


Scusami tanto, non capisco quale sia e dove sta il problema.
Le lettere maiuscole vanno da 65 a 90, quelle minuscole da 97 a 122. Il
codice dei tasti virtuali corrispondenti alle lettere si riferisce sempre
alle maiuscole. Secondo me ti stai perdendo in un bicchier d'acqua.
Vuoi personalizzare i tasti (o le combinazioni di tasti) da usare?
TuoTasto:= Ord(Upcase(TuoCarattere));
Se il controllo deve stare invece nella OnKeyDown:
If Key in [97..122] Then Key:= Key and $FFDF;
Però, secondo me, invece di imporre la personalizzazione di singoli tasti,
puoi, spulciandoti le funzioncine della libreria Menus, usare gli shortcut
usati nei menu. L'utente così potrà impostare anche combinazioni di tasti
anziché solo singoli tasti. Carica menus.pas e guarda un po' la funzione per
convertire Key+Shiftstate in uno shortcut, e viceversa, Shortcut in stringa
e viceversa.
Ciao
Giuseppe

 ha scritto nel messaggio
news:cav4r9$sd6$1...@lacerta.tiscalinet.it...

Ord torna il cod. Ascii del carattere, alcune funzioni chiedono o
restituiscono il VirtualKey che e' un'altro codice e che viene assegnato per
tutti i tasti anche le non lettere.
SHORT VkKeyScan(TCHAR  ch  // character to translate
   );
converte da carattere al corrispondente VirtualKey.
int ToAscii(
    UINT  uVirtKey, // virtual-key code
    UINT  uScanCode, // scan code
    PBYTE  lpbKeyState, // address of key-state array
    LPWORD  lpwTransKey, // buffer for translated key
    UINT  fuState  // active-menu flag
   );
fa la conversione opposta.
Ciao Giorgio