Newsgroup: it.comp.lang.delphi
Titolo: condizione su array

elem e' un array con indice che parte da 1
per controllare che i sia nel range valido
normalmente scrivo
if i>0 then
	if elem[i]=........ then
ma esiste un modo piu' compatto di scrivere quanto sopra?
ad es.
if (i>0) and (elem[i]=........) then    da' errore con i=0?
-- 
Using Opera's revolutionary e-mail client: 
http://www.opera.com/mail/

 if (i>0) and (elem[i]=........) then    da' errore con i=0?
L'errore e' dovuto a elem[i]=...... perche' per i=0 si va fuori dal 
range di valori consentiti per l'indice dell'array, in quanto l'indice 
parte da 1.
Ciao.
---
Ryo GQI 


Non ho capito molto bene cosa vuoi...
però le funzioni High e Low potrebbero
fare al caso tuo.
Guarda l'help per maggiori info.
Ciao
-- 
ACSH
[D4]
Chi fa da se', fatica il doppio 

 if (i>0) and (elem[i]=........) then    da' errore con i=0?
dipende dalla direttiva di compilazione {$B}.
Il default sarebbe {$B-}, quindi generalmente non dovrebbe dare errore.
Ciao,
Gianluca

 if (i>0) and (elem[i]=........) then    da' errore con i=0?
if i in [Low(elem)..High(elem)] then
Ciao, Antò.

 if i in [Low(elem)..High(elem)] then
Siamo sicuri che costruire un *set* sia performante rispetto al semplice 
controllo di appartenenza di un indice ad un intervallo di valori? :-|
-- 
MARCO BREVEGLIERI
  (
http://www.marco.breveglieri.name
)

 controllo di appartenenza di un indice ad un intervallo di valori? :-|
affatto, anzi, ma chiedeva un modo piů compatto non piů performante,
si potrebbe usare un costrutto case senza prima testare se i č >= Low(elem)
o <= High(elem)
case i of
  1:;//fai quello che devi se i vale 1
  2:;//fai quello che devi se i vale 2
     //e cosi via tutti gli item che bisogna gestire
  else
    //fai quello che devi nel caso il valore di i "is out of bounds"
end;
Ciao, Antň.

 affatto, anzi, ma chiedeva un modo più compatto non più performante
Capisco che tu hai risposto direttamente alla domanda. :-)
Io volevo solamente dire a chi l'ha posta che a volte farsi "seghe 
mentali" sulla presunta compattezza del codice rischiando poi di 
influenzare il funzionamento del programma e sulle sue performance, a 
discapito pure della leggibilità, non è proprio un grande idea. :-D
Voglio dire, la differenza in caratteri digitati tra
   if (i > 0) and (i < n) then ...
e
   if i in [1..n] then ...
è così determinante? :-|
Ciao,
   Marco.


 è così determinante? :-|
A me dà fastidio digitare tutte quelle parentesi tonde ;-)
E poi ho sempre odiato il fatto che il Pascal richieda le parentesi
attorno ai confronti con "and", solo perché confonde l'and booleano con
quello bitwise.  A parte le ciance, può essere determinante utilizzare un
set o meno nel passare un range di valori a una funzione (in realtà, non
vedo altre strade, in certi casi, che non l'uso di un set), ma in ogni
caso, proprio a voler parlare di performance, il primo confronto dovrebbe
essere addirittura più veloce, visto che in codice macchina si tratta
semplicemente di 2 comparazioni, anziché addizioni e sottrazioni dei
limiti del set come nel secondo caso.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Non c'entra nulla...
mi chiedevo perché non scrivevi da tempo. Volevo darti il ben tornato. :-)
"Andrea Laforgia" <x...@xx.xx> ha scritto nel messaggio 
news:e5m9lf$63g$1...@news.newsland.it... 

 A me dà fastidio digitare tutte quelle parentesi tonde ;-)
Io mi ritrovo a digitarle anche in quei linguaggi che non lo richiedono, 
pure in 
VB.NET
. :-)
-- 
MARCO BREVEGLIERI
  (
http://www.marco.breveglieri.name
)
Inviato da X-Privat.Org - Registrazione gratuita 
http://www.x-privat.org/join.php

mi chiedevo perché non scrivevi da tempo. Volevo darti il ben tornato. :-)
Grazie, in realtŕ sono stato impegnato con il nuovo lavoro.
E poi, vista la mia ultima evoluzione professionale, ora seguo piů
assiduamente il ng su Java.