Autore Topic: [esaurito]possibile bug  (Letto 3978 volte)

Offline giob1642

  • Grande Gambero
  • ***
  • Post: 159
    • Mostra profilo
[esaurito]possibile bug
« il: 24 Luglio 2013, 18:57:17 »
Allego stralcio di un programma, gli eventi non funzionano proprio.
Non riesco a capire se sbaglio od è un bug; fatto si è che funziona solo on mousedown(ma solo in parte).
C'e qualcuno che ha avuto lo stesso errore o sa spiegarmi il perchè.
grazie giorgio
« Ultima modifica: 31 Luglio 2013, 16:26:20 da giob1642 »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: possibile bug
« Risposta #1 il: 24 Luglio 2013, 20:14:22 »
Avrei voluto provare, ma ho ricevuto immediatamente questo errore:

" Cannot open database: Can't connect to MySQL server on '127.0.0.1' (111) "
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline giob1642

  • Grande Gambero
  • ***
  • Post: 159
    • Mostra profilo
Re: possibile bug
« Risposta #2 il: 24 Luglio 2013, 21:37:08 »
aggiungo bente.txt è un file text che descrive gli errori,
*sql è un file di backup di mysql
giorgio

Offline giob1642

  • Grande Gambero
  • ***
  • Post: 159
    • Mostra profilo
Re: possibile bug
« Risposta #3 il: 25 Luglio 2013, 17:04:48 »
Riflettendo su quanto postato nei giorni scorsi ho notato quanto segue:
nel modulo B ho:  public ente as new  string[10,3]
nel fmain ho: public raps as new object[]----------Una classe di oggetti che contiene oggetti textbox e combobox
Raps la creo in runtime e pongo i risultati in una listbox posta in panel2 (i riferimenti sono relativi al prog postato nei giorni scorsi; tutti i dati  dati derivano dal database allegato.
A questo punto se faccio una scelta nella lista raps ho la necessità di stabilire quale raps.text ho scelto pertanto lancio  un on event:
raps_mousedown con la routine seguente:
Public Sub raps_mousedown()              'detta routine funziona solo con mousedown e gotgocus!!!! non capisco perche non funziona con dbllick ,change  ed altri eveni
Dim i As Integer                       
Dim cat As Object
Dim gk, a, b As String
Dim prk As New String[]
i = 0
While raps.hasfocus = False
Inc i
Wend
  cat = raps
    gk = Object.Type(cat)
    If gk = "ComboBox" Then
       a = raps.text
        Stop Event                      'in tal modo stabilisco il raps.text  scelto
                prk = C.Ascegliprogramma("A_finz", "TipoProgrammi", B.ente[i, 1])
'questo mi permette di scegliere dal datbase "A_finz"tra tutti i  "TipoProgrammi" che rispettano B.ente[i, 1] quelli che soddisfano  raps.text
    Else
      textedit1.text = i & "-" & raps.text & " textbox "
      Endif
End
detta routine non funziona in particolare da luogo ad un errore null object riferito a B.ente[i,1] che invece è una lista precedentemente riempita.
se invece escludo detta routine ed eseguo solo prk=...................................allora funziona.
nemmeno inserendo stop event l'errore non si blocca.
qualcuno sa come fare o dirmi il perchè succede ciò?
grazie 

Offline giob1642

  • Grande Gambero
  • ***
  • Post: 159
    • Mostra profilo
Re: possibile bug
« Risposta #4 il: 28 Luglio 2013, 12:31:59 »
torno a chiedere aiuto su qualcosa di strano che mi accade, la cosa e abbastanza difficile da spiegarein poche righe e perciò ho eliminato il database,spero che il prog stralcio  allegato sia comprensibile.
Personalmente non capisco  se l'errore è dovuto agli eventi  (usando observer è lo stesso)
o c'è dell'altro.
grazie giorgio

note : nel prog originale faccio uso di mysql, qui per semplificare l'ho eliminato e quindi troverete alcune variabili di comodo.
nel modulo B ho una lista B.ente[10,3] di cui uso solo i B.ente[mw,1].
In main  creo una lista di oggetti  raps as object[] di cui alcuni sono textbox altri sono combobox; con questa lista riempio il panel1, alcuni combobox  (province,comuni) contengono solo un dato in quanto non è stata ancora scelta la regione di riferimento.

come prima cosa in form.open leggo un dato per es. il 3 e lo riporto nella prima label del panel 2.
nella prima parte di raps_mousedown()  trovo quale elemeto del panel1 e stato interessato dall'evento label2, e cosi tutte le altre che sono riportate come  commenti, da errore .
non riesco a capire il perchè  la lista b.ente diventa un oggetto.
Penso che non sia un modo errato di usare gli eventi, poi ipotizzando che sia giusto come si fa a convertire il nome di un ogg in stringa?
grazie

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: possibile bug
« Risposta #5 il: 28 Luglio 2013, 16:55:25 »
Ho scaricato e provato il tuo nuovo allegato.

Appena lanciato il progetto, è stato sollevato questo errore: "Null object" alla riga:
Label3.text = "Label3" & "-" & i & "-" & b.ente[i, 1]

Il problema sollevato risiedeva nel fatto che il Modulo "B.module" era composto da una sola lettera. Infatti aggiungendo semplicemente un'altra B (BB.module) l'errore è sparito.


Per il resto, quando clicco sui ComboBox, vedo cambiare i valori nella 4a Label. Se clicco sui primi due TextBox, vedo modificare alcuni valori nella 3a e nella 4a Label.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline giob1642

  • Grande Gambero
  • ***
  • Post: 159
    • Mostra profilo
Re: possibile bug
« Risposta #6 il: 28 Luglio 2013, 17:28:42 »
mi sembra un errore banale, ma lo provo subito
grazie

Offline giob1642

  • Grande Gambero
  • ***
  • Post: 159
    • Mostra profilo
Re: possibile bug
« Risposta #7 il: 28 Luglio 2013, 17:48:05 »
vuott sei grande!!!!! funziona veramente, mi piacerebbe sapere come sei arrivato a tale conclusione.
In ogni caso label 4 non si dovrebbe vedere prima di attivare mousedown forse occorre fare una diversa disposizione degli enventi od usare observer, personlmente ho provato a servirmi un object cat ma sembra insesibile agli eventi. e gotfocus non è susseguente a mousedown.
grazie di nuovo
 

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: possibile bug
« Risposta #8 il: 28 Luglio 2013, 18:15:04 »
vuott sei grande!!!!! funziona veramente, mi piacerebbe sapere come sei arrivato a tale conclusione.
 

Non lo so, ho semplicemente provato il tuo progetto  ;D e risolto il banale errore del Modulo..... che poi, come hai potuto verificare in fine, tanto banale non era, poiché se quell'errore non ti fa funzionare un Modulo........ !  :hatecomputer:

« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline giob1642

  • Grande Gambero
  • ***
  • Post: 159
    • Mostra profilo
Re: possibile bug
« Risposta #9 il: 29 Luglio 2013, 10:25:27 »
Il prog. di cui hai visto lo stralcio è un prog. di una cinquantina di form ed ovviamente molte routine sono state messe in moduli dai nomi semplici B,C,D; attualmente avrò sviluppato ca 20.000 righe di codice tutto funziona bene.
Quell'errore che  hai trovato lo cerco da circa 20gg,  ho smontato mezzo gambas ma mai avrei pensato che fosse il nome di un file che uso da sei mesi.
                      Shapò  a Vuott

Spero che puoi levarmi qualche dubbio.
Sul mio prog. stralcio trovi :
public raps as object[]   
                               'con cui indico una matrice di controlli che contiene  textbox e combobox public sub raps_mousedown()
                                'in essa stabilisco il controllo che interessato dal mouse ..................
public sub raps_gotfocus()
                                'dovrebbe essete successiva a raps_mousedown() e riguardare solo il
                                 controllo scelto in raps_mousedown().
in realtà questo non avviene,molti eventi non rispondono nemmeno con observer
non mi prende per es public sub raps_change()
posso usare in questo caso un event menu e come fare?
grazie
giorgio

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: possibile bug
« Risposta #10 il: 29 Luglio 2013, 11:30:23 »
public sub raps_gotfocus()
                                'dovrebbe essete successiva a raps_mousedown() e riguardare solo il
                                 controllo scelto in raps_mousedown().

Forse non ho capito  :-\ , però a me questo avviene: nella 4a Label mostra il valore stringa coerente con il ComboBox cliccato. Se clicco in uno dei due TextBox, vedo il loro richiamo nella 3a e 4a Label.

Insomma, quell'evento viene sollevato regolarmente, mi pare.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline giob1642

  • Grande Gambero
  • ***
  • Post: 159
    • Mostra profilo
Re: possibile bug
« Risposta #11 il: 29 Luglio 2013, 16:58:32 »
sostituisci queste routine  nel mio prog stralcio:
Public Sub raps_MouseDown()
Dim cat As Object
Dim b, c As String
Dim prk As New String[]
Dim i As Integer

Label2.text = ""
Label3.text = ""
 
 i = 0
While raps.hasfocus = False
Inc i
Wend
mw = i
     cat = raps
     gk = Object.Type(cat)
  adk = Last.text
 Label2.text = bb.ente[i, 1] & " - " & adk 

     If gk = "TextBox" Then
       Label3.text = bb.ente[i, 1] & " - " & adk
    'prk = C.Ascegliprogramma("A_finz", "TipoProgrammi", B.ente[mw, 1])
    Endif
End
   Public Sub raps_GotFocus()
   Dim b As String
   Dim prk As New String[]
   If gk = "ComboBox" Then
       b = Last.text
   Label3.text = bb.ente[mw, 1] & " - " & adk & " - " & b
 
   
' '   If adk <> b And b <> B.ente[mw, 1] Then
'   prk = C.Ascegliprogramma("A_finz", "TipoProgrammi", B.ente[mw, 1])
' ' Endif
Endif
  End
il prog funziona ma devi convenire che è sporco mentre dovrebbe essere possibile fare prima mousedown e poi gotfocus od un evento più consono come raps[mw].change
giorgio

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: possibile bug
« Risposta #12 il: 30 Luglio 2013, 16:21:57 »
Ti segnalo la sollevazione dell'errore "Unknown symbol 'Hasfocus' in class Object[]" a questa riga:
 
Codice: gambas [Seleziona]

 While raps.Hasfocus = False


che ho eliminato così:
Codice: gambas [Seleziona]

 While Last.Hasfocus = False
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline giob1642

  • Grande Gambero
  • ***
  • Post: 159
    • Mostra profilo
Re: possibile bug
« Risposta #13 il: 30 Luglio 2013, 20:36:36 »
Non capisco in merito a cosa, io utilizzo While raps.hasfocus = False per stabilire  qual'è l'i della matrice di controlli raps e mi pare giusta.
Quello che mi sembra formalmente scorretto è che prima uso mausedown per stabilire su quale raps[?]  ho premuto il mouse, successivamente gotfocus dovrebbe darmi la regione scelta per es Lombardia.
In realatà gambas tratta i due eventi come contemporanei  e 
 If gk = "ComboBox" Then
è solo un escamotage  sporco per rendere uno susseguente all'altro ma a mio avviso  è formalnente scorretto
 

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: possibile bug
« Risposta #14 il: 30 Luglio 2013, 23:38:41 »
Non capisco in merito a cosa, io utilizzo While raps.hasfocus = False per stabilire  qual'è l'i della matrice di controlli raps e mi pare giusta.

L'errore viene sollevato, semplicemente perché la Classe Object[ ] non possiede la proprietà ".HasFocus".


....prima uso mausedown per stabilire su quale raps[?]  ho premuto il mouse, successivamente gotfocus dovrebbe darmi la regione scelta per es Lombardia.
In realatà gambas tratta i due eventi come contemporanei....  
.....rendere uno susseguente all'altro ma a mio avviso  è formalnente scorretto
 
Per ottenere un evento da mouse successivo al .MouseDown, puoi usare l'evento .MouseUp.
Insomma, una cosa a titolo esemplificativo così:
Codice: gambas [Seleziona]

Public Sub raps_MouseUp()
  
  Print Object.Type(Last)
  
End
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »