Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [Delphi 6] Interrompere un ciclo infinito

    Ciao!
    Sto realizzando un programma di simulazione nel quale è previsto che una istruzione venga eseguita più volte richiamata in un ciclo. Se però l'utente si sbaglia a utilizzare il programma parte un ciclo infinito e vorrei poterlo interrompere. Questo è il codice del loop:
    codice:
    repeat
    until (Mp0.Step) or (alt= true);
    Mp0.step è una funzione che dopo avere eseguito un tot di istruzioni ti da in uscita true o false a seconda se è già arrivato al termine della simulazione. La variabile alt invece avevo pensato di usarla come variabile di blocco. Il problema è che quando parte il loop infinito nn riesco a settarla a true! Avete qualche idea su come posso fare? In teoria l'ideale sarebbe settarla a true dopo avere spinto una combinazione di pulsanti tipo ALT+A o qualcosa di simile...

    Grazie in anticipo
    Comunque vada... faccio sempre appello alla giraffa!!

  2. #2
    Penso che il ciclo che hai scritto non sia la soluzione migliore per ottenere quello desideri.
    Nel tuo caso proverei ad usare il componente TTimer che ti permette di scandire ogni N-millisecondi una particolare procedura.

    Per abilitare il timer basta impostare la proprietà enabled a true, mentre per fermarlo basta settarla a false.

    L'evento OnTimer é quello che devi utilizzare per definire le azioni da svolgere .

    Prova a vedere se questa soluzione é quella più funzionale.


  3. #3
    In effetti nn è male come idea...il timer nn ho mai avuto occasione di utilizzarlo però mi sa che potrebbe essere una valida soluzione!! Grazie per il consiglio! Ti farò sapere!
    Comunque vada... faccio sempre appello alla giraffa!!

  4. #4
    Grazie per il consiglio!! Adesso funziona perfettamente!!
    Comunque vada... faccio sempre appello alla giraffa!!

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    Se il tuo ciclo di operazioni serve per compiere una simulazione, spesso il TTimer non ha prestazioni sufficienti per poter essere considerata la soluzione più valida.

    Ad esempio, quando si effettua una stampa, non è possibile utilizzare un timer, il programma è impegnato ad elaborare liberamente i dati da stampare, ma si vorrebbe comunque consentire all'utente di poter interrompere il processo in qualsiasi momento.

    In tal caso, trovo che sia indicato l'uso di thread.

    Attraverso un thread, è possibile spostare cicli di elaborazioni e altri processi analoghi in un percorso di esecuzione alternativo e concorrente che esegue in modo asincrono, in perfetta concorrenza con il thread primario dell'applicazione che, però, rimane libero di intercettare i messaggi provenienti dal sistema (ad esempio, clic sul pulsante di annullamento) e interrompere il percorso secondario di esecuzione.

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

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

  6. #6
    Originariamente inviato da alka
    Se il tuo ciclo di operazioni serve per compiere una simulazione, spesso il TTimer non ha prestazioni sufficienti per poter essere considerata la soluzione più valida.

    Ad esempio, quando si effettua una stampa, non è possibile utilizzare un timer, il programma è impegnato ad elaborare liberamente i dati da stampare, ma si vorrebbe comunque consentire all'utente di poter interrompere il processo in qualsiasi momento.

    In tal caso, trovo che sia indicato l'uso di thread.

    Attraverso un thread, è possibile spostare cicli di elaborazioni e altri processi analoghi in un percorso di esecuzione alternativo e concorrente che esegue in modo asincrono, in perfetta concorrenza con il thread primario dell'applicazione che, però, rimane libero di intercettare i messaggi provenienti dal sistema (ad esempio, clic sul pulsante di annullamento) e interrompere il percorso secondario di esecuzione.

    Ciao!
    La parola mi giunge completamente nuova
    Che cosa sarebbero esattamente?
    Comunque vada... faccio sempre appello alla giraffa!!

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    Originariamente inviato da Girandol0
    La parola mi giunge completamente nuova
    Che cosa sarebbero esattamente?
    Trovi tutti i dettagli su questo tutorial veramente ben fatto.
    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 © 2025 vBulletin Solutions, Inc. All rights reserved.