AGB  ·  Datenschutz  ·  Impressum  







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

noch'n BF Interpreter

Ein Thema von himitsu · begonnen am 24. Jan 2010 · letzter Beitrag vom 29. Jan 2010
 
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.096 Beiträge
 
FreePascal / Lazarus
 
#11

Re: noch'n BF Interpreter

  Alt 24. Jan 2010, 17:43
Hi,

also die ReadKey aus FPC (Unit Crt) hat folgende Probleme:
1. wenn die Standardeingabe umgeleitet wird (z. B. von Datei) passiert nichts / wartet Programm entlos auf Eingabe
2. umgeht sie auch KeyMapping und gibt daher ggf. falsche Zeichen zurück

Delphi-Quellcode:
// initialisieren
H := GetStdHandle(STD_INPUT_HANDLE);
FlushConsoleInputBuffer(H);
Das mit dem Flush gefällt mir bzgl. Standardeingabe umleiten auch nicht da ich vermute, dass dann was verloren gehen könnte...
Es soll ja auch möglich sein mit BF Dateien zu verarbeiten.

Abgesehen davon das der Code nur unter Windows läuft wird er sicher auch nicht besser sein:
Delphi-Quellcode:
// abfragen
CI.EventType := KEY_EVENT;
Repeat
Until ReadConsoleInput(H, CI, 1, Cardinal(i)) and (i = 1)
  and (CI.Event.KeyEvent.bKeyDown) and (CI.Event.KeyEvent.AsciiChar <> #0);
M[MP] := CI.Event.KeyEvent.AsciiChar;
KEY_EVENT? Gibts bei Standardeingabe umleiten auch nicht, oder?

FlushConsoleInputBuffer(H); Und noch ein Flush?
Also werden zweimal von Stdin eingelesene Daten weggeworfen?

Ich werde folgendes machen:
- wenn kein Parameter angegeben wurde wird read(Result) verwendet
- wenn der Parameter .key angegeben wu8rde wird Result := ReadKey verwendet

Damit erreiche ich Kompatibilität zu solchen Programmen während die Möglichkeit der Umlenkung der Standardeingabe nicht verloren geht.

Letzteres hat aber einen Haken: BF kennt keinen Befehl um das Ende der Datei abzufragen. Die nach stdin umgeleitete Datei muss also selbst sagen wo sie zu Ende ist...

[edit] Hab gerade festgestellt, das das Standardeingabe-umleiten auch mit read nicht zufriedenstellend funktionitert... hm, das ist aber komisch. Da hätte ich es eigentlich funktionierend erwartet... [/edit]

Gruß
FAlter
Felix Alter
  Mit Zitat antworten Zitat
 


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 14:50 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