Newsgroup: it.comp.lang.delphi
Titolo: E' un array ???

Ciao a tutti !!
qualcuno sà dirmi come posso fare a sapere se una variabile è un Array ????
Mi sarebbe utile anche sapere come potrei verificare se una Variabile è di
tipo Integer, Double, String ecc...
In poche parole una cosa del tipo :
            if myVar is Integer then .........
Grazie in anticipo!!!!

 qualcuno sà dirmi come posso fare a sapere se una variabile è un Array
????
...
Se la dichiari come array rimane tale.
Se e' un variant, dall'help di D5:
var  V: Variant;
begin
  ...
  if TVarData(V).VType = varEmpty then ...;
  ...
  VarClear(V);
  TVarData(V).VType := varInteger;
  TVarData(V).VInteger := 1234567;
  ...
end;
v. nell'help Variant support routines (e system.pas).
Saluti
Paolo Arosio

 Se e' un variant, dall'help di D5:
Facciamo il conto non sia un Variant.
Per esempio con VB io farei  : if IsNumeric(myVar) then......
Con  Java farei : if (! isNaN(myVar) {.........
Esiste una funzione anhe in Delphi ?????
Ho fatto un esempio per un dato numerico, ma lo stesso sarebbe per una
stringa o un Array ( in VB : IsArray.....)

E se non sapessi se è un Array e voglio solo verificare se è un Array ????
Posso chiederti a cosa ti serve ?
-- 
The Follet

Va bč non pensiamo all'Array era solo un esempio.
Mi interesserebbe di piů sapere come posso fare a riconoscere se in una
variabile ci sia un intero o meno......
Perfavore rispondete a questo!!!!
Grazie!!!!!

 ha scritto nel messaggio
news:w3dA7.57470$1H1.6...@news.infostrada.it...

La tua domanda ha un senso solo se la variabile che vuoi testare č un Variant.
Se č questo che ti serve, la prima cosa che mi viene in mente č di fare un
typecast di quella variabile, in un blocco try..except e gestire l'eccezione.
var
i: Variant;
j: Integer;
begin
 i := 'pippo';
 try
  j := Integer(i);
  except ShowMessage('La variabile non č un intero!');
 end;
end;
Spero di esserti stato utile.
Jax

Bč a questo ci avevo pensato........
Ma facciamo il caso che ho un valore digitato in un controllo TEdit.
Non sň a priori se questo valore č un numero.
Devo per forza far alzare un eccezione per verificare se quello č un numero
??????
Scusa la mia insistenza, ma a me piace andare fino in fondo alle cose!!!!
Grazie!!!

 Scusa la mia insistenza, ma a me piace andare fino in fondo alle cose!!!!
Dunque, non sarò certo io a darti la matematica certezza, però posso dirti che
le soluzioni variano da problema a problema.
Per intenderci, se mi parli di stringhe, e in più di TEdit, ci sono molteplici
soluzioni:
1) Impedire di scrivere caratteri diversi da cifre (nell'evento OnChange)
2) Controllare carattere per carattere la stringa alla fine (for i := 1 to
Length(Edit1.Text) do... if Edit1.Text[i] < '0' or Edit1.Text[i] > '9' then....)
3) Usare l'exception succitata
Voglio dire, se mi dici che vuoi controllare se è un Array, è una cosa, se mi
dici che vuoi controllare se un Variant è una stringa o un numero, è un'altra,
se vuoi controllare un valore in una TEdit, è un'altra ancora :)))
Jax

??????
No, non dovresti, pero' alla fine sacrifichi lo stile, per
fare prima :)
Le eccezioni dovrebbero essere usate solo per gestire casi
eccezionali e non controllabili.  Tu potresti, per esempio,
scrivere una funzione IsInteger che accetti una stringa e
restituisca True o False.
Con D6 sono state introdotte delle funzioni specifiche per
testare questi casi, tipo TryStrToFloat.
-- 
The Follet

 Non sò a priori se questo valore è un numero.
E in questo caso quale e' la variabile?
cmq, puoi, senza alzare eccezioni, usare Val (v. help).
In ogni caso non vedo cosa ci sia di male nell'alzare un'eccezione. Se
l'utente *deve* inserire un numero, puoi sempre utilizzare un controllo
che consente solo l'inserimento di cifre.
Ovviamente, dovrebbe anche poter inserire '-1.375E+4' (imho)
Saluti
Paolo Arosio