Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[BCB] for loop stop

Pagina: 1
Acties:

  • bart0l0meus
  • Registratie: Mei 2006
  • Laatst online: 04-11-2022
Hallo,

Ik ben op het moment bezig met een programma wat bijna af is.
Alleen heb ik nog 1 probleem, namelijk de for loop.
Ik meot hem kunnen stoppen met een stop knop, nu heb ik dat op dit moment opgelost met:
code:
1
2
3
4
5
6
    if(stop == true)
      {
      stop = false;
      i = 0;
      break;
      }

maar als ik nu een programma wil stoppen met Close(); dan gaat hij eerst de for loopjes afmaken wat niet echt de bedoeling is, het meot dus eigenlijk een stop zijn ipv een break.
Kan iemand me hier verder mee helpen?

Grtz

btw, ik ben nog een beginner.... O-)

[ Voor 3% gewijzigd door bart0l0meus op 13-01-2008 15:10 ]

“If Your Only Tool Is a Hammer Then Every Problem Looks Like a Nail” (Abraham Maslow)


  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

ik ken bcb niet, maar ik neem aan dat je ipv een for loop een while loop wilt ;)

Stop uploading passwords to Github!


  • bart0l0meus
  • Registratie: Mei 2006
  • Laatst online: 04-11-2022
nee, want als ik de while goed begrijp heb ik neit de opties die ik nodig heb van de for.

“If Your Only Tool Is a Hammer Then Every Problem Looks Like a Nail” (Abraham Maslow)


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:10
Wat je met een for kan, kan je ook met een while.

Zowiezo zou ik die 'taak' waarin die for loopjes lopen, in een aparte class steken, en die class een Cancel member-functie geven.
Die method zorgt erdan voor dat je taak gestopt wordt (door bv die stop variable op true te zetten). (en ook eens checken eerst of ze wel kan gestopt worden bv)

Dan kan je makkelijk de Cancel method aanroepen als je form gesloten wordt.
(Nu zou je, bij het closen van je form rechtstreeks die 'stop' vlag op true moeten zetten, maar ik weet niet of je er aan kan, en het is lelijk.

https://fgheysels.github.io/


  • bart0l0meus
  • Registratie: Mei 2006
  • Laatst online: 04-11-2022
maar er bestaat dus geen standaard statement hiervoor?
want het gekke is dat als ik het programma afsluit alle loopjes gaat uitvoeren! is dit neit met een makkelijke omweg te maken, zoals ik het boven had met if{}??

“If Your Only Tool Is a Hammer Then Every Problem Looks Like a Nail” (Abraham Maslow)


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 16-11 18:33
met break kun je uit een for/while loop springen, alhoewel je hier volgens mij gewoon kunt schrijven:

code:
1
2
3
4
for( int = 0; i < blaat && !stop; ++i )
{
   ... stuff ....
}


Vraag me alleen af hoe je die stop wilt gaan aanspreken ( dwz op true zetten ) als je al in de loop zit en ik vraag me af wat voor een soort programma het is geworden als je niet weet hoe een for/while werkt trouwens.

[ Voor 97% gewijzigd door farlane op 13-01-2008 19:43 ]

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • bart0l0meus
  • Registratie: Mei 2006
  • Laatst online: 04-11-2022
Ik weet wel hoe een for loop werkt, maar niet hoe een while loop werkt.
Het is een programme voor een discovloer, waarbij hij bij een bepaald programma zal ik maar zeggen, de discovloer gaat aansturen, die dan volgens de volgorde van het programma zal oplichten:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void __fastcall TForm1::RandomFlash1Click(TObject *Sender)
{
  Application->MessageBoxA("You can stop the program by clicking Stop","Information", MB_OK);
  for(i>0; i<10000; i++)
    {
    if(stop == true)
      {
      stop = false;
      i = 0;
      return;
      }
    RGB = clWhite;
    kleurAll(RGB, edDecAll, edHexAll, edRAll, edGAll, edBAll, edCodeAll, edTimeAll, lblBlok1,lblBlok2,lblBlok3,lblBlok4,ScrollBar5);    //functie blok 1
    SENDGEN(CodeAll,ProgressBar6,cm,BR);
    Application->ProcessMessages();
    Sleep(random(Speed));
    RGB = clBlack;
    kleurAll(RGB, edDecAll, edHexAll, edRAll, edGAll, edBAll, edCodeAll, edTimeAll, lblBlok1,lblBlok2,lblBlok3,lblBlok4,ScrollBar5);    //functie blok 1
    SENDGEN(CodeAll,ProgressBar6,cm,BR);
    Application->ProcessMessages();
    Sleep(random(Speed));
    }
}

Het programma moet eigenlijk eeuwig doorlopen, maar ook gestopt kunnen worden omdat men bijvoorbeeld de vloer uit wilt zetten of een ander programma wilt gebruiken.

“If Your Only Tool Is a Hammer Then Every Problem Looks Like a Nail” (Abraham Maslow)


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 15:52

Creepy

Tactical Espionage Splatterer

Eehh.. je gebruikt nu een for die telt tot 10000 om een oneindige lus te simuleren? Leer dan aub hoe een while werkt want dat wil je eigenlijk gebruiken. Met de teller van de for lus lijk je nu helemaal niks te doen dus een for lijkt me overbodig.

En nofi uiteraard maar als je niet begrijpt hoe een while lus werkt is het wat mij betreft beter dat je je eerst eens goed verdiept in de taal/omgeving waar je nu mee bezig bent i.p.v. op deze manier verder te gaan. Je mist nu nogal de basis van de taal waar je mee bezig bent zodat je tegen problemen blijft aanlopen die je met een betere kennis van de taal totaal niet zou hebben.

Ik zie overigens een Application->ProcessMessages(); staan. Doe je dit om ervoor te zorgen dat je UI niet lijkt te hangen? In dat geval zou een thread gebruiken beter zijn. Maar eigenlijk moet je daar weer niet aan beginnen voordat je kennis van C++ en BCB wat beter is.

[ Voor 60% gewijzigd door Creepy op 14-01-2008 13:12 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 16-11 18:33
code:
1
2
3
4
for( ; !stop; )
{
    ...stuff...
}


is hetzelfde als:

code:
1
2
3
4
while( !stop )
{
    ...stuff...
}


Die ProcessMessages is een indicatie dat er iets niet lekker zit in je ontwerp tbh

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.

Pagina: 1