Newsgroup: it.comp.lang.pascal
Titolo: Lo zen e l'arte delle stringhe in Pascal

Qualche tempo fa mi dilettavo a programmare in pascal, adesso onestamente è
un po' che non ci faccio più molto, comunque ne parlavo qualche giorno fa
con un mio amico che si ritiene un guru del Pascal  e in università durante
un pausa fra una lezione  e l'altra parliamo delle stringhe  confrontando C
e Pascal
Dico che le stringhe in C sono terminate e in Pascal essendo un array di
char il cui primo byte ne indica la lunghezza, quindi limitata a 255
caratteri: non l'avessi mai detto, mi ha mangiato, mi ha detto che in Pascal
le stringhe sono come in C
Niente provo a scrivere un programmino per verificare come sono le stringhe
in Pascal ovvero definisco un stringa con
str : string[25];
e cerco poi, dovo averci scritto qualcosa ad accedere al primo byte
ottenendone la lunghezza
len0 := ord(str[0]);
il tutto funziona, poi provo a modificare la stringa mettendone una più
corta e write me la scrive come più corta, accedo agli elementi successivi
alla mia stringa che è lunga 13 caratteri (vi alscio immaginare cos'è! :-) )
e il 14 era il 14 della sringa precedente, ovvero non è un terminatore, idem
per i succesivi...
Insomma gioco un po' cambiando il valore del primo byte ottenendo sempre il
risultato voluto, fiero mostro il programma al mio amico che sostiene che il
programma funzioni solo perchè compilato con Turbo Pascal che un compilatore
inutile di una ditta che è fallita e che nel pascal serio le stringhe sono
come in C, non contento provo a compilarlo in Linux con il compilatore GNU
presente in tutte le distribuzioni e funziona, mi dice che è un compilatore
inutile perchè probabilmente imita il Turbo Pascal allora lo compilo con il
medesimo compilatore GNU sotto Solaris sulla mia SUN e funziona...
Lo provo sul PC compilandolo per DOS con FreePascal da riga di comando e,
senza specificare come per gli altri alcuna opziona particolare, compila
perfettamente...
Il mio amico potenziale GURU mi dice che i compilatori che ho usato sono
tutti fuori standard perchè nel vero Pascal  e soprattutto col suo
compilatore  tutto ciò non funziona...
Adesso la domanda è ho 4 compilatori pascal tutti fuori standard io o il mio
amico è un cretino? :-)
A parte gli scherzi, come sono le stringhe in Pascal?
ciao
tira

In Turbo Pascal l'elemento [0] della stringa č utilizzato per memorizzare la
sua lunghezza.
es.
var
s : string [4];
Se ad es.  s := 'Ciao' in questo caso il primo byte della stringa ([0])
contiene il valore 4.
Ciao

 - rimuovi XXX x rispondere    ICQ #8814554
                FORSE NON TUTTI SANNO CHE ...
Se tutti i salmoni catturati in Canada in un anno fossero messi uno di
seguito all'altro lungo il Deserto del Sahara, la puzza sarebbe
terribilmente insopportabile.

le stringhe in pascal infatti non sono come in C 
dal semplice fatto che in C il tipo stringa non esiste
ma te lo devi creare con un array di caratteri
es:
c:
	char parola[10];
pascal :
	var	
	  parola : string[10];
La differenza stà che nel primo caso creo un array di caratteri di 10
posti ma solo 9 sono disponibili all'utente x' l'ultimo è occupato dal
carattere di terminazione (\o), il quale indica al compilatore che
l'array è finito.
Nel secondo invece allochi una variabile stringa di 10 elementi (tutti
utilizzabili) nella memoria.
On Mon, 22 May 2000 17:42:14 GMT, ema <ece...@XXXpenguinpowered.com>
wrote:
