Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it L'avatar di tyson69
    Registrato dal
    Jan 2005
    Messaggi
    154

    [VB&]Combo....bug?

    Ciao a tutti!
    Sto caricando una combo per la selezione di una porta con un ciclo....
    codice:
    For i = 1 To 65536
                Cmbporta.AddItem i
            Next i
    fin qui nulla di strano verrebbe da dire....
    ma il prob è che non è possibile caricarle poichè il numero max di item è 65655!!!!

    Soluzioni?(a parte cambiare controllo)

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    Scusa ma...si parla di porte seriali??

    Che senso ha rendere selezionabile un simile numero di elementi?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    798
    se leggessi il tipo di dato utilizzabile non ci sarebbe nulla di strano, è integer e quindi sei limitato a quel range di valori.
    Ans.

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    Infatti non credo sia ravvisabile un "bug" vero e proprio nel controllo, quando il fatto che la presenza di così tanti elementi all'interno di una ComboBox renda totalmente ingiustificato l'uso di questo componente, soprattutto quando gli elementi selezionabili sono progressivi come nel caso di specie.

    Che siano porte seriali o porte TCP, mi sembra sia più utile usare una banale TextBox in questo caso per consentire l'input diretto della porta da utilizzare.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  5. #5
    Utente di HTML.it L'avatar di tyson69
    Registrato dal
    Jan 2005
    Messaggi
    154
    Se aveste sprecato 15 secondi per fare due prove prima di rispondere....
    provate:
    codice:
     For i = 1 To 70000
                Cmbporta.AddItem i
            Next i


    ...e poi:
    codice:
    For i = 1 To 65537
                Cmbporta.AddItem i
            Next i


    ...e poi ditemi....

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    Originariamente inviato da tyson69
    Se aveste sprecato 15 secondi per fare due prove prima di rispondere....
    Ho dedicato molto più di 15 secondi per scrivere la mia risposta, ma dato che non ti piace accettare suggerimenti (e a questo punto non capisco per quale motivo dovresti chiedere aiuto)...forse hai ragione, è stato davvero tempo sprecato.

    Originariamente inviato da tyson69
    provate ...e poi ditemi....
    So che continuo a sprecare tempo, dato che VB6 ce l'ho installato in una macchina virtuale e quindi richiede un certo impegno per essere avviato...

    Non so cosa vuoi cercare di dimostrare, secondo me non hai nemmeno letto quello che ti abbiamo scritto, ad ogni modo il tuo codice restituisce un errore di overflow in entrambi i casi.

    Quindi, a questo punto, qual è la conclusione? :master:
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

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

    Errata corrige

    Chiedo scusa, mi correggo, avevo dichiarato una variabile erroneamente (l'abitudine ad usare linguaggi differenti).

    Usando una variabile Long per il ciclo di riempimento non avviene l'overflow.

    Rimane comunque ferma la mia domanda finale, cioè..."quindi?"
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  8. #8
    Utente di HTML.it L'avatar di tyson69
    Registrato dal
    Jan 2005
    Messaggi
    154
    ok, ok....
    rimanendo intesi che:la variabile è di tipo long, il tipo di controllo che utilizzerò sarà sicuramente una textbox....
    la discussione che ho aperto era relativa al comportamento "strano" della combo: infatti con questo codice
    codice:
    Dim i As Long
    For i = 1 To 65536
                Cmbporta.AddItem i
            Next i
    la combo non riesce ad aprire la tendina, mentre con questo codice
    codice:
    Dim i As Long
    For i = 1 To 65537
                Cmbporta.AddItem i
            Next i
    la combo viene visualizzata tipo una list....

    ti risulta??

  9. #9
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    Originariamente inviato da tyson69
    la combo non riesce ad aprire la tendina, mentre con questo codice
    la combo viene visualizzata tipo una list....
    ti risulta??
    Non ho controllato, ad ogni modo suppongo che questo comportamento sia dovuto al fatto che la ComboBox è un controllo composito e nella finestra a discesa non è possibile elencare un numero elevato di elementi oltre la soglia dell'intero.

    Esistono limitazioni simili anche in altri controlli come il TextBox impostato a multilinea che non accetta a volte più di 65000 "e rotti" caratteri.

    Alcune di queste limitazioni dipendono inoltre dal sistema operativo.

    Dire che si tratta di un bug è arduo in quanto suppongo che vi sia una ragione nel limite e che tale limite non venga esteso poichè, come nel caso che abbiamo esaminato, il controllo non viene utilizzato correttamente per i propri scopi: che senso ha riempire una ComboBox con così tanti elementi?

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  10. #10
    Utente di HTML.it L'avatar di tyson69
    Registrato dal
    Jan 2005
    Messaggi
    154
    No, infatti se tu ciclassi fino a 65550 (x es.) il controllo "riprende la normalità".... :master:

    Boh...

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.