diff options
Diffstat (limited to 'irdecoderunit.pas')
-rw-r--r-- | irdecoderunit.pas | 54 |
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; |