summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2015-11-03 09:49:17 +0100
committerErich Eckner <git@eckner.net>2015-11-03 09:49:17 +0100
commit59c61e291c0da3db104d973d498e7a334005bed5 (patch)
treede9fa98344b7652b44501f4a52b380ab9d038a1c
parent9388cfc20bdd06fedc277afb473bb99e636979f1 (diff)
downloadunits-59c61e291c0da3db104d973d498e7a334005bed5.tar.xz
fehlertolerantere irdecoderunit.pas
-rw-r--r--irdecoderunit.pas9
1 files changed, 6 insertions, 3 deletions
diff --git a/irdecoderunit.pas b/irdecoderunit.pas
index 5b9d045..cff9936 100644
--- a/irdecoderunit.pas
+++ b/irdecoderunit.pas
@@ -145,7 +145,8 @@ begin
if eingabeLaenge>=length(eingabePuffer) then
setlength(eingabePuffer,eingabeLaenge+1024);
eingabePuffer[eingabeLaenge]:=(findeZeichen(lw and not $08) shl 1) or byte((lw and $08) <> 0);
- inc(eingabeLaenge);
+ if ((not eingabePuffer[eingabeLaenge]) and (not 1)) <> 0 then
+ inc(eingabeLaenge);
end;
letztesZeichen[empf]:=lw;
@@ -199,8 +200,10 @@ begin
if mi<>ma then
raise exception.create('Sanity-Check nicht bestanden: mi<>ma nach Bisektion!');
result:=mi;
- if zeichenTabelle[result]<>lw then
- raise exception.create('Kann Tastencode '''+inttohex(lw,4)+''' nicht finden!');
+ if zeichenTabelle[result]<>lw then begin
+ writeln(stderr,'Kann Tastencode '''+inttohex(lw,4)+''' nicht finden, ignoriere Taste!');
+ result:=not 0;
+ end;
end;
function tIRDecoder.findeBefehl(lw: longword): int64;