Autore Topic: Errore di Bus  (Letto 3422 volte)

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Errore di Bus
« il: 13 Marzo 2019, 03:06:24 »
Ciao Raga mi esce spesso questo errore.
di cosa si tratta?

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.152
  • Tonno verde
    • Mostra profilo
Re:Errore di Bus
« Risposta #1 il: 13 Marzo 2019, 10:00:15 »
L'interprete ha rilevato che il risultato di un calcolo è troppo grande.

http://gambaswiki.org/wiki/error/overflow
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re:Errore di Bus
« Risposta #2 il: 13 Marzo 2019, 21:17:06 »
Aspita.
sto facendo un programma con molti calcoli, ma è un problema di gambas oppure delle delle risorse hardware insufficienti?

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.152
  • Tonno verde
    • Mostra profilo
Re:Errore di Bus
« Risposta #3 il: 14 Marzo 2019, 00:00:45 »
Non saprei dirti, magari hai superato il valore che la variabile può contenere  :-\

Ho chiesto un parere sulla ML
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.152
  • Tonno verde
    • Mostra profilo
Re:Errore di Bus
« Risposta #4 il: 14 Marzo 2019, 01:00:49 »
Ti ha già risposto Tobias Boege così:
Nell'interprete, ho trovato due posti da dove viene generato questo tipo di errore (potrebbero essercene di più):

   1. Quando un valore Float o Long viene convertito in un singolo ma il valore Float / Long è troppo grande: Stampa CSingle (2 ^ 500)

   2. Quando l'aritmetica delle date produce un valore esterno a 32 bit:
      Stampa DateDiff (CFloat (2 ^ 50), CFloat (1), gb.Second)

L'intestazione (FAST) del compilatore JIT aggiunge un'altra fonte di controlli di overflow.
Senza il codice sorgente - chi può dirlo?


Io non credo che tu usi Fast di Jit, giusto? Quindi è una delle altre due.
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re:Errore di Bus
« Risposta #5 il: 14 Marzo 2019, 02:48:22 »
Grazie Gianluigi.
non uso FAST ne datediff ne long, ma molte float
devo cercare una ad una le float

Grazie alla prossima

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 960
    • Mostra profilo
Re:Errore di Bus
« Risposta #6 il: 14 Marzo 2019, 22:45:45 »
Per mandare in overflow una variabile Float devi avere dei risultati con numeri veramente enoooooormi... cosa stai calcolando? ;D
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re:Errore di Bus
« Risposta #7 il: 15 Marzo 2019, 07:39:03 »
Ciao
arrivano numeri sballati, ecco perchè succede.

sto elaborando dei numeri presi con tesseract e non sempre sono puliti. spesso tesseract collega le cifre e tipo:  257.00  345.00  52 785 ecc..
diventano 2570003450052785 ecc...

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.152
  • Tonno verde
    • Mostra profilo
Re:Errore di Bus
« Risposta #8 il: 15 Marzo 2019, 10:19:18 »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re:Errore di Bus
« Risposta #9 il: 15 Marzo 2019, 10:32:22 »
non lo conoscevo
ora ci guardo
grazie della dritta

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re:Errore di Bus
« Risposta #10 il: 17 Marzo 2019, 21:36:11 »
Ciao Ragazzi
l'errore di bus si ripresenta spesso

ho controllato le variabili float una ad una, le cifre che arrivano hanno massimo 4 migliaia e 4 decimali tipo  3562.2356, poi su queste cifre effettuo calcoli di percentuali e salvo nel database.
non penso che siano i calcoli float.

poi ho controllato le stringhe e ho visto che arrivano stringhe fino a 9000 parole e 140.000 caratteri.
su queste stringhe uso mid e instr per estrapolare i dati
possono essere le stringhe a dare questo errore?

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.152
  • Tonno verde
    • Mostra profilo
Re:Errore di Bus
« Risposta #11 il: 18 Marzo 2019, 19:14:47 »
Come si diceva prima, senza vedere un po di codice cosa vuoi che ti possiamo rispondere.
Se usi delle Array è senz'altro possibile, ma a scatola chiusa come si fa a dire?
Tobias non aveva escluso che ci potessero essere altre ragioni...
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re:Errore di Bus
« Risposta #12 il: 24 Marzo 2019, 22:33:45 »
Ciao raga
gli errori di Bus ogni tanto si ripresentano, a volte il programma gira per giorni senza errori, altre volte dopo 10 minuti arriva errore di segmentazione

ho visto che quando è in esecuzione gambas mi restituisce:
Citazione
QFont::setPixelSize: Pixel size <= 0 (0)

può essere questo oppure qualche componenete a generare errore?

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re:Errore di Bus
« Risposta #13 il: 31 Marzo 2019, 22:29:30 »
Ciao raga
Ho scoperto la parte del codice che mi crea errore di bus
Faccio caricare dei grafici in alcune Picture Box, carica regolarmente le immagini ma ogni tanto si blocca con errore di bus

come posso correggere il codice per evitare l'errore?

Codice: [Seleziona]
Public Sub ImgKitco()

If Not Exist(user.home & "/temp/") Then Mkdir user.home & "/temp/"
             
     
    If m1.SospQuoGBP = "no" And m1.StrKitcgbp Then       '   
        Shell ("wget -N -q --directory-prefix --cookies=off -o " & user.home & "/temp/wg " & m1.StrKitcgbp & " -O " & M1.ScritImma & "/gbp")
        Try PictureBoxgbp.picture = Picture.Load(M1.ScritImma & "/gbp")
    End If
   
    If m1.SospQuoUSD = "no" And m1.StrKitcUSD Then   
       Shell ("wget -N -q --directory-prefix --cookies=off -o " & user.home & "/temp/wg " & m1.StrKitcusd & " -O " & M1.ScritImma & "/usd")
       Try PictureBoxusd.picture = Picture.Load(M1.ScritImma & "/usd") 
    End If
   
    If m1.SospQuoCHF = "no" And m1.StrKitcCHF Then   
        Shell ("wget -N -q --directory-prefix --cookies=off -o " & user.home & "/temp/wg " & m1.StrKitcCHF & " -O " & M1.ScritImma & "/chf")
        Try PictureBoxchf.picture = Picture.Load(M1.ScritImma & "/chf")
    End If
       
 
 
 End If
 
 Catch
m1.MyErr = "Codice " & Error.Code & " - Form " & Me.name & " - Sub " & Error.Where & " - Errore " & Error.Text
 m1.ScriviLog(m1.MyErr)
 
End

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.152
  • Tonno verde
    • Mostra profilo
Re:Errore di Bus
« Risposta #14 il: 01 Aprile 2019, 09:54:43 »
A parte che non mi è chiaro l'uso che qui fai della shell, comunque con Try rendi silenzioso l'eventuale errore su Picture.Load senza catturalo.
Tu catturi solo l'eventuale errore sul comando shell.

Potresti scrivere una cosa del genere per ottenere le anomalie senza interrompere il codice:

Codice: [Seleziona]
  Dim s As String

  If Not Exist(user.home & "/temp/") Then Mkdir user.home & "/temp/"

    s = "wget -N -q --directory-prefix --cookies=off -o " & user.home & "/temp/wg " & m1.StrKitcgbp & " -O " & M1.ScritImma & "/gbp"
    If m1.SospQuoGBP = "no" And m1.StrKitcgbp Then
      Try Shell (s)
      If Error Then debug s
      s = M1.ScritImma & "/gbp"
      Try PictureBoxgbp.picture = Picture.Load(s)
      If Error Then debug s
    End If
    '...
« Ultima modifica: 01 Aprile 2019, 10:19:24 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro