keychk-Fehler (?)

Heinrich Allers allers at t-online.de
Sa Nov 24 16:14:30 CET 2001


Mit keychk stimmt etwas nicht, jedenfalls scheint es mir so nach 
einer Reihe von Stunden: Die Tastaturantworten 'x' und <Esc> auf 
die keychk-Wartehaltung zeitigen nicht die gleichen Ergebnisse, 
ferner hängt die Wirkung von keychk in (mir bisher) 
undurchschaubarer Weise vom Kontext ab.

Folgende drei nur sehr leicht unterschiedliche Flexdateien mögen 
geeignet sein, das Problem zu beschreiben und einzugrenzen:

:naechst
keychk/if yes jump ende
var "1"\+\var "#" Z
show iv
find
jump naechst
:ende
mes Ende der Schleife
end

Die zweite Flexdatei sieht etwas anders aus:

:naechst
keychk/if yes jump ende
var "1"\+\var "#" Z
show iv
jump naechst
:ende
mes Ende der Schleife
end

und die dritte ist wiederum leicht variiert worden:

:naechst
keychk
if yes jump ende
var "1"\+\var "#" Z
show iv
jump naechst
:ende
mes Ende der Schleife
end

Es handelt sich also in jedem dieser drei Fälle um Endlosschleifen, 
deren Abbruch man mit keychk steuern will. Keine der drei 
Flexabfolgen funktioniert wunschgemäß:


Bei der _ersten_ der drei Flexdateien läuft die Schleife in jedem Fall 
weiter, egal ob man 'x' oder <Esc> drückt und dann [Ja] oder [Nein] 
sagt.


Bei der _zweiten_ der Flexdateien führt sowohl Eingabe von <Esc> 
und [Ja] als auch die von <Esc> und [Nein] dazu, daß die Schleife 
zwar unterbrochen, nicht aber abgebrochen wird - heraus aus der 
Schleife kommt man nicht! 

Es wird in dieser Situation erneut die Abbruch-Frage gestellt, aber 
egal ob man mit [Ja] oder mit [Nein] antwortet, die Schleife geht 
weiter, zwar nicht mehr endlos, aber um einen einzigen Durchlauf; 
man sieht das an der laufenden Zählung, die ins Schreibfenster 
eingeblendet ist.

Anders läuft es, wenn man die laufende Schleife statt mit <Esc> mit 
der Eingabe von 'x' zu steuern versucht: Dann läuft die Schleife nach 
dem nächsten Schritt, egal ob man mit [Ja] oder mit [Nein] auf die 
Abbruchfrage antwortet, _endlos_ weiter.


Bei der _dritten_ der Flexdateien wird die Schleife sowohl nach 
Eingabe von <Esc> und [Ja] als auch nach der von 'x' und [Ja] 
ordentlich abgebrochen.

Gibt man jedoch erst <Esc> und sagt dann [Nein], dann findet ein 
einziger Schleifendurchlauf statt, dem wieder die 
Unterbrechungsfrage folgt: Die Antort [Nein] löst dann einen 
einzigen weiteren Schleifendurchlauf aus, die Antwort [Ja] den 
ordentlichen Abbruch.

Wieder anders ist es, wenn man mit 'x' via keychk in die Schleife 
eingreift: sagt man danach [Nein], dann läuft die Schleife endlos 
weiter; die Antwort [Ja] bewirkt den Abbruch.


Mit besten Grüßen von

Heinrich Allers

allers at t-online.de * http://home.t-online.de/home/allers
Gegen unseren Krieg / Contra nuestra guerra:
http://www.9-11peace.org/index.php3




Mehr Informationen über die Mailingliste Allegro