AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Programmabsturz, aber warum

Ein Thema von Weber · begonnen am 11. Mai 2018 · letzter Beitrag vom 14. Mai 2018
Antwort Antwort
Delphi.Narium

Registriert seit: 27. Nov 2017
2.555 Beiträge
 
Delphi 7 Professional
 
#1

AW: Programmabsturz, aber warum

  Alt 11. Mai 2018, 18:33
Wenn b zu Beginn der While-Schleife <= 0 ist, wie soll es dann geändert werden? Wo findet denn da eine Zuweisung statt, die jemals dazuführen könnte, dass die Bedingung b <= 0 nicht mehr zutreffend sein könnte und damit zum Schleifenabbruch führen würde? Erst wenn b > 0 ist, wird die Schleife verlassen. Da aber keine Zuweisung an b erfolgt, die den Wert innerhalb der Schleife ändern könnte, wird b einweder immer <= 0 bleiben oder bereits vor dem Schleifenaufruf > 0 sein. In diesem Fall wird die Schleife jedoch nicht durchlaufen.
  Mit Zitat antworten Zitat
Weber

Registriert seit: 11. Mai 2018
5 Beiträge
 
#2

AW: Programmabsturz, aber warum

  Alt 11. Mai 2018, 19:03
ok jetzt verstehe ich das.
ich muss im Prinzib innehalb der Schleife schon angeben das wenn die Zahl 3 erreicht ist da mit sie abgebrochen wird.
Das heist für mich das ich das so nicht realiesiren kann. Kann mir jemand sagen bzw einen Tipp geben wie ich so eine "Dauerschleife" erzeugen kann die immer +1 zu a Addiert wird.
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.555 Beiträge
 
Delphi 7 Professional
 
#3

AW: Programmabsturz, aber warum

  Alt 11. Mai 2018, 19:58
Delphi-Quellcode:
while b<=0 do
  begin
    a := a + 1;
  end;
Nur, b bleibt immernoch unverändert. Du müsstest also auch mal definieren, wann b in welcher Form verändert werden soll.

Wenn wir mal das OnChange des Edits nehmen, soll vermutlich sowas in der Art dabei rauskommen:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  a,b,c:Integer;
begin
//String Umwandlung in Integer
  a:=StrToInt(Edit1.Text);
  b:=StrToInt(Edit2.Text);
//While-Schleife
  while b<=0 do
    begin
      a := a + 1;
      Edit1.Text:=IntToStr(a);
      if a = 3 then
      begin
        b := 3;
      end;
    end;
end;
  Mit Zitat antworten Zitat
Weber

Registriert seit: 11. Mai 2018
5 Beiträge
 
#4

AW: Programmabsturz, aber warum

  Alt 11. Mai 2018, 20:16
Das hilft mir schon mal weiter. Danke

Ich probiere das morgen mal aus ob ich das so machen kann oder ob das dan an einer anderen Stelle hängen bleibt.
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.490 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Programmabsturz, aber warum

  Alt 12. Mai 2018, 06:58
vermutlich willst du nach
Edit1.Text:=IntToStr(a);
noch ein Edit1.Update haben und nach auch noch eine kleine Pause?
  Mit Zitat antworten Zitat
Alallart

Registriert seit: 8. Dez 2015
156 Beiträge
 
#6

AW: Programmabsturz, aber warum

  Alt 12. Mai 2018, 15: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.
  Mit Zitat antworten Zitat
Weber

Registriert seit: 11. Mai 2018
5 Beiträge
 
#7

AW: Programmabsturz, aber warum

  Alt 14. Mai 2018, 17:48
Sory das ich mich heute erst melde hatte bissel was um die Ohren.
Wollte nur bescheid sagen das das jetzt funktioniert so wie ich das brauche. Danke für eure Hilfe
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz