Endlosschleife

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Avalancher
Beiträge: 1
Registriert: Mo 19. Mai 2014, 16:28

Endlosschleife

Beitrag von Avalancher »

Sorry,

hat sich erledigt. Der Fehler ist für mich nach wie vor nicht ganz nachvollziehbar, aber das Problem beseitigt.

Das Thema kann gelöscht werden. :|

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: Endlosschleife

Beitrag von Scotty »

Ein Forum lebt von beantworten Fragen, auch wenn sie scheinbar unsinnig sind. Man löscht auch nicht einfach Threads, sondern ändert den Titel in "[solved] Endlosschleife" und sagt noch ein oder zwei Worte zur Lösung.

ErnstVolker
Beiträge: 351
Registriert: Di 17. Feb 2009, 10:44
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Endlosschleife

Beitrag von ErnstVolker »

Hallo zusammen,

ich hab' da mal eine Frage zur Endlosschleife. Ich beschäftige mich momentan mit der Fernsteuerung von Scilab.

Der Befehl:

Code: Alles auswählen

SendScilabJob("plot([1,2,3,4,5],[1,4,9,16,25]);
lässt ein Scilab-Plotfenster erscheinen.

mit ScilabHaveAGraph() bekommt man heraus, ob ein Plotfenster geöffnet ist oder nicht. Es wird ein Integer zurückgegeben. Hier 1.
http://help.scilab.org/docs/5.5.0/en_US ... Graph.html

Mit einer while-Schleife wird das Plotfenster offen gehalten. while(ScilabHaveAGraph()) Ich komme aber aus der while-Schleife nicht heraus, wenn ich das Plotfenster
mit der Maus schließe. ScilabHaveAGraph() müsste dann eigentlich von 1 auf 0 gehen, die Bedingung für die while-Schleife wäre nunmehr nicht mehr WAHR und somit sollte doch der Abbruch der Schleife gegeben sein.
Wieso ist das nicht so?

Wenn man Schleifen bastelt, bei denen aus dem Schleifen-Rumpf irgendwelche Zahlen oder Buchstaben eingelesen werden, dann kann man einen Abbuch generieren. Aber Selbst wenn ich im Schleifenrumpf die Abfrage nach ScilabHaveAGraph() mache, dann fliege ich nicht aus der Schleife raus, wenn ich das Fenster schließe. Irgendwie bekommt die while-Schleife nicht mit, dass meine Integer-Variable Graph eigentlich 0 sein müsste.

Code: Alles auswählen

SendScilabJob("plot([1,2,3,4,5],[1,4,9,16,25]);");
 
 do{
    Graph=ScilabHaveAGraph();
 }
 while (Graph);
Was habe ich für einen Denkfehler?

Viele Grüße und vielen Dank

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Endlosschleife

Beitrag von m.fuchs »

ErnstVolker hat geschrieben:Was habe ich für einen Denkfehler?
Ganz einfach: du denkst fälschlicherweise, du wärst hier in einem Scilab-Forum.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

ErnstVolker
Beiträge: 351
Registriert: Di 17. Feb 2009, 10:44
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Endlosschleife

Beitrag von ErnstVolker »

Hhmm so ganz falsch bin ich hier nicht denke ich.

Ich hab' mal eben schnell was in Lazarus gehext:

Code: Alles auswählen

procedure TFenster_1.Button1Click(Sender: TObject);
begin
  Fenster_2.show;
  while (Fenster_2.Active) do begin
    writeln('Du hast das Fenster offen!');
  end;
end; 
Hier komme ich noch nicht mal dazu, das 2. Fenster mit der Maus zu schließen. Die Endlosschleife lässt mich gar nix machen.
Kann nur die Konsole zu machen. Das war's.

Der Abbruch für die Schleife soll von außen kommen, nämlich Fenster_2.Active=False und in der Konsole müsste Ruhe sein. Das meine ich.

Viele Grüße

Volker

Benutzeravatar
theo
Beiträge: 10869
Registriert: Mo 11. Sep 2006, 19:01

Re: Endlosschleife

Beitrag von theo »

Verstehe deinen Ansatz zwar nicht, aber du müsstest in die Schleife ein
Application.ProcessMessages
einbauen.

Antworten