Delphi step over (F8)

Pagina: 1
Acties:

  • Brabrabra
  • Registratie: Januari 2002
  • Laatst online: 13:59

Brabrabra

Chaoss ahv

Topicstarter
Komt dit iemand bekend voor?

Ik heb een programma gemaakt in delphi, met een of andere functie er in. Als ik gewoon run (F9) gaat die functie fout, maar als ik heb met step over run (F8) doetie hem wel goed. :?

Enig idee hoe dit komt en hoe ik het kan oplossen?

Supergrover heeft een vogeltje gered. Dat vogeltje zat heel hoog in een boom en durfde niet naar beneden te klimmen!


  • whoami
  • Registratie: December 2000
  • Laatst online: 06:24
Op vrijdag 11 januari 2002 11:43 schreef Brabrabra het volgende:
Enig idee hoe dit komt en hoe ik het kan oplossen?
Neen. Post eens wat code. Over welke functie gaat het hier?

https://fgheysels.github.io/


Verwijderd

welke fout krijg je? welke code gaat het over?

//edit ja ik ben dit ook wel eens tegen gekomen. Hangt ook vd. fout af welke je krijgt.

Verwijderd

kan voorkomen als er 2 opdrachten te snel achter elkaar worden uitgevoerd. Bijvoorbeeld met bestanden openen, verwijderen etc.

geef anders even de foutmelding en de source

Verwijderd

Op vrijdag 11 januari 2002 11:43 schreef Brabrabra het volgende:
Komt dit iemand bekend voor?

Ik heb een programma gemaakt in delphi, met een of andere functie er in. Als ik gewoon run (F9) gaat die functie fout, maar als ik heb met step over run (F8) doetie hem wel goed. :?

Enig idee hoe dit komt en hoe ik het kan oplossen?
Ja, met name in Callback functies, maar als het goed gaat met F7/F8 dan doe je waarschijnlijk toch iets fout in je code!
Duszz, doe eens een voorbeeldje!

  • Brabrabra
  • Registratie: Januari 2002
  • Laatst online: 13:59

Brabrabra

Chaoss ahv

Topicstarter
Dat is et hem nou juist, dr zit geen foutmelding bij. Hij doet gewoon de ene keer wel wat ik em opdraag en de andere keer niet. Het gaat om het spelletje Abalone wat ik voor Kunstmatige Intelligentie op school moet maken.
In de functie waarin hij kijkt of je mag slaan of niet. Als ik em in een bepaalde situatie zet waarin het niet mag, doet hij het wel als ik hem gewoon run en met step over doetie het niet.

Code kan ik niet echt posten, dan moet je zowat alle 3 de units hebben als je er iets van wilt snappen :P

Goh, hij lijkt het vandaag opeens goed te doen, niet dat ik iets aan de code heb veranderd, mya, tzijn computers he :+

Supergrover heeft een vogeltje gered. Dat vogeltje zat heel hoog in een boom en durfde niet naar beneden te klimmen!


Verwijderd

zitten er threads of race conditions in de code?

  • Brabrabra
  • Registratie: Januari 2002
  • Laatst online: 13:59

Brabrabra

Chaoss ahv

Topicstarter
race conditions :?

Supergrover heeft een vogeltje gered. Dat vogeltje zat heel hoog in een boom en durfde niet naar beneden te klimmen!


Verwijderd

Ja stel je hebt een tobjectlist waar 2 afzonderlijk lopende threads toegang tot hebben. Stel de 1ne voegt objecten toe en de andere verwijdert ze. Ze zijn dan aan het racen, waarbij voor kan komen dat een thread een object probeert aan te spreken wat niet meer bestaat e.d.

Verwijderd

Dat heb ik ook wel eens. Het helpt in ieder geval als je project --> build project doet. In dat geval worden alle bestanden nog eens gecompileerd en heb je niet meer jouw genoemde probleem. Als je gewoon op ctrl + F9 drukt worden alleen de bestanden gecompileerd die zijn veranderd. Blijkbaar worden soms toch niet al die bestanden meegenomen en gaat het dus fout. Ik heb dit overigens alleen nog maar meegemaakt met Delphi 6, nog niet met Delphi 5.

  • Brabrabra
  • Registratie: Januari 2002
  • Laatst online: 13:59

Brabrabra

Chaoss ahv

Topicstarter
Op vrijdag 11 januari 2002 12:24 schreef hezik het volgende:
Ja stel je hebt een tobjectlist waar 2 afzonderlijk lopende threads toegang tot hebben. Stel de 1ne voegt objecten toe en de andere verwijdert ze. Ze zijn dan aan het racen, waarbij voor kan komen dat een thread een object probeert aan te spreken wat niet meer bestaat e.d.
OIC, nee die zitten er niet in...
Op vrijdag 11 januari 2002 12:25 schreef baspiepers het volgende:
Dat heb ik ook wel eens. Het helpt in ieder geval als je project --> build project doet. In dat geval worden alle bestanden nog eens gecompileerd en heb je niet meer jouw genoemde probleem. Als je gewoon op ctrl + F9 drukt worden alleen de bestanden gecompileerd die zijn veranderd. Blijkbaar worden soms toch niet al die bestanden meegenomen en gaat het dus fout. Ik heb dit overigens alleen nog maar meegemaakt met Delphi 6, nog niet met Delphi 5.
Zal ik 1ns proberen. Dank je

Supergrover heeft een vogeltje gered. Dat vogeltje zat heel hoog in een boom en durfde niet naar beneden te klimmen!


Verwijderd

Op vrijdag 11 januari 2002 12:24 schreef hezik het volgende:
Ja stel je hebt een tobjectlist waar 2 afzonderlijk lopende threads toegang tot hebben. Stel de 1ne voegt objecten toe en de andere verwijdert ze. Ze zijn dan aan het racen, waarbij voor kan komen dat een thread een object probeert aan te spreken wat niet meer bestaat e.d.
[beetje offtopic]
Ik vraag me al een tijdje af wat nou DE officiele manier is om met dit soort problemen om te gaan. 2 Threads die bijv. dezelfde callback functie aanroepen. Hoe controleer je of deze functie toevallig al in gebruik is door de andere thread?
Heb wel es iets gehoord over mutexen welke je hiervoor zou kunnen gebruiken.. maar begrijp daar nog niet echt veel van.

[/beetje offtopic]

Verwijderd

Heb ook weleens met iemand gesproken die ook zo'n probleem had, en dat had toen met de optimizer te maken (projects -> options -> compiler -> optimization)
Als je bijvoorbeeld code heb geschreven met foute pointers, en je hebt optimization aanstaan, kan het daardoor toevallig net goed of net fout gaan.
Als je de optimization uit zet, moet volgens mij de code met F7/F8 en F9 gelijk zijn, but correct me if I'm wrong.
Pagina: 1