Registriert seit: 8. Dez 2015
155 Beiträge
|
AW: Programmabsturz, aber warum
12. Mai 2018, 16:24
Vielleicht noch etwas, es wurde zwar schon erwähnt, aber die Wichtigkeit wurde evtl. nicht so richtig betont. Komponenten in Delphi werden nicht zeitnah aktualisiert, erst dann (sagen wir es etwas vereinfacht) wenn etwas Zeit da ist. Um das zu verstehen muss man verstehen wie Windows funktioniert. Delphi gehört zu den ereignisorientierten Programmiersprachen. Sie macht also erst dann etwas, wenn etwas passiert, z. B. man klickt auf ein Button. Oder man gibt etwas in ein Editfeld ein. Oder man verlässt ein Editfeld, usw. Damit eine ereignisorientierte Aktion ausgeführt wird, und procedure TForm1.Edit1Change(Sender: TObject) ist so eine ereignisorientierte Prozedur, muss es von Windows erst eine Nachricht bekommen, dass da etwas passiert ist. Diese Nachricht kommt aber in deinem Fall nicht. Das Edit2-Feld wird zwar verändert (bzw. du versuchst es), aber dein Programm ist so mit der While-Schleife beschäftigt, dass es keine Nachrichten verarbeitet. Es bekommt also nicht mit, dass da etwas passiert. Erst dann wenn die Schleife oder Prozedur beendet ist. Du aber geht davon aus, dass wenn du etwas in Edit2 eingibst, das System es mitbekommt. Tut es nicht.
|