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

    Chiarimento su struttura condizionale IF

    Salve a tutti, scrivo per cercare di chiarire un mio dilemma. Come si può vedere dalle foto allegate ho creato un piccolo programmino in grado di eseguire 4 banali calcoli su vb6. Premetto inoltre che prima di postare in questa sezione ho fatto una ricerca in questo sito ma senza brillanti risultati. Vi spiego vorrei che il programma in questione non appnea l'utente schiacci il command1button e nell'ipotesi un cui 3 dei campi ove inserire dei dati numerici fossero lasciati vuoti scatterebbe una msgbox con scritto Inserire Valori. Stesso dicasi anche quando nella textbox Saetta il risultato fosse inferiore di 10 scattasse un'ulteriore msgbox con scritto Inserire Corda 2 , cioè una nuova corda. E' fattibile tutto ciò?
    P.s. Rivolto ai moderatori: Ho letto le guide su vb6 ma con tutto ciò non sono stato in grado di sfatare il mio dilemma, ma nel caso lo riteniate opportuno potreste anche cancellarlo.
    Ringrazio a tutti anticipatamente.
    Posto anche il codice nel caso in cui i link non dessero nessun risultato:
    Private Sub command1_click()
    Dim Cateto2 As Double

    If Len(Me.Altezza) = 0 Or Len(Me.Conicità) = 0 Then
    MsgBox "Inserire Valori"
    End If

    Tangente.Caption = Conicità.Text / Altezza.Text
    Arcotangente.Caption = Atn(Tangente)
    Seno.Caption = Sin(Arcotangente)
    Cateto.Text = Corda / 2
    Ipotenusa.Text = Cateto / Seno
    Cateto2 = Sqr(Ipotenusa ^ 2 - Cateto ^ 2)
    Saetta.Text = Ipotenusa - Cateto2
    Diametro.Text = (Corda ^ 2 / (4 * Saetta) + Saetta) / 2


    If Saetta.Text < 10 Then
    Dim Cateto3 As Double
    MsgBox "Inserire una nuova Corda (Corda2)"
    Cateto3 = Sqr(Ipotenusa ^ 2 - (Corda2 / 2) ^ 2)
    Saetta2.Text = Ipotenusa - Cateto3
    End If
    End Sub

    Foto1)
    http://www.megaupload.com/?d=BH4IMD23

    Foto 2)
    http://www.megaupload.com/?d=BH4IMD23
    Progettista o programmatore? Questo è il dilemma!!!

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,324

    Moderazione

    Il linguaggio va indicato anche nel titolo, come da Regolamento.

    Qui l'ho aggiunto io. Tienilo a mente per il futuro.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  3. #3
    Ah dimenticavo ovviamente io ho provato a scrivere il codice, ma la msgbox"inseire i Valori" non mi esce, per lo più dandomi un errore di tipo mismatch.
    @Alka Ok, scusa chiedo venia, una disattenzione da parte mia.
    Progettista o programmatore? Questo è il dilemma!!!

  4. #4
    Ok ragazzi ho risolto in parte ho inserito il seguente code:

    Private Sub command1_click()
    If Conicità.Text = "" Or Altezza.Text = "" Or Corda.Text = "" Then
    MsgBox "Inserire Conicità,Altezza e corda", vbInformation, "ERRORE"
    Else
    Tangente.Caption = Conicità.Text / Altezza.Text
    Arcotangente.Caption = Atn(Tangente)
    Seno.Caption = Sin(Arcotangente)
    Cateto.Text = Corda.Text / 2
    Ipotenusa.Text = Cateto / Seno
    Dim Cateto2 As Double
    Cateto2 = Sqr(Ipotenusa.Text ^ 2 - Cateto ^ 2)
    Saetta.Text = Ipotenusa.Text - Cateto2
    Raggio.Text = (Corda ^ 2 / (4 * Saetta) + Saetta) / 2
    End If
    If Saetta.Text <= 8 Then
    MsgBox "Inserire nuova corda(Corda2)"
    Else
    Dim Cateto3 As Double
    Cateto3 = Ipotenusa.Text ^ 2 - ((Corda2.Text / 2) ^ 2)
    Saetta2.Text = Ipotenusa.Text - Cateto3
    End If
    End Sub


    Mi rimane solo un piccolo problema che le 2 istruzioni if entrano in conflitto tra loro per esattezza: l'if riguardante i campi vuoti e quello dove citavo che se la Saetta.text fosse inferiore o uguale a 8 di apparire la Msgbox ove citavo di inserire una nuova Corda.
    Penso di essere ad un passo dalla soluzione, ma mi manca solo sto passaggio, per il resto ho risolto.
    Progettista o programmatore? Questo è il dilemma!!!

  5. #5
    Ho provato anche con il Select Case ma niente nada de nada, vorrei capire perchè le 2 istruzioni entrano in conflitto?
    Progettista o programmatore? Questo è il dilemma!!!

  6. #6
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    1° devi formattare il codice con il tag CODE (come da Regolamento)
    altrimenti è illeggibile.

    2° L'errore principale che commetti è che viene eseguito del codice anche se i campi dei dati sono vuoti.
    Invece, in questo caso, devi uscire dalla routine, così:

    codice:
    If Conicità.Text = "" Or Altezza.Text = "" Or Corda.Text = "" Then
        MsgBox "Inserire Conicità,Altezza e corda", vbInformation, "ERRORE"
        Exit Sub  
    End If


  7. #7
    Allora, io avrei risolto in parte, ma sono stato costretto a inserire un command_2click, che mi permette non appena il software rileva che il valore Saetta.text è <=8 di ricalcolare la saetta premendo appunto il secondo comando. Tutto ciò mi sembra strano, ma per i miei fini mi accontento anche di poco, quindi va bene così; certo rimarrà sempre il dubbio per qual motivo non ho potuto fare tutto con un pulsante. Spero possiate svelarmi questo dilemma, in tal caso vi ringrazio ugualmente.
    Progettista o programmatore? Questo è il dilemma!!!

  8. #8
    2° L'errore principale che commetti è che viene eseguito del codice anche se i campi dei dati sono vuoti. Invece, in questo caso, devi uscire dalla routine, così:
    Ho eseguito come hai detto tu, ora non mi crea l'errore, però a sua volta non vi avvisa che il valore Saetta è <= 8, insomma non parte la Msgbox di avviso.

    Io l'ho inserito così:

    codice:
    Private Sub command1_click()
    If Conicità.Text = "" Or Altezza.Text = "" Or Corda.Text = "" Then
    MsgBox "Inserire Conicità,Altezza e Corda", vbInformation, "ERRORE"
    Else
    Tangente.Caption = Conicità.Text / Altezza.Text
    Arcotangente.Caption = Atn(Tangente.Caption)
    Seno.Caption = Sin(Arcotangente.Caption)
    Cateto.Text = Corda.Text / 2
    Ipotenusa.Text = Cateto / Seno
    Dim Cateto2 As Double
    Cateto2 = Sqr(Ipotenusa.Text ^ 2 - Cateto ^ 2)
    Saetta.Text = Ipotenusa.Text - Cateto2
    Raggio.Text = (Corda ^ 2 / (4 * Saetta) + Saetta) / 2
    Exit Sub
    End If
    If Saetta.Text <= 8 Then
    MsgBox "Inserire nuova corda(Corda2)", vbInformation, "ERRORE"
    Else
    Dim Cateto3 As Double
    Cateto3 = Sqr(Ipotenusa.Text ^ 2 - (Corda2.Text / 2) ^ 2)
    Saetta2.Text = Ipotenusa.Text - Cateto3
    End If
    
    End Sub
    Progettista o programmatore? Questo è il dilemma!!!

  9. #9
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Continui a non rispettare il Regolamento.
    il codice va formattato.
    Altrimenti obblighi chi legge ad uno sforzo inutile.

    Ma ti costa così tanta fatica rispettare l'identazione del codice?

  10. #10
    Ma io ho inserito il tag del code, aspetta lo riposto spero in maniera corretta questa volta.

    codice:
    Private Sub command1_click()  If Conicità.Text = "" Or Altezza.Text = "" Or Corda.Text = "" Then MsgBox "Inserire Conicità,Altezza e Corda", vbInformation, "ERRORE"  Else Tangente.Caption = Conicità.Text / Altezza.Text  Arcotangente.Caption = Atn(Tangente.Caption)  Seno.Caption = Sin(Arcotangente.Caption)  Cateto.Text = Corda.Text / 2  Ipotenusa.Text = Cateto / Seno  Dim Cateto2 As Double  Cateto2 = Sqr(Ipotenusa.Text ^ 2 - Cateto ^ 2)  Saetta.Text = Ipotenusa.Text - Cateto2  Raggio.Text = (Corda ^ 2 / (4 * Saetta) + Saetta) / 2  Exit Sub  End If  If Saetta.Text <= 8  Then MsgBox "Inserire nuova corda(Corda2)", vbInformation, "ERRORE"  Else  Dim Cateto3 As Double  Cateto3 = Sqr(Ipotenusa.Text ^ 2 - (Corda2.Text / 2) ^ 2)  Saetta2.Text = Ipotenusa.Text - Cateto3  End If   End Sub
    Spero che questa volta sia leggibile, ho letto dal regolamento la procedura per taggare il code spero sia giusto.
    Progettista o programmatore? Questo è il dilemma!!!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.