Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [DELPHI] Funzione InRange

    Siccome su internet non ho trovato nulla che rispondesse alle mie esigenze...

    Qualcuno di voi sa spiegarmi come utilizzare la funzione InRange?

    il problema è questo:

    inserisco un numero in un TEdit, clicco sul Bytton1 a questo punto sul click

    devo controllare se il numero inserito nel TEdit appartiene ad un determinato range di valori

    che ho nel db.

    ho provato cn inrange ma mi da sempre valore True quindi visualizzo sempre lo stesso
    message....

    mi potete aiutare?

  2. #2
    ragaaaaaa..... Nessuna risposta?.... :master:

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,477
    Originariamente inviato da greatciccio
    Qualcuno di voi sa spiegarmi come utilizzare la funzione InRange?
    Serve per verificare se un valore numerico ricade in un determinato range, come suggerisce il nome della funzione stessa.

    Nel tuo caso, l'errore può essere dovuto all'uso sbagliato della funzione.

    Posta il codice, così è possibile esaminarlo e suggerire le dovute correzioni.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    Finalmente una risposta... perchè continuo a , non riesco a trovare nulla su internet che mi spiega bene il funzionamento...

    ... spero di riuscire a risolvere il problema...

    codice:
    function TFMain.InRange(const AValue, AMin, AMax: Integer): Boolean;
    var
      Valore, Min, Max : Integer;
    begin
      Valore:= 150;
      Min:= 100;
      Max:= 500;
      if Result = True then
        ShowMessage('.:OK:.')
      else
        ShowMessage('.:NO:.');
    end;
    
    procedure TFMain.Button1Click(Sender: TObject);
    begin
      InRange(150,100,500);
    end;
    
    end.

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,477
    Quello che hai scritto non ha molto senso.

    Esiste già una funzione InRange, mentre tu l'hai riscritta. Perché?

    Inoltre, senz'altro il compilatore ti restituisce dei warning, poiché nella tua funzione assegni dei valori alle variabili locali, poi in base al risultato della funzione (che hai scritto tu, e che pertanto sei tu a dover determinare e valorizzare, cosa che non succede) visualizzi un messaggio di conferma.

    Prova a enunciare la logica di ciò che hai scritto riga per riga e ti accorgerai senz'altro dove si trovano gli errori.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  6. #6
    lo so che forse non ha molto senso però questo è il max dei suggerimenti che sono riuscito a trovare.. ovvero:

    Dichiarare la funzione InRange;

    function InRange(const AValue, AMin, AMax: Integer): Boolean;

    e poi riscriverla.... cmq ora ti spiego meglio ciò che succede...

    all'esecuzione del esempio in discussione io clicco sul Button1 e cosi mi controlla la funzione
    ma il risultato è sempre falso quindi mi appare sempre

    ShowMessage('.:NO:.');

    il compilatore non mi da nessun warning, anzi il compilatore mi da dei warning se non la riscrivo la funzione... help me pls....

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,477
    Originariamente inviato da greatciccio
    lo so che forse non ha molto senso però questo è il max dei suggerimenti che sono riuscito a trovare.. ovvero:
    Sono suggerimenti errati, oppure non li hai compresi bene.

    Originariamente inviato da greatciccio
    Dichiarare la funzione InRange;
    function InRange(const AValue, AMin, AMax: Integer): Boolean;
    La funzione esiste già: vedi qui.

    Originariamente inviato da greatciccio
    e poi riscriverla....
    La funzione esiste già, quindi non c'è alcun motivo di riscriverla.

    Originariamente inviato da greatciccio
    all'esecuzione del esempio in discussione io clicco sul Button1 e cosi mi controlla la funzione
    ma il risultato è sempre falso quindi mi appare sempre
    Quando fai clic sul pulsante, viene eseguita la funzione che hai scritto tu, la quale memorizza in variabili interne valori fissi, indipendentemente dai valori che passi come parametro, quindi già qui questa funzione ha poco senso (anche chiamandola con valori diversi, si otterrebbe comunque lo stesso risultato).

    In secondo luogo, il messaggio che mostri dipende dal valore della variabile (implicita) "Result", che non è stata valorizzata, ed è la variabile da inizializzare tramite codice con il valore di ritorno che deve avere la funzione (dopo aver controllato il range, visto che hai scritto tu la funzione in questione, devi impostare quella variabile in base al fatto che l'appartenenza al range, secondo la logica che hai codificato, sia verificata oppure no). Nel tuo codice non c'è nulla di tutto questo.

    Originariamente inviato da greatciccio
    il compilatore non mi da nessun warning
    Francamente, non ci credo manco un po'...

    Originariamente inviato da greatciccio
    anzi il compilatore mi da dei warning se non la riscrivo la funzione... help me pls....
    Ripeto: la funzione esiste già, quindi non devi ricodificarla, soprattutto in modo errato.
    Usala e basta, e se ti vengono restituiti degli errori, provvedi a segnalarli in modo da capire qual è il problema "reale".

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  8. #8
    ALKA.......!!!!! Grazie per la tua risposta è servita tanto a farmi capire l'errore dove stava... in pratica sbagliavo la funzione ma sono riuscito a risolvere il problema.......



    e l'ho risolto in questo modo... in pratica sbagliavo tutto......

    codice:
    function TFMain.InRange(const AValue, AMin, AMax: Integer): Boolean;
    var  A,B: Boolean;
    begin
      A := (AValue >= AMin);
      B := (AValue <= AMax);
      Result := B and A;
    end;
    
    procedure TFMain.Button1Click(Sender: TObject);
    Var
      Valore, Min, Max: Integer;
    begin
      Valore:= 60;
      Min:= 100;
      Max:= 500;
      if InRange (Valore, Min, Max) = True then
        ShowMessage('.:OK:. = ' +IntToStr(Valore))
      else
        ShowMessage('.:NO:. = ' +IntToStr(Valore));
    end;
    
    end.

    Credo che la voglia di scappare da un paese con ventimila abitanti vuol dire che hai voglia di scappare da te stesso, e credo che da te non ci scappi neanche se sei Eddie Merckx. Credo che non è giusto giudicare la vita degli altri, perché comunque non puoi sapere proprio un ca**o della vita degli altri

  9. #9
    commettevo un errore da pivello!!!! la funzione la dovevo riscriverla per forza.....

    non implementavo le uses con math.... che stupido.. cmq ora tutto bene.. funziona alla grande...

    Grazie...

    ciao
    Credo che la voglia di scappare da un paese con ventimila abitanti vuol dire che hai voglia di scappare da te stesso, e credo che da te non ci scappi neanche se sei Eddie Merckx. Credo che non è giusto giudicare la vita degli altri, perché comunque non puoi sapere proprio un ca**o della vita degli altri

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.