summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--irdecoderunit.pas54
1 files changed, 28 insertions, 26 deletions
diff --git a/irdecoderunit.pas b/irdecoderunit.pas
index dda63eb..a48a38f 100644
--- a/irdecoderunit.pas
+++ b/irdecoderunit.pas
@@ -21,14 +21,14 @@ type
ersterEmpf,
letzterEmpf: boolean;
eingabePuffer: array of longword;
- eingabeLaenge,
- zustand: longword;
+ eingabeLaenge: int64;
+ zustand: longword;
_watte: boolean;
procedure init;
procedure tastenDruckAnhaengen(lw: longword);
procedure befehlAusfuehren(cmd,params: string);
- function findeZeichen(lw: longword): longword;
- function findeBefehl(lw: longword): longword;
+ function findeZeichen(lw: longword): int64;
+ function findeBefehl(lw: longword): int64;
public
constructor create(inputName: string); overload;
constructor create(inputName, konfigName: string); overload;
@@ -41,21 +41,21 @@ type
end;
tBefehl = class
- nummer,altZustand, // Index des gesendeten Zeichens in zeichenTabelle, sowie alter
- neuZustand: longword; // und neuer Zustand
- einzelKlick, // gedrückt gehaltene Taste = Befehl mehrmals?
- kollapsTrenner: boolean; // Darf über diesen Befehl hinweg kollabiert werden?
- cmd,params: string; // Befehl + Parameter
- kollapsArt: tKollapsArt; // Wie kollabiert dieser Befehl?
+ nummer,altZustand, // Index des gesendeten Zeichens in zeichenTabelle, sowie alter
+ neuZustand: longword; // und neuer Zustand
+ einzelKlick, // gedrückt gehaltene Taste = Befehl mehrmals?
+ kollapsTrenner: boolean; // Darf über diesen Befehl hinweg nicht kollabiert werden?
+ cmd,params: string; // Befehl + Parameter
+ kollapsArt: tKollapsArt; // Wie kollabiert dieser Befehl?
constructor create;
destructor destroy; override;
end;
procedure befehleKonfLesen(konfigName: string);
-procedure sortiereZeichenTabelle(von,bis: longword);
-procedure sortiereBefehlsTabelle(von,bis: longword);
-function befehlsVergleich(b1,b2: longword): integer; inline; overload;
-function befehlsVergleich(b1,b2Num,b2Zus: longword): integer; inline; overload;
+procedure sortiereZeichenTabelle(von,bis: int64);
+procedure sortiereBefehlsTabelle(von,bis: int64);
+function befehlsVergleich(b1,b2: int64): integer; inline; overload;
+function befehlsVergleich(b1,b2Num,b2Zus: int64): integer; inline; overload;
implementation
@@ -157,9 +157,9 @@ begin
end;
end;
-function tIRDecoder.findeZeichen(lw: longword): longword;
+function tIRDecoder.findeZeichen(lw: longword): int64;
var
- mi,ma: longword;
+ mi,ma: int64;
begin
mi:=0;
ma:=length(zeichenTabelle)-1;
@@ -184,9 +184,9 @@ begin
raise exception.create('Kann Tastencode '''+inttohex(lw,4)+''' nicht finden!');
end;
-function tIRDecoder.findeBefehl(lw: longword): longword;
+function tIRDecoder.findeBefehl(lw: longword): int64;
var
- mi,ma: longword;
+ mi,ma: int64;
begin
mi:=0;
ma:=length(befehlsTabelle)-1;
@@ -235,7 +235,8 @@ end;
function tIRDecoder.befehlVerarbeitet: boolean;
var
- i,cnt,bef,bef2: longword;
+ i,cnt: int64;
+ bef,bef2: longword;
cmd,params,s,t: string;
begin
result:=eingabeLaenge>0;
@@ -290,7 +291,8 @@ end;
function tIRDecoder.gibAlleBefehle: string;
var
- bw,lw: longword;
+ bw: int64;
+ lw: longword;
b1,b2: boolean;
begin
result:='';
@@ -400,9 +402,9 @@ begin
sortiereBefehlsTabelle(0,length(befehlsTabelle)-1);
end;
-procedure sortiereZeichenTabelle(von,bis: longword);
+procedure sortiereZeichenTabelle(von,bis: int64);
var
- li,re,pv,i: longword;
+ li,re,pv,i: int64;
begin
if von>=bis then exit;
pv:=zeichenTabelle[von];
@@ -441,9 +443,9 @@ begin
sortiereZeichenTabelle(li,bis);
end;
-procedure sortiereBefehlsTabelle(von,bis: longword);
+procedure sortiereBefehlsTabelle(von,bis: int64);
var
- mi,ma,li,re,pv,pvZ,i: longword;
+ mi,ma,li,re,pv,pvZ,i: int64;
tmp: tBefehl;
begin
tmp:=nil;
@@ -489,12 +491,12 @@ begin
sortiereBefehlsTabelle(li,bis);
end;
-function befehlsVergleich(b1,b2: longword): integer;
+function befehlsVergleich(b1,b2: int64): integer;
begin
result:=befehlsVergleich(b1,befehlsTabelle[b2].nummer,befehlsTabelle[b2].altZustand);
end;
-function befehlsVergleich(b1,b2Num,b2Zus: longword): integer;
+function befehlsVergleich(b1,b2Num,b2Zus: int64): integer;
begin
if befehlsTabelle[b1].nummer<b2Num then begin
result:=-1;