Sempre VB6
Ho un problema: non so quali sono le istruzioni per far si che un risultato numerico se intero rimanga tale, se è decimale venga trasformato nella frazione corrispondente.
In parole povere non so "fare capire" al computer che quando il numero "è con la virgola" lo deve trasformare in frazione.
Grazie in anticipo.
In parole povere non so "fare capire" al computer che quando il numero "è con la virgola" lo deve trasformare in frazione.
Grazie in anticipo.
Risposte
Per quello che vuoi fare te esiste la funzione InStr(string1,string2) che
restituisce la posizione di string2 in string1.Se string2 non e' presente in
string1 allora la funzione restituisce 0.
Percio' potresti fare cosi':
if InStr(string1,",")<> 0 " allora trasforma in frazione string1" else " lascia inalterato"
Archimede
restituisce la posizione di string2 in string1.Se string2 non e' presente in
string1 allora la funzione restituisce 0.
Percio' potresti fare cosi':
if InStr(string1,",")<> 0 " allora trasforma in frazione string1" else " lascia inalterato"
Archimede


OK!
Grazie mille
Grazie mille

Leggendo qua e la alcune funzionalità di VB ne ho trovata una che a quanto pare riproduce l'effetto dell'esplosione del Form...Qualcune ne ha mai sentito parlare??
Esplosione del form?
What?
What?

si..in pratica c'è una funzionalità con cui il forum si ingrandisce tutto assieme e dicono che è come se "esplodesse"...
FORUM???
volevo dire FORM

Si è possibile far esplodere un form utilizzando ActiveX.
E come si fa?? Insomma..se voglio fare un programma eseguibile , lo potrei anche fare?
prova con questo:
Public Sub CloseForm(FRM As Form)
Dim counter As Integer
Dim i As Integer
On Error Resume Next
FRM.Caption = ""
If FRM.WindowState = vbMaximized Or _
FRM.WindowState = vbMinimized Then FRM.WindowState = vbNormal
counter = FRM.Height
Do: DoEvents
counter = counter - 100
If counter < 0 Then Exit Do
FRM.Height = counter
FRM.Top = (Screen.Height - FRM.Height) / 2
Loop
i = 10
counter = FRM.Width
Do: DoEvents
counter = counter - i
If counter <= 0 Then Exit Do
FRM.Width = counter
FRM.Left = (Screen.Width - FRM.Width) / 2
i = i + 2
Loop Until counter <= 100 'Screen.Width
End Sub
Public Sub CloseForm(FRM As Form)
Dim counter As Integer
Dim i As Integer
On Error Resume Next
FRM.Caption = ""
If FRM.WindowState = vbMaximized Or _
FRM.WindowState = vbMinimized Then FRM.WindowState = vbNormal
counter = FRM.Height
Do: DoEvents
counter = counter - 100
If counter < 0 Then Exit Do
FRM.Height = counter
FRM.Top = (Screen.Height - FRM.Height) / 2
Loop
i = 10
counter = FRM.Width
Do: DoEvents
counter = counter - i
If counter <= 0 Then Exit Do
FRM.Width = counter
FRM.Left = (Screen.Width - FRM.Width) / 2
i = i + 2
Loop Until counter <= 100 'Screen.Width
End Sub
non succede niente...
A TUTTI GLI ESPERTI DI VB.....Mi potreste insegnare qualche trucchetto o, meglio, effetto speciale da utilizzare in alcuni miei prog??
Grazie all'infinito!!!
Grazie all'infinito!!!
ecco un trucco speciale: passa a C!



Il linguaggio C lo sto cominciando a studiare a scuola. Per quando riguarda il VB sono un autodidatta, infatti ho imparato tutto da solo. Ovviamente non sono un professionista...
Trucchi in particolare non saprei...
Trucchi in particolare non saprei...
okay...allora facciamo che inizio a sperimentare qualcosa in C. Però in casi di smarrimento conto su di voi!!!!!!!!!!!!
Sinceramente fino ad ora preferisco il VB, però può darsi che in futuro possa cambiare idea...

"eafkuor":
ecco un trucco speciale: passa a C!
Non capisco! Se stai parlando del linguaggio C non vedo relazione. Il linguaggio C è stato un'evoluzione del linguaggio B, ed è stato usato per scrivere i primi sistemi operativi UNIX. Come linguaggio è molto minimalista e sinceramente come effetti grafici si può fare molto poco (soprattutto se si parla di ANSI C). Il linguaggio C ha il predominio su sistemi di tipo real-time ed annessi, perchè il C è famoso per la sua efficienza. Se si vuole fare grafica con il linguaggio C si devono usare i suoi "derivati" nel campo della programmazione ad oggetti, cioè C#, C++ o Java.
"antonio89x":
Ho un problema: non so quali sono le istruzioni per far si che un risultato numerico se intero rimanga tale, se è decimale venga trasformato nella frazione corrispondente.
In parole povere non so "fare capire" al computer che quando il numero "è con la virgola" lo deve trasformare in frazione.
Grazie in anticipo.
dovresti essere + chiaro
se parli di risultato numerico fai capire che hai come input un'operazione. Quindi se hai le due variabili A e B di tipo numerico e il risultato deve essere A/B fai così:
If A mod B > 0 Then MsgBox (A & " / " & B) Else MsgBox (A/B) End If
Se invece non parti da un'operazione, ma parti da un numero, la cosa è + complicata. Per capire se ha decimali non conviente utilizzare il metodo InStr, per 2 motivi: primo non sai con certezza con che formato è scritto il numero (di solito si usa il punto, non la virgola, oppure può avere i separatori delle migliaia), secondo perchè si possono indicare i decimali anche quando sono tutti a zero (nei database sono sempre indicati anche se non ci sono, quindi c'è sempre il separatore dei decimali). Per capire se è un decimale fai così:
If Fix(Cdbl(String1)) <> Cdbl(String1) Then MsgBox "E' decimale, dovresti scrivere la frazione" Else Msgbox String1 'ovvero il numeri intero End If
Il problema è trasformare in frazione. Se ti va bene approssimare a N decimali basta che scrivi
If Fix(Cdbl(String1)) <> Cdbl(String1) Then MsgBox (Fix(Cdbl(String1) * 10^N) & " / " & 10^N) Else Msgbox String1 'ovvero il numeri intero End If
se non ti vuoi approssimare non esiste alcun metodo certo, in quanto esistono infiniti numeri decimali che possono essere trasformati in interi soltanto moltiplicandoli per altri numeri decimali di infinite cifre. Se dai per scondato che il numero "String1" sia il risultato della divisione di 2 numeri interi devi fare:
If Fix(Cdbl(String1)) <> Cdbl(String1) Then For i = 1 To Max If Fix(Cdbl(String1) * i) = (Cdbl(String1) * i) Then Exit For End If Next i If i <= Max Then MsgBox "La frazione è: " & Cdbl(String1) * i & " / " & i Else MsgBox "Frazione non trovata" End If Else Msgbox String1 End If
... dove Max è un numero massimo che stabilisci te, creando così un range di ricerca di possibili divisori (magari 50.000.000, sembra tanto ma la ricerca durerà una decina di secondi)
PS: non ho mai tenuto conto del segno, ma si tratta di lievi modifiche