Newsgroup: it.comp.lang.delphi
Titolo: Confronti molto... "variabili"

Ho la necessità di fare alcuni confronti, dove il primo termine, l'operatore
di confronto e il secondo termine sono tutti elementi variabili; il tutto mi
deve restituire sempre vero o falso:
es.
variabile1 = prima variabile da confrontare
variabile2 = seconda variabile da confrontare
Opconfronto = operatore ( può essere =, <>, >= ecc)
risultato=(variable1 opconfronto variabile2)
Ho provato a fare una funzioncina che mi fa questa operazione (vedi sotto) ,
ma non riesco a rendere variabile l'operatore di confronto in maniera
diretta; ho ripiegato allora ad una codifica degli operatori e così
funziona, anche se però è limitata ai soli casi già previsti...
qualcuno sa se è possibile fare diversamente?
Ciao e Grazie anticipatamente
Giuliano
Function
ConfrontaValori(vValore1:variant;vValore2:variant;nTipoConfronto:integer):bo
olean;
Begin
//Confronta due valori in base al tipo di confronto e retituisce VERO o
FALSO
result:=false;
    case ntipoconfronto of
        1: // Confronto con =
            begin
            if vValore1=vValore2 then result:=true;
            end;
        2: // Confronto con <>
            begin
            if vValore1<>vValore2 then result:=true;
            end;
        3: // Confronto >
            begin
            if vValore1>vValore2 then result:=true;
            end;
        4: // Confronto <
            begin
            if vValore1<vValore2 then result:=true;
            end;
        else
    end;
end;
end.

 boolean;
AFAIK non puoi fare nulla di meglio di quanto da te già fatto (almeno per
quanto riguarda il modello) ... sinceramente abbandonerei in anticipo
funzioni di questo tipo (già il fatto che passi 2 variant ...) ma se proprio
vuoi realizzare questo genere di operazione ti consiglierei quantomeno di
mettere il tutto dentro blocchi try/except prima che il valore delle variant
risulti non confrontabile.
Saluti.
--
- Carlo -
c.b...@libero.it



Ah, questi ragazzi che vogliono tutto subito e facile :)  ehehe
scherzo.
Voglio dire che mi sembra che il tuo metodo sia giusto.
Putroppo non è che tutto si possa risolvere con funzioni "magiche":
spesso ci vogliono tanti if e case. De lresto i confronti non sono
tanti (>, <, <>, <=, >=, =, e forse un bel Like).
Giusto una cosa "cosmetica" che piacerà tanto a puristi:
case ntipoconfronto of
        1: Result := vValore = vValore;
        2: Result := vValore <> vValore;
etc...
(niente if then, booleano con booleano).
Ciao,
Massimo.

 etc...
Puristi?  Ma dai è una tecnica "da puristi" questa? E io che mi consideravo
un "ribelle" nello stile (almeno rispetto ai sorgenti della vcl... che,
secondo il mio
"schema mentale" ... sono proprio scritti male!!! (stilisticamente
parlando)).  ;PP
Ciao!! Davide DG

es.
[...]
Sto da poco ripassando il Delphi e quando ho letto questo post ho
pensato a delle funzioni overloaded... Sto sparando una cosa troppo
grossa oppure si potrebbe implementare tale soluzione per questo
problema?
Ciao!
Peppe
_____
ICQ #9759626
http://members.xoom.it/joe
Togli levaccà per contattarmi via email.


In effetti anche l'overload puo' essere una soluzione anche se, nel
caso specifico, forse eccessiva :)
Massimo.
-- 
"Ciao Rex, che cavolo di situazione eh? Due dentro, due fuori, puo' succedere di tutto!"

caso specifico, forse eccessiva :)
Beh, a me interessa non averne sparata una grossa! ;) Mi da fiducia in
me stesso l'essere cosciente di aver potuto applicare qualcosa che ho
appena studiato... beh ripassato! ;)
Grazie! :)


appena studiato... beh ripassato! ;)
Giā, tra l'altro mi chiedevo -- senza trovare risposta -- se in base
teorica sia pių pesante utilizzare delle variant (che odio da buon
typecaster di scuola pascal) o una serie di overload.
Se qualche teorico mi puo rispondere....
Massimo.

typecaster di scuola pascal) o una serie di overload.
I variant, immagino, perche' il riconoscimento del tipo e' fatto
a runtime.  Le funzioni "sovraccaricate" vengono risolte a tempo
di compilazione.  Il problema, pero', e' che si dovrebbe
scrivere, se non ho capito male, una funzione per ogni
combinazione di tipi (cosa un po' pesante).
--
CyberWalkie - walkietalkie(at)
libero.it

combinazione di tipi (cosa un po' pesante).
Infatti il discorso era in base teorica e la mia risposta era: sì in
teoria si puo' fare ma non credo ne valga la pena. 
Ciao,


reintroduce lavorassero in modo dinamico.
Probabilmente sono ancora stanco :))) non reintroduce ma overload
ovviamente.
