Laufzeit-Eingabe und Zonenzustand korrigieren und Change archivieren
This commit is contained in:
@@ -2570,8 +2570,9 @@ impl Vm {
|
||||
if let Some(taste) = self.rt.gepufferte_taste() {
|
||||
let eingabe = self.frames[caller].eingabe.as_mut().unwrap();
|
||||
if let Some(rest) = &mut eingabe.rest {
|
||||
let taste = self.rt.tastenanteil(taste, *rest);
|
||||
*rest -= taste.chars().count();
|
||||
eingabe.text.push_str(&taste);
|
||||
*rest -= 1;
|
||||
} else {
|
||||
match taste.as_str() {
|
||||
tb_runtime::host::taste::ENTER => {
|
||||
@@ -2872,19 +2873,26 @@ impl Vm {
|
||||
refs.reverse();
|
||||
let nummer = self.pop_i32()?;
|
||||
|
||||
let Some(zeile) = self.rt.dateien.get(nummer)?.zeile_lesen()? else {
|
||||
return Err(RuntimeError(62)); // Input past end of file
|
||||
};
|
||||
if line_mode {
|
||||
let zeile = self
|
||||
.rt
|
||||
.dateien
|
||||
.get(nummer)?
|
||||
.zeile_lesen()?
|
||||
.ok_or(RuntimeError(62))?;
|
||||
let r = refs.first().ok_or(RuntimeError(51))?;
|
||||
self.write_ref(r, Value::Str(Rc::from(zeile.as_str())))?;
|
||||
return Ok(());
|
||||
}
|
||||
let felder = tb_runtime::fileio::felder_trennen(&zeile);
|
||||
for (i, r) in refs.iter().enumerate() {
|
||||
let text = felder.get(i).map(String::as_str).unwrap_or("");
|
||||
for r in &refs {
|
||||
let text = self.rt.dateien.get(nummer)?.feld_lesen()?;
|
||||
let ziel = self.read_ref(r)?;
|
||||
let wert = input_value(&ziel, text).ok_or(RuntimeError(64))?; // Bad file name
|
||||
// Der Feldleser hat Quotes und äußeren Leerraum bereits ausgewertet.
|
||||
let wert = if matches!(ziel, Value::Str(_)) {
|
||||
Value::Str(Rc::from(text))
|
||||
} else {
|
||||
input_value(&ziel, &text).ok_or(RuntimeError(64))?
|
||||
};
|
||||
self.write_ref(r, wert)?;
|
||||
}
|
||||
Ok(())
|
||||
|
||||
Reference in New Issue
Block a user