Newsgroup: it.comp.lang.delphi
Titolo: Cosa strana... con ord e chr.

Ciao  a tutti,
ponendo:
Var Code: Widestring;   Decode: Longint;
E scrivo:
Code := Chr (128);
Visualizzo il simbolo dell'euro; e fin qui nulla di strano; se scrivo 
adesso:
Decode := Ord (Code [1]);
Ottengo che la variabile Decode, assume il valore 8364.
Mi sarei aspettato che avesse restituito il valore 128; come mai questa 
differenza? a cosa č dovuta? Come risolvo il problema?
Grazie in anticipo a chi possa illuminarmi su questa "anomalia".
Cooper.

Grazie in anticipo a chi possa illuminarmi su questa "anomalia".
Non si tratta affatto di un'anomalia.  Le WideString di Delphi servono
a implentare Unicode (UCS2).  Informati su cos'è Unicode e come viene
gestito in Delphi.  Su Google c'è un mare di documentazione specifica.

 ha scritto nel messaggio 
news:s4rd22dv6g65vjvmb...@4ax.com...

Perfetto, chiarito il concetto, rimane solo un problema: posso usare il tipo 
widestring e gestire i caratteri in "modalità ascii" ovvero interni al 
intervallo 0-255.
Nella sostanza il tipo string è limitato a 255 caratteri; ho bisogno di 
estendere questo limite e il widestring mi viene incontro in tal senso.
Ma non voglio che la codifica avvenga secondo il formato unicode.
Come posso ovviare al problema?
Cooper.

Come posso ovviare al problema?
Non puoi.  Le stringhe in Delphi possono essere solo di due tipi:
normali (ASCIIZ, ovvero caratteri del codice ASCII seguiti dal
terminatore nullo) oppure Unicode (anch'esse terminate dal doppio byte
nullo).  Quello di cui tu hai bisogno è probabilmente un array di
altro tipo (di Word, per esempio).  Documentati meglio su Delphi, per
cortesia.


Ok provo con gli array. Mi interessa sapere solo una cosa; se definisco:
Var X: Array [1..N] Of Char
In delphi, il valore massimo assunto da N quanto č?  Per intenderci, nel 
pascal tradizionale la dimensione dello stack era di norma posta a 64 k per 
cui X non poteva sforare questo limite.
Nel caso di delphi, invece il limite massimo quanto č?
Ti ringrazio se ti va di rispondermi.
Cooper.

cui X non poteva sforare questo limite.
Non c'entra il "Pascal tradizionale" (che niente conosce riguardo
stack e roba simile).  Il problema è che nei vecchi modelli di sistemi
operativi a 16 bit, il limite per un segmento era di 64Kb, quindi il
massimo occupabile da un blocco di memoria contiguo era, appunto,
64Kb.  Questo valeva non solo per lo stack, ma soprattutto per il data
segment.  Con Delphi, cambiando il modello di gestione della memoria
del sistema operativo sottostante, questo limite non esiste.
Per intenderci, puoi scrivere tranquillamente:
var
  A: array [1..100000] of Word;

 ha scritto nel messaggio
news:xkCVf.32942$nz4....@tornado.fastwebnet.it...


dell'indice.
Ho male interpretato la domanda precedente.  Ovviamente, il valore
massimo assumibile da N č limitato allo spazio di indirizzamento di
ogni processo, che č a sua volta limitato dalla grandezza della
struttura interna al processore che memorizza gli indirizzi di memoria
(nel caso di architetture a 32 bit č, appunto, 32 bit).

 Ho male interpretato la domanda precedente.
E' proprio per questo che bisogna evitare risposte arroganti. 

E' proprio per questo che bisogna evitare risposte arroganti. 
Spreca le dita per occasioni più importanti.  Certi toni le persone se
li meritano.  Dal canto tuo, evita gli interventi inutili e vedrai che
avrai successo.

 ha scritto nel messaggio 
news:t89o225agt8710qj6...@4ax.com...

Mi sembra che non era questo il caso invece.
E non credo che vi sia correlazione tra le due cose (interventi e successo), 
ma se lo dice lei dovro' crederci.