Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    22

    VB6 - Individuare valore massimo e minimo..

    Il problema e' sempre il mio solito grafico...Devo individuare una scala per disegnarlo, per farlo ho bisogno di capire quali sono i valori massimi e minimi (per trovare cosi' il rangeA e rangeB) e dividerli per la lunghezza dei 2 assi (x e y)...che in pixel sono entrambi 9000.
    il compilatore mi da errore... QUI (vedi codice) in poi. I valori che mi risultano facendo andare il programma di maxesp,Arr(0),etc... e' di "0", nonostante nel mio file.txt so che non e' cosi'...
    Ecco il codice...

    Private Sub DisegnaPunti()
    Dim x, y As Integer
    Open "C:\prova.txt" For Input As #1
    maxesp = 0
    minesp = 1
    maxtempo = 0
    mintempo = 4000
    Do
    Line Input #1, riga
    Arr() = Split(riga, Chr(9))
    If maxesp <= Arr(0) Then <- QUI
    maxesp = Arr(0)
    End If
    If maxtempo <= Arr(2) Then
    maxtempo = Arr(2)
    End If
    if minesp > arr(0) then
    minesp = arr(0)
    end if
    if mintempo > arr(2) then
    mintempo = arr(2)
    end if
    rangeA = maxesp - minesp
    rangeB = maxtempo - mintempo

    'Trovo il fattore di scala
    a=9000/rangeA
    b=9000/rangeB
    'Scrivo i punti
    Form1.PSet (120 + Arr(0) * a, 120 + Arr(2) * b), vbRed
    Loop Until EOF(1) = True
    End Sub


    C'e' qualche errore forse nella lettura del file?
    Forse ho capito..
    Nel file sono presenti numeri decimali con la virgola "," ma io li devo elaborare con il punto "."
    c'e' forse bisogno d convertire ad esempio i numeri 0,00234 in 0.00234 se no nn riesco ad utilizzarli? Come faccio a fare questo tipo di rimpiazzo?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    758
    il compilatore mi da errore... QUI (vedi codice) in poi. I valori che mi risultano facendo andare il programma di maxesp,Arr(0),etc... e' di "0", nonostante nel mio file.txt so che non e' cosi'...
    Ho la netta sensazione che tu non sappia usare gli ottimi strumenti di debug dell'ambiente di sviluppo.
    La variabile da indagare è "riga", quindi esegui il programma passo-passo con F8 invece di "farlo andare" e verifica cosa contiene effettivamente questa variabile prima di splittarla.
    Poi, quando posti del codice, usa gli appositi tag di formattazione (pulsante #) se vuoi invogliare qualcuno ad esaminarlo.

  3. #3
    Dove sono le dichiarazioni di tutte le variabili? Non mi dirai che usi le dichiarazioni implicite...
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    22
    Originariamente inviato da Grumpy
    Ho la netta sensazione che tu non sappia usare gli ottimi strumenti di debug dell'ambiente di sviluppo.
    La variabile da indagare è "riga", quindi esegui il programma passo-passo con F8 invece di "farlo andare" e verifica cosa contiene effettivamente questa variabile prima di splittarla.
    Poi, quando posti del codice, usa gli appositi tag di formattazione (pulsante #) se vuoi invogliare qualcuno ad esaminarlo.
    mmm si in effetti e' vero...mi limito solamente a scrivere codice e a eseguirlo...L'ignoranza vince sempre! XD Grazie cmq del suggerimento...pero' nn ho capito per quanto riguarda i tag di formattazione...cs intendi?

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    22
    Originariamente inviato da MItaly
    Dove sono le dichiarazioni di tutte le variabili? Non mi dirai che usi le dichiarazioni implicite...
    nono...

    Dim riga As String
    Dim Arr() As String, c, i As Integer
    Dim maxesp, maxtempo, a, b, rangeA, rangeB As Double

    eccole!

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    758
    Originariamente inviato da Alesh
    pero' nn ho capito per quanto riguarda i tag di formattazione...cs intendi?
    Avrai notato che sopra alla finestra in cui si scrivono i post ci sono diversi pulsanti. A qualcosa serviranno, no? Documentati sul regolamento del forum.

    Le dichiarazioni delle variabili così sono sbagliate, come ti farà notare MItaly.

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    22
    Originariamente inviato da Grumpy
    Avrai notato che sopra alla finestra in cui si scrivono i post ci sono diversi pulsanti. A qualcosa serviranno, no? Documentati sul regolamento del forum.

    Le dichiarazioni delle variabili così sono sbagliate, come ti farà notare MItaly.
    beh...me l'immaginavo...alla fine sono ancora alle prime armi. E' sbagliata la dichiarazione e l'utilizzo delle variabili?
    Utilizzando il tasto F8, cioe' analizzando e procedendo manualmente sul codice, sembra sbagliato piu' il ciclio.

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    758
    Le variabili, in VB6, devono essere dichiarate singolarmente, per esempio
    Dim var1 As Double, var2 As Double
    oppure
    Dim var1 As Double
    Dim var2 As Double

    e non
    Dim var1, var2 As Double
    altrimenti var1 viene dichiarata come Variant.

    Utilizzando il tasto F8, cioe' analizzando e procedendo manualmente sul codice, sembra sbagliato piu' il ciclio
    ma hai controllato cosa contiene riga?

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    22
    Originariamente inviato da Grumpy
    Le variabili, in VB6, devono essere dichiarate singolarmente, per esempio
    Dim var1 As Double, var2 As Double
    oppure
    Dim var1 As Double
    Dim var2 As Double

    e non
    Dim var1, var2 As Double
    altrimenti var1 viene dichiarata come Variant.


    ma hai controllato cosa contiene riga?
    ok grazie. Ora ho messo a posto le variabili.
    Dentro al file txt ci sono i seguenti dati divisi dal [tab]

    0 35,167 0
    0 35,214 1
    -0,0037202 35,218 2
    0 35,229 3
    0 35,262 4
    .
    .
    .

    Ho visto che dentro la stringa "riga" c'e' appunto "0 [tab] 35,167 [tab] 0" per quanto riguarda il primo giro del ciclo. Fin qui ci dovremmo essere...var(0) mi restituisce 0, var(1) -> 35,167 etc...

    Ho visto che il problema me lo da quando arriva alla seguente operazione:

    b = 9000 / rangeB

    b prende il valore di "1,#INF" .Che significa?

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    758
    Siccome è
    rangeB = maxtempo - mintempo
    guarda, nel momento dell'errore cosa valgono maxtempo e mintempo.
    Posta di nuovo l'intera routine, formattata con cura.

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.