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