Torna indietro   Hardware Upgrade Forum > Software > Programmazione

ASUS ROG Swift OLED PG49WCD: quando QD-OLED e ultrawide si fondono
ASUS ROG Swift OLED PG49WCD: quando QD-OLED e ultrawide si fondono
Da ASUS un monitor particolare ma molto completo: principalmente indirizzato al videogiocatore, può essere sfruttato con efficacia anche per attività creative e di produzione multimediale
Dreame L10s Pro Ultra Heat: la pulizia di casa tutta sostanza
Dreame L10s Pro Ultra Heat: la pulizia di casa tutta sostanza
Il nuovo robot aspirapolvere domestico di Dreame abbina funzionalità complete a un moccio flottante che raggiunge al meglio gli angoli delle pareti. Un prodotto tutto in uno semplice da utilizzare ma molto efficace, in grado di rispondere al meglio alle necessità di pulizia della casa
HONOR Magic6 Pro: come funziona Magic Portal, il modo ''intelligente'' di condividere
HONOR Magic6 Pro: come funziona Magic Portal, il modo ''intelligente'' di condividere
HONOR ha introdotto con Magic6 Pro la funzione Magic Portal che consente, tramite intelligenza artificiale, di suggerire scorciatoie agli utenti in modo da permettere di passare e accedere facilmente ai servizi tra app e dispositivi con un semplice tocco. Vi spieghiamo qui come funziona
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 04-02-2008, 20:25   #21
Bonfo
Senior Member
 
L'Avatar di Bonfo
 
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
Quote:
Originariamente inviato da Ufo13 Guarda i messaggi
Minchia Bonfo avevamo appena iniziato a cambiare tutto in Cell e hai ri-revertato i cambiamenti fatti

L'idea e` usare Cell ovunque.
Azz... ho fatto un macello

Ok... se non l'avete ancora fatto metto tutto a Cell, anche se secondo me ci complica la vita.
Ma se lo dice il God in persona

EDIT:
Io sto ancora cercando di semplificare il GridTestCase, la sto prendeno un po' alla lontana mettendoa posto TestGrid, ma cosi' dovremmo avere molto piu' controllo sui test in Grid, rendendoci piu' semplice il GridTestCase e di conseguenza l'80% dei test fatti fino ad ora.
Sono esentato dal Refactor This oppure prima li faccio fuori tutti e poi posso andare avanti ?!
__________________
Software engineer
Bonfo's Blog

Ultima modifica di Bonfo : 04-02-2008 alle 20:29.
Bonfo è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2008, 21:40   #22
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13826
Era :

it.diamonds.grid.action.CrushByChestAction.java Linea 62

Codice:
    private void getAdjacentCrushableGems(Droppable crushSourceDroppable,
        DroppableList adiacentCrushableGems)
    {
        // TODO: REFACTOR THIS

        Region sourceCell = crushSourceDroppable.getRegion();

        if(sourceCell.getLeftColumn() >= 1)
        {
            getLeftOrRightAdjacentCrushableGems(crushSourceDroppable,
                adiacentCrushableGems, GO_LEFT);
        }

        if(sourceCell.getRightColumn() < getGrid().getNumberOfColumns() - 1)
        {
            getLeftOrRightAdjacentCrushableGems(crushSourceDroppable,
                adiacentCrushableGems, GO_RIGHT);
        }

        if(sourceCell.getTopRow() >= 1)
        {
            getUpOrDownAdjacentCrushableGems(crushSourceDroppable,
                adiacentCrushableGems, GO_UP);
        }

        if(sourceCell.getBottomRow() < getGrid().getNumberOfRows() - 1)
        {
            getUpOrDownAdjacentCrushableGems(crushSourceDroppable,
                adiacentCrushableGems, GO_DOWN);
        }
    }
E'

Codice:
    private void getAdjacentCrushableGems(Droppable crushSourceDroppable,
        DroppableList adiacentCrushableGems)
    {
            getLeftOrRightAdjacentCrushableGems(crushSourceDroppable,
                adiacentCrushableGems, GO_LEFT);
            
            getLeftOrRightAdjacentCrushableGems(crushSourceDroppable,
                adiacentCrushableGems, GO_RIGHT);

            getUpOrDownAdjacentCrushableGems(crushSourceDroppable,
                adiacentCrushableGems, GO_UP);

            getUpOrDownAdjacentCrushableGems(crushSourceDroppable,
                adiacentCrushableGems, GO_DOWN);
    }
E ho spostato i controlli nei metodi getUpOrDownAdjacent.... getLeftOrRight...


ad esempio in getUpOrDown... è stato aggiunto:

Codice:
        if(row + direction.deltaY() < 0 || row + direction.deltaY() > getGrid().getNumberOfRows() - 1)
        {
            return;
        }
Analogo è stato fatto nella getLeftOrRight.... ma con le colonne al posto delle righe

Ciao
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2008, 21:44   #23
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: California
Messaggi: 11781
Quote:
Originariamente inviato da Bonfo Guarda i messaggi
Sono esentato dal Refactor This oppure prima li faccio fuori tutti e poi posso andare avanti ?!
La seconda che hai detto
fek è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2008, 21:45   #24
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: California
Messaggi: 11781
Quote:
Originariamente inviato da AnonimoVeneziano Guarda i messaggi
E ho spostato i controlli nei metodi getUpOrDownAdjacent.... getLeftOrRight...


ad esempio in getUpOrDown... è stato aggiunto:

Codice:
        if(row + direction.deltaY() < 0 || row + direction.deltaY() > getGrid().getNumberOfRows() - 1)
        {
            return;
        }
Analogo è stato fatto nella getLeftOrRight.... ma con le colonne al posto delle righe

Ciao

Bene, mi piace molto, mi rendi ora piu' chiaro quell'if? E' troppo lunghetto.
fek è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2008, 22:02   #25
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13826
Quote:
Originariamente inviato da fek Guarda i messaggi
Bene, mi piace molto, mi rendi ora piu' chiaro quell'if? E' troppo lunghetto.
Mmm, mi è venuta in mente questa soluzione :

La funzione da rifattorizzare diventa :

Codice:
    private void getAdjacentCrushableGems(Droppable crushSourceDroppable,
        DroppableList adiacentCrushableGems)
    {
            getLeftAndRightAdjacentCrushableGems(crushSourceDroppable,
                adiacentCrushableGems);

            getUpAndDownAdjacentCrushableGems(crushSourceDroppable,
                adiacentCrushableGems);
    }
e le due funzioni getUpAndDown... e getLeftAndRight... diventano :

Codice:
    private void getUpAndDownAdjacentCrushableGems(Droppable source,
        DroppableList adiacentCrushableGems)
    {
        int row = source.getRegion().getTopRow();
        Direction direction = GO_UP;
       
        if(row + direction.deltaY() >= 0)
        {
           for(int column = source.getRegion().getLeftColumn(); column <= source.getRegion().getRightColumn(); column++)
           {
                Droppable toTest = getGrid().getDroppableAt(row + direction.deltaY(), column);
                tryToAddGemToCrushableGems(toTest, source, adiacentCrushableGems);
           }
        }

        row = source.getRegion().getBottomRow();
        direction = GO_DOWN;

        if(row + direction.deltaY() <= getGrid().getNumberOfRows() - 1)
        {
           for(int column = source.getRegion().getLeftColumn(); column <= source.getRegion().getRightColumn(); column++)
           {
                Droppable toTest = getGrid().getDroppableAt(row + direction.deltaY(), column);
                tryToAddGemToCrushableGems(toTest, source, adiacentCrushableGems);
           }
        }
    }


    private void getLeftAndRightAdjacentCrushableGems(Droppable source,
        DroppableList adiacentCrushableGems)
    {
        int column = source.getRegion().getLeftColumn();
        Direction direction = GO_LEFT;
        
        if(column + direction.deltaX() >= 0)
        {
            for(int row = source.getRegion().getTopRow(); row <= source.getRegion().getBottomRow(); row++)
            {
                Droppable toTest = getGrid().getDroppableAt(row, column + direction.deltaX());
                tryToAddGemToCrushableGems(toTest, source, adiacentCrushableGems);
            }
        }
        
        column = source.getRegion().getRightColumn();
        direction = GO_RIGHT;
        
        if(column + direction.deltaX() <= getGrid().getNumberOfColumns() - 1)
        {
            for(int row = source.getRegion().getTopRow(); row <= source.getRegion().getBottomRow(); row++)
            {
                Droppable toTest = getGrid().getDroppableAt(row, column + direction.deltaX());
                tryToAddGemToCrushableGems(toTest, source, adiacentCrushableGems);
            }
        }
    }
Meglio o peggio?

Il numero di righe delle funzioni UpAndDown e LeftAndRight rimane praticamente invariato (2 righe in più)

Ciao
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2008, 22:06   #26
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: California
Messaggi: 11781
Preferivo l'altra. Le due funzione getUpAndDown... e l'altra sono troppo complesse. Non si capisce che cosa stiano facendo solo leggendo il codice.
Lo dice anche il nome secondo stesso secondo me. Io dividerei ognuna in due. Puoi lavorarci un po'?
fek è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2008, 22:10   #27
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13826
Quote:
Originariamente inviato da fek Guarda i messaggi
Preferivo l'altra. Le due funzione getUpAndDown... e l'altra sono troppo complesse. Non si capisce che cosa stiano facendo solo leggendo il codice.
Lo dice anche il nome secondo stesso secondo me. Io dividerei ognuna in due. Puoi lavorarci un po'?
Quindi ritorno alla vecchia soluzione con l'if semplificato?

EDIT

Così va bene l'if?

Codice:
CAVOLATA :fagiano:
__________________
GPU Compiler Engineer

Ultima modifica di AnonimoVeneziano : 04-02-2008 alle 22:14.
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2008, 22:11   #28
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: California
Messaggi: 11781
Quote:
Originariamente inviato da AnonimoVeneziano Guarda i messaggi
Quindi ritorno alla vecchia soluzione con l'if semplificato?
Vedi tu
fek è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2008, 22:21   #29
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13826
Quote:
Originariamente inviato da fek Guarda i messaggi
Vedi tu
Ok, torniamo al vecchio

Così ? :

Codice:
        row += direction.deltaY();
        
        if(row < 0 || row > getGrid().getNumberOfRows() - 1)
        {
            return;
        }
Poi anche sotto nel "for" ovviamente verrà usato "row" anzichè "row + direction.deltaY()" (stessa cosa per l'altra funzione)

Ciao
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2008, 22:41   #30
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1536
Rifattorizzo questo:

Codice:
public void testDrawTwoFrames()
    {
        int frameSize = 32;
        
        AnimatedSprite animatedSprite = createAnimatedSprite(3, 100, frameSize);
        
        timer.advance(ANIMATION_DELAY);

        animatedSprite.updateAnimation(timer.getTime());
        animatedSprite.getSprite().draw(engine);

        assertEquals("bad texture drawn", 0,
            ((MockEngine)engine).getImageRect().getLeft());
        assertEquals("bad texture drawn", frameSize,
            ((MockEngine)engine).getImageRect().getTop());

        timer.advance(100);
        animatedSprite.updateAnimation(timer.getTime());
        animatedSprite.getSprite().draw(engine);

        assertEquals("bad texture drawn", 0,
            ((MockEngine)engine).getImageRect().getLeft());
        assertEquals("bad texture drawn", frameSize * 2,
            ((MockEngine)engine).getImageRect().getTop());
    }
Spezzato in 3 test. Ho aggiunto il test per il frame iniziale.

Codice:
    public void testRenderingOfFirstFrame()
    {
        AnimatedSprite animatedSprite = createAnimatedSprite(2, 100, FRAME_SIZE);
        
        animatedSprite.updateAnimation(timer.getTime());
        animatedSprite.getSprite().draw(engine);
        
        Rectangle expectedImageRectangle = new Rectangle(0, 0, FRAME_SIZE, FRAME_SIZE);
        assertEquals(expectedImageRectangle, engine.getImageRect());
    }
    
    public void testRenderingOfSecondFrame()
    {
        AnimatedSprite animatedSprite = createAnimatedSprite(2, 100, FRAME_SIZE);
        
        timer.advance(ANIMATION_DELAY);
        animatedSprite.updateAnimation(timer.getTime());
        animatedSprite.getSprite().draw(engine);
        
        Rectangle expectedImageRectangle = new Rectangle(0, FRAME_SIZE, FRAME_SIZE, FRAME_SIZE);
        assertEquals(expectedImageRectangle, engine.getImageRect());
    }
    
    public void testRenderingOfThirdFrame()
    {
        final int animationUpdateRate = 100;
        AnimatedSprite animatedSprite = createAnimatedSprite(3, animationUpdateRate, FRAME_SIZE);
        
        timer.advance(ANIMATION_DELAY);
        timer.advance(animationUpdateRate);
        
        animatedSprite.updateAnimation(timer.getTime());
        animatedSprite.getSprite().draw(engine);
        
        Rectangle expectedImageRectangle = new Rectangle(0, FRAME_SIZE * 2, FRAME_SIZE, FRAME_SIZE);
        assertEquals(expectedImageRectangle, engine.getImageRect());
    }

Si potrebbe fare ancora qualcosina ma mi accontento, e` abbastanza chiaro penso :o
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2008, 22:57   #31
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1536
Prima:

Codice:
    private Droppable getGemToDelete(Droppable falshingGem)
    {
        //TODO: REFACTOR THIS
        
        Region region = falshingGem.getRegion();
        Cell cell = new Cell(region.getTopRow(), region.getLeftColumn());

        Droppable gemToDelete = searchGemToDelete(cell);
        
        if(gemToDelete == null)
        {
            gemToDelete = searchLeft(cell);

            if(gemToDelete == null)
            {
                gemToDelete = searchRight(cell);

                if(gemToDelete == null)
                {
                    gemToDelete = searchUp(cell);
                }
            }
        }
        return gemToDelete;
    }


    private Droppable searchGemToDelete(Cell cell)
    {
        if((cell.getRow() < getGrid().getNumberOfRows() - 1))
        {
            return getGem(cell.getLower());
        }
        return null;
    }


    private Droppable searchLeft(Cell cell)
    {
        if(cell.getColumn() >= 1)
        {
            return getGem(cell.getLeft());
        }
        return null;
    }


    private Droppable searchRight(Cell cell)
    {
        if(cell.getColumn() < getGrid().getNumberOfColumns() - 1)
        {
            return getGem(cell.getRight());
        }
        return null;
    }


    private Droppable searchUp(Cell cell)
    {
        if(cell.getRow() > 1)
        {
            return getGem(cell.getUpper());
        }
        return null;
    }
Dopo:

Codice:
    private Droppable getGemToDelete(Droppable falshingGem)
    {        
        Region region = falshingGem.getRegion();
        Cell cell = new Cell(region.getTopRow(), region.getLeftColumn());
        
        Direction directions[] = {Direction.GO_DOWN, Direction.GO_LEFT, Direction.GO_RIGHT, Direction.GO_UP};

        for (Direction direction : directions)
        {
            Droppable gemToDelete = searchGemToDelete(cell, direction);
            
            if (gemToDelete != null)
            {
                return gemToDelete;
            }
        }
        
        return null;
    }


    private Droppable searchGemToDelete(Cell cell, Direction direction)
    {
        final int rowToSearch = cell.getRow() + direction.deltaY();
        final int columnToSearch = cell.getColumn() + direction.deltaX();
        
        final boolean isValidCell = getGrid().isValidCell(rowToSearch, columnToSearch);
        if (!isValidCell)
        {
            return null;
        }
        
        return getGem(new Cell(rowToSearch, columnToSearch));
    }
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2008, 23:25   #32
Bonfo
Senior Member
 
L'Avatar di Bonfo
 
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
__________________
Software engineer
Bonfo's Blog
Bonfo è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2008, 23:27   #33
Baol
Member
 
L'Avatar di Baol
 
Iscritto dal: Apr 2006
Città: Gazzaniga (BG)
Messaggi: 67
Quote:
Originariamente inviato da Ufo13 Guarda i messaggi
Minchia Bonfo avevamo appena iniziato a cambiare tutto in Cell e hai ri-revertato i cambiamenti fatti
Per evitare cose del genere o sovrapposizioni di lavoro non si potrebbe creare un topic "Io sto lavorando su..." in cui inserire cosa si sta facendo? Ad esempio su quale Refactor This ci si sta impegnando? (questo eventualmente si può fare anche qua, postando prima di modificarlo ed editando a lavoro completato)
__________________
"Non esiste l'impossibile. L'impossibile non esiste." Baolian, Libro V


Baol è offline   Rispondi citando il messaggio o parte di esso
Old 05-02-2008, 00:16   #34
Bonfo
Senior Member
 
L'Avatar di Bonfo
 
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
Io sto rimettendo tutti i cell che avevo tolto!

Mi ci vorra' un po', anche perche' nel mentre lavoro :P
__________________
Software engineer
Bonfo's Blog
Bonfo è offline   Rispondi citando il messaggio o parte di esso
Old 05-02-2008, 00:16   #35
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: California
Messaggi: 11781
Quote:
Originariamente inviato da Baol Guarda i messaggi
Per evitare cose del genere o sovrapposizioni di lavoro non si potrebbe creare un topic "Io sto lavorando su..." in cui inserire cosa si sta facendo? Ad esempio su quale Refactor This ci si sta impegnando? (questo eventualmente si può fare anche qua, postando prima di modificarlo ed editando a lavoro completato)
Si' buona idea. Scrivete qui il Refactor This sul quale state lavorando e poi editatelo con la soluzione.

Fede, refactoring stilosissimo
fek è offline   Rispondi citando il messaggio o parte di esso
Old 05-02-2008, 00:39   #36
Baol
Member
 
L'Avatar di Baol
 
Iscritto dal: Apr 2006
Città: Gazzaniga (BG)
Messaggi: 67
Lavorando in CrushByFlashAction.java su getAllGemsSameOf.
Prima:
Codice:
    //TODO: REFACTOR THIS
    private DroppableList getAllGemsSameOf(Droppable gemToDelete)
    {
        DroppableList gemList = new DroppableList();
        Droppable gem;
        
        for(int row = getGrid().getNumberOfRows() - 1; row >= 0; row--)
        {
            for(int column = 0; column < getGrid().getNumberOfColumns(); column++)
            {
                gem = getGrid().getDroppableAt(row, column);
                if(gem == null)
                {
                    continue;
                }

                if(gem.getGridObject().getColor() == gemToDelete.getGridObject().getColor())
                {
                    if(!gemList.contains(gem))
                    {
                        gemList.add(gem);
                    }
                }
            }
        }
        return gemList;
    }
Dopo...
Codice:
    public void apply(DroppableList gridElements)
    {
        super.apply(gridElements);
        applyToEachDroppable();
    }
    ...

    private DroppableList getAllGemsSameOf(Droppable gemToDelete)
    {
        DroppableList gridElements = getGridElements();
        DroppableList gemSameList = new DroppableList();

        for(Droppable droppable : gridElements)
        {
            if(droppable.getGridObject().getColor() == gemToDelete.getGridObject().getColor())
            {
                gemSameList.add(droppable);
            }
        }

        return gemSameList;
    }
__________________
"Non esiste l'impossibile. L'impossibile non esiste." Baolian, Libro V



Ultima modifica di Baol : 05-02-2008 alle 02:17.
Baol è offline   Rispondi citando il messaggio o parte di esso
Old 05-02-2008, 00:55   #37
Bonfo
Senior Member
 
L'Avatar di Bonfo
 
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
Rimettendo tutti i new Cell() dentro codice e test, mi sono reso conto chesi usanbo moltissimo la coppia 0, 4 e 1, 4, ovvero qulle delle gemsPair.

Che ne di te di un bel campo statico in GemsPair??
__________________
Software engineer
Bonfo's Blog
Bonfo è offline   Rispondi citando il messaggio o parte di esso
Old 05-02-2008, 01:06   #38
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13826
Quote:
Originariamente inviato da Baol Guarda i messaggi
Lavorando in CrushByFlashAction.java su getAllGemsSameOf.
Prima:
Codice:
    //TODO: REFACTOR THIS
    private DroppableList getAllGemsSameOf(Droppable gemToDelete)
    {
        DroppableList gemList = new DroppableList();
        Droppable gem;
        
        for(int row = getGrid().getNumberOfRows() - 1; row >= 0; row--)
        {
            for(int column = 0; column < getGrid().getNumberOfColumns(); column++)
            {
                gem = getGrid().getDroppableAt(row, column);
                if(gem == null)
                {
                    continue;
                }

                if(gem.getGridObject().getColor() == gemToDelete.getGridObject().getColor())
                {
                    if(!gemList.contains(gem))
                    {
                        gemList.add(gem);
                    }
                }
            }
        }
        return gemList;
    }
...

Mmm, qua ci vorrebbe un modo facile per ottenere tutte le gemme dello stesso tipo nella griglia ...
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 05-02-2008, 01:17   #39
Bonfo
Senior Member
 
L'Avatar di Bonfo
 
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
Scusate, ma perche' invece di andare per riga e per colonna non andiamo con l'iteratore sull'elenco di droppabales??

Codice:
            for(Droppable droppabel : grid.getDroppableList()) {
            }
e se poi abbiamo problemi di iterazione doppia basta fare:
Codice:
            for(Iterator iterator = grid.getDroppableList().iterator(); iterator.hasNext();)
            {
                Droppable droppable = (Droppable)iterator.next();
                
            }
__________________
Software engineer
Bonfo's Blog
Bonfo è offline   Rispondi citando il messaggio o parte di esso
Old 05-02-2008, 01:19   #40
Bonfo
Senior Member
 
L'Avatar di Bonfo
 
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
Piccolo problemi che ritorna prepotente...

Quando creo una cella con valori negativi mi becco una exception.
Che faccio: aggiungo controlli ovunque??

in realta' basta che isValidCell continui aragionare a row e column. Che si fa?
__________________
Software engineer
Bonfo's Blog

Ultima modifica di Bonfo : 05-02-2008 alle 01:25.
Bonfo è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


ASUS ROG Swift OLED PG49WCD: quando QD-OLED e ultrawide si fondono ASUS ROG Swift OLED PG49WCD: quando QD-OLED e ul...
Dreame L10s Pro Ultra Heat: la pulizia di casa tutta sostanza Dreame L10s Pro Ultra Heat: la pulizia di casa t...
HONOR Magic6 Pro: come funziona Magic Portal, il modo ''intelligente'' di condividere HONOR Magic6 Pro: come funziona Magic Portal, il...
L'innovazione richiede fiducia: Workday si propone come guida nell'era dell'IA L'innovazione richiede fiducia: Workday si propo...
Recensione HONOR Pad 9: ampio display e audio top per il tablet per l'intrattenimento Recensione HONOR Pad 9: ampio display e audio to...
Xbox Series X si veste di bianco, ma &eg...
La Porsche Boxster elettrica beccata in ...
L'iPad da 10,9" (Wi-Fi, 64GB) è sceso a ...
Dell, calo del mercato PC: licenziati 13...
Alfa Romeo Milano, scopriamo profilo e l...
Hisense vende un TV FHD 32 pollici con Q...
Cisco Webex anche in auto: ora è ...
Phil Schiller, il boss dell'App Store di...
Lola in Formula E insieme a Yamaha, due ...
Motorola MA1 è l'accessorio ideale per u...
Tineco e aspirapolveri senza fili, la nu...
Blocco note, c'è un modo per ripr...
Relic Entertainment dice addio a SEGA: l...
SPATIUM M580 FROZR, il nuovo SSD PCIe Ge...
Le schede video NVIDIA GeForce RTX con i...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 12:49.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Served by www2v