Newsgroup: italia.genova.discussioni
Titolo: OT : strano problema ASCII

se io faccio un programmino cretino in Visual Basic del tipo :
for i = 0 to 255
  print  i, chr$(i)
next i
ho tutti i codici extended ASCII. Cio' l'accoppiamento  codice - lettera.
Quindi, vedo che la a con i due puntini  (a- umlaut)  esce col codice 228.
Ora, se apro sul desktop un text file col Notepad, e con la mia tastiera
tedesca cosi' per sfizio faccio   alt-228  NON mi viene la stessa lettera,
ma un'altra.
Ho una tastiera tedesca. Ma il problema non e' trovare le lettere che posso
anche averle direttamente sulla tastiera, ma rispondere alla domanda : e'
possibile che diverse tastiere abbiano diversi scan-code, per cui non vale
piu' la regola alt-numero per avere un codice ASCII  ???

 piu' la regola alt-numero per avere un codice ASCII  ???
I codici ascii standard sono a 7 bit, quindi fino al 127.
Oltre ci sono quelli estesi, diversi a seconda della nazione.

Alessandro Topo Galileo:

E lo scan-code non c'entra un'emerita sega. E', come al solito, un termine
che ha orecchiato e che quindi, automaticamente, conosce bene.
Maaa... perch� non fa queste richieste sui NG specialistici?
Semplice: ha capito che la gente si affeziona a chi chiede aiuto.
Con la sua imbecillit�, petulanza, narcisismo e prepotenza infantile, in
effetti, � un neonato perfetto.

Alessandro Topo Galileo wrote:

Si, pero' esiste l'extended ASCII che va fino a 255 ed e' diventato almeno 
tanto standard quando l'ASCII normale.
infatti googlando si ottiene la 'ASCII table' e ti dice che la a-umlaut ha
il codice 132.
ed infatti  facendo alt-132 col notepad ti viene fuori la a coi due puntini.
E allora, cosa e' successo ?
E' successo che quel bendetto (o maledetto) Visual Basic fa le cose a modo
suo.
Infatti nella stessa pagina del libro (Visual Basic 6 - Michael Kofler) si
legge :
'Per avere il codice ASCII di un caratere basta fare Asc(x) 
mentre invece per fare la cosa inversa, cio'e stampare il carattere dando il
codice ASCII si fa  chr$(x)
PALLE !!! 
Perche facendo il chr$(x) non da l'ASCII ma, evidentemente, un non meglio
identificato Key-Code, che per la a-umlaut e' 228. guarda caso proprio il
codice che era uscito  me.
Altra frase del manuale (..."KeyCode and ASCII-Code are not compatible").
E mo' me lo dice quel buzzurro.
Devo decidermi ad abbandonarlo questo Visual Basic. Chissa se la versione
NET  2008 e' diversa.

 effetti, è un neonato perfetto.
Se tua madre ti avesse ammazzato da piccolo avrebbe reso un grande servizio
all'umanita'.
Invece, poveretta,  a lei devono fischiare le orecchie quando, per insultare
te, mettono di mezzo anche lei.

 ma un'altra.
Fai attenzione al tipo di carattere, probabilmente il tuo notepad usa un
Font (di solito un true type tipo Lucida Console) diverso da quello usato
nei form di Visual Basic (di solito un MS Sans Serif) e quindi � per quello
che allo stesso codice ASCII ottieni un carattere diverso. Per capire cosa
intendo prova ad impostare il Wingdings sul notepad e poi premi qualche
tasto... ;-))
Nota: lo scancode � un'altra cosa, se ti interessa approfondire leggi questo
breve ma esauriente tutorial
http://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/scancode.doc
 ,
link corto 
http://tinyurl.com/2ox38k
.
-- 
Bob
http://www.webalice.it/argonex/

 breve ma esauriente tutorial
Tanto non sa un cazzo non capisce un cazzo e, soprattutto, non gliene frega
un cazzo: chiede aiuto solo per farsi coccolare e benvolere.

 
grazie del link. (Ma, contrariamente a quanto afferma il 'sapientone del NG,
io lo scan code lo conosco dal 1984 e so che e' una cosa ben diversa
dall'ascii code. Anzi, con un buon programmino in C si puo' fare il
trapping di tutti gli scan code che genera l'hardware della tastiera).
).
Pero' il problema che devo affrontare in questi giorni e' senzaltro un
problema connesso con Visual Basic  6.
Ho gia' fatto numerosi test nel frattempo.
Perche, ho gia testato con molti fonts : TUTTI i true Type fonts seguono le
stesse regole, altrimenti non avrebbe senso. La a-umlaut ha il codice 132.
Dappertutto.
Per qualche motivo a me ignoto il Visual Basic 6 da alla a-umlaut il codice
228.
Cosi' come tutti gli ascii codes sono alterati. Allora, dico io, non hanno
il diritto di chiamarli ascii code e di farli apparire come risultato
dell'istruzione  chr$(x). 
Dovrebbero invece dire 'l'istruzione chr$(x) da' come risultato il Key_Code
(cosi' lo chiamano loro).
Comunque, tanto per info aggiungo : dopo tanti anni, visto che avevo solo
problemi e i nuovi antivirus non lo supportano piu', ieri sera ho
finalmente deciso ad installare windows XP in sostituzione del Windows
2000. Penso di essere stato 'ultimo sul pianeta che lavorasse ancora con
Win 2000.
Inoltre ho abbandonato, sempre da ieri sera, il Visual Basic 6 e sto
installando il Visual Studio 2008, che contiene Visual C/++ e Visual Basic,
ed adopera la filosofia .NET.
Meglio tardi che mai.
Intanto lavoro per hobby e non mi paga nessuno.
Quindi,  come si usa dire, 'non posso far danni'.
:-))

se a qualcuno puo' interessare : la sostituzione di Visual Basic 6 con
Visual Basic 2008 .NET mi ha risolto automaticamente il problema.
ergo : ormai Visual Basic 6 e  Windows 2000 professional sono da buttare
definitivamente nel cestino e sostituiti con software piu' moderni.

 Win 2000.
Pensa che c'è chi usa ancora Windows 98 o NT4.
-- 
Bob
http://www.webalice.it/argonex/

 un cazzo: chiede aiuto solo per farsi coccolare e benvolere.
Ahim� dalla risposta che mi ha dato mi sa che un po' hai ragione, per� dai..
porta pazienza :-)
-- 
Bob
http://www.webalice.it/argonex/

 
1) quello non ha un problema di impazienza, quello ha un problema
psico-sociale non banale.
2) visto che qui siete tutti esperti ed io un ignorante, allora spiegatemi
il senso di questa frase :
(tradotto dal tedesco)
"nell'evento Keypress viene dato il parameter  Key_Ascii.
Il codice che esce  e' il codice usato da Windows ANSI-code, che non e'
identico al codice DOS. Il nome ASCII vine usato solamente perche' i 128
caratteri ASCII sono parte integrante dello stanbdard ANSI.
(Michael Kofler, Visual Basic 6)
inoltre spiegatemi per favore PERCHE' :se io, con Visual Basic 2008,
quindi .NET  stampo in un Text field, per software,  Chr(x)  mi viene un
certo carattere, mentre invece se io apro un documento con Notepad e faccio 
alt-x mi viene un altro carattere.
Se il sistema winXP e il sistema .NET usano entrambi unicode non dovrebbe
essere lo stesso carattere ?
Illuminate questo povero ignorante e ve ne sono grato.

 Illuminate questo povero ignorante e ve ne sono grato.
Va bene un faretto da 500 Watt?
-- 
Comitato pro-moderazione IGD(M).
Accettansi adesioni.
(Il moderatore giï¿œ ce l'abbiamo).

 
e ce n'e' un'altra sorpresa (che mi fa pensare che molte volte i linuxisti
hanno ragione a definire la Microsoft 'Microsozz').
Senti questa. se tu scrivi ad esempio  :  chr(kod)
e passi per caso sopra questa linea col mouse (si hiama 'hoovering'), un bel
messaggio appare per pochi secondi ricordandoti che il kod deve avere
valore da 0 a 65535.  Oh che bello, dici tu, funziona a meraviglia questo
unicode.
E invece kol ka§§o.  Tu scrivi, tanto per provare,  ad esempio chr(4096)
e l'esecuzione ti da subito una exception 'invalid argument' .
Non accetta valori oltre il 255.
Hai capito  ?
Ora dimmi tu com si puo' programmare e produrre un testo su un text file
che automaticamente un tizio poi puo' copiaincollare e trasportarlo ad
esempio su Word document. Non si puo'. 
Cioe' si puo', ma devi stare attento a produrre caratteri che poi siano
leggibili su un 'text file'. Che sono divrsi da quelli che tu puoi 
mostrare ad esempio sul tuo 'form' in una RichTextBox.
Quindi ti devi fare due tabelle separate per i caratteri, a seconda
dell'uso.
Io mi domando come ha fatto Bill Gate a diventare milionario producendo
Tools per software developers.
E come mai tools come il Borland C/C++ siano dovuti sparire impietosamente
dal mercato.


 porta pazienza :-)
La fai facile: fai rapide comparizioni ogni tot di mesi e, nel frattempo
non sei obbligato a leggere quotidianamente le minchiate che spara John.
Per riuscire a portar pazienza l'ho dovuto plonkare. 
Ormai lo cagano solo i komunisti in vena di proselitismo...

 Ormai lo cagano solo i komunisti in vena di proselitismo...
io invece, che non plonko mai nessuno, mi diverto a vedere quale immagine di
arrogante supponente dai quotidianamente di te.
Tu stai sul ka§§o a tutti, comunisti e non comunisti.
Ma alcuni che ti sono amici sono troppo buoni per dirtelo in faccia.

 Hai capito  ?
Premesso che io di VisualBasic ne so come mia zia, posso ipotizzare che 
le cose non siano in contrasto loro.
Forse la variabile "kod" e' dichiarata come un intero a 16 bit: e per 
tale ragione puo' assumere tutti i 65.536 valori interi compresi tra 0 
e 65.535.
Mantre, la funzione chr() accetta solo argomenti interi compresi tra 0 
e 255.
In pratica, se la funzione chr() si aspetta valori in certo range non 
puoi pensare di potergli passare tutti i valori che puo' assumere una 
variabile intera a 16 bit.
Per fare un esempio che, forse, e' analogo, potrei pensare alla 
funzione arcsin(x): x e' una variabile reale, ma se passo, tramite 
essa, un valore ad arcsin(x) che non e' compreso tra -1 e +1, presumo 
che otterro', anche qui, un "invalid argument".
Oh, pero' ho sparato del tutto a caso.


 
pero ha molto senso.. :-)

 lo ho sempre detto che Windoes � il male! :-)
S�, come sempre voi omosessuali demonizzate noi etero.





LOL!
CVD (o QED che dir si voglia).

 Illuminate questo povero ignorante e ve ne sono grato.
Un faretto da 250W può andare? più potenti non ne ho :)
-- 
Bob
http://www.webalice.it/argonex/

 
per me anche una misera lampadina da 75 watt va bene.  :-)
 

 Ma figurati... io p.e. sono una capra.
Ma scommetto che, al contrario di John, hai *finito* di scrivere qualche
programma e, se ne hai avuto bisogno, hai chiesto aiuto sui NG preposti.