Visualizzazione dei risultati da 1 a 3 su 3

Discussione: [Delphi] ciclo for

  1. #1

    [Delphi] ciclo for

    Salve a tutti

    Ho questo piccolo quesito...
    un certo ciclo(for i:= 0 to 4-1 do)deve girare fino a 4 volte....
    Se è preente un determinato valore, allora il ciclo for deve riprendere il giro e quindi devo azzerare i=0 altrimenti esce.
    Il problema è che i non accetta il valore 0. Come fare ? grazie!
    L'evento è sul bottone.

    with Sgrid do
    for i:= 0 to 4-1 do
    begin
    ArrayExGrid[i]:=strtofloat(Cells[i,righe]);
    if i = 3 then
    begin
    calcolaspese.ScontoImponibile(arrayExGrid[0],arrayExGrid [1],arrayExGrid[2],arrayExGrid[3]);

    // aquesto punto legge la seconda riga, se c'è un valore for, dovrebbe riprendere il giro.

    if Sgrid.cells[i,righe+1]='' then
    exit
    else
    i:=0;
    end;
    end;

    end;



    grazie mille

  2. #2
    invece di i := 0 to 4-1 prova cosi

    for i := 1 to 4 do
    begin
    j := i-1;
    .........
    end


    al momento dell'ELSE di controllo
    i:= 1;

    prova così
    Il dubbio non è piacevole, ma la certezza è ridicola. Solo gli imbecilli son sicuri di ciò che dicono.

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

    Vietato modificare le variabili per il ciclo For

    E' assolutamente vietato modificare il valore delle variabili utilizzate all'interno di un ciclo for in Delphi.

    Pur essendo possibile all'atto pratico, potrebbe generare effetti collaterali e nel peggiore dei casi Access Violation poichè il compilatore genera codice ottimizzato che potrebbe modificare il valore del contatore a proprio piacimento.

    Converti il tuo blocco di codice in un ciclo while se vuoi essere certo della buona riuscita dell'algoritmo.

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

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

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 © 2024 vBulletin Solutions, Inc. All rights reserved.