ossys Juniormester
20. november 2019 - 17:30 Der er 3 kommentarer og
1 løsning

Delphi - tømning af tastaturbufferen

Et sikkert meget banalt problem. Men det irriterer mig.

Jeg har brug for, at kunne tømme tastaturets buffer. Nogle brugere kan ikke holde fingrene fra tastaturet medens computeren arbejder Det er ikke verdens hurtigste computer jeg arbejder med!: Hvordan tømmer jeg bufferen?? Løsningen kunne jo også være at blokerer for tastetryk..
arne_v Ekspert
20. november 2019 - 18:59 #1
Ikke nogen speciel smart loesning men:
* start en traad som tester et done flag og ellers kalder ReadKey i en loekke
* naar input er OK saa saetter du done flag og traad afslutter
ossys Juniormester
21. november 2019 - 01:23 #2
Hej Arne_V. Den løsning må jeg prøve i morgen!
arne_v Ekspert
21. november 2019 - 01:57 #3
Eksempel:


program SkipKeys;

uses
  Classes, SysUtils, Windows, Crt;

type
  Skipper = class(TThread)
  protected
    procedure Execute; override;
  end;

var
  done : boolean;

procedure Skipper.Execute;

begin
  while not done do begin
    if KeyPressed then begin
      ReadKey;
    end else begin
      Sleep(10);
    end;
  end;
end;

var
  skipt : Skipper;

procedure StartBlock;

begin
  done := false;
  skipt := Skipper.Create(true);
  skipt.Start;
end;

procedure StopBlock;

begin
  done := true;
  skipt.WaitFor;
  skipt.Terminate;
  skipt.Free;
end;

begin
  StartBlock;
  writeln('Enter something');
  Sleep(5000);
  StopBlock;
  writeln('Enter something again');
  writeln('You entered: ' + ReadKey);
end.


Jeg vil stadig ikke udelukke at en mere elegant løsning eksisterer, men det var hvad jeg lige kunne komme op med.

NB: done bør erklæres volatile, men det er ikke understøttet i min version af FPC.
ossys Juniormester
21. november 2019 - 09:33 #4
Hej Arne_V

I en MEGET sen nattetime fandt jeg på nettet nedenstående løsning, som er gennemprøvet her til morgen. Den ser ud til at virke efter hensigten!

Tak for dit input, som jo er lidt mere omfattende.  Jeg så først din løsning her til morgen!

procedure ClearInputBuffer;
var
  Msg: TMsg;
begin
  while PeekMessage(Msg, 0, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE or
PM_NOYIELD) do;
  while PeekMessage(Msg, 0, WM_MOUSEFIRST, WM_MOUSELAST, PM_REMOVE or PM_NOYIELD) do;
end;
Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links

Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester





Premium
Test: Huaweis Matebook X er særlig laptop med en svaghed, som du skal være opmærksom på
Huawei beviser endnu en gang, at de sagtens kan mingle sig med de bedste pc-producenter. Men alligevel skyder selskabet lidt ved siden af, med sin nyeste maskine.
Computerworld
Bitcoinen nåede lige at kulminere igen – men så kom krakket
Der blev sat en ny rekord for bitcoinens værdi i år – men godt 24 timer efter blev der høvlet næsten 20.000 kroner af den.
CIO
Podcast: Her er seks gode råd om ledelse og digitalisering fra danske top-CIO'er
The Digital Edge: Vi har talt med 17 af Danmarks dygtigste digitale ledere - og samlet deres seks bedste råd om digitalisering og ledelse. Få alle rådene på 26 minutter i denne episode af podcasten The Digital Edge.
Job & Karriere
Se Waoos forklaring: Derfor har selskabet fyret topchef Jørgen Stensgaard med omgående virkning
Waaos bestyrelse opsiger fiberselskabets topchef, Jørgen Stensgaard, der fratræder med omgående virkning. Se hele forklaringen fra Waao her.
White paper
Sådan sikrer du hovednøglen til jeres data
80% af alle ransomwareangreb skyldes misbrug af privilegerede brugeradgange. Ved at begrænse og overvåge adfærden på de privilegerede konti samt kontrollere mængden af tildelte rettigheder kan du mindske skaden ved hackerangreb mod din virksomhed og i visse tilfælde helt blokere dem. Internt kan du bruge kontrollen med brugeradgange til at dokumentere, hvem der bevæger sig i hvilke systemer, og hvad der foregår derinde. Privilegeret brugerstyring har de seneste to år stået øverst på Gartners Top10-liste over it-sikkerhedsprojekter, der bør få højeste prioritet. Alligevel er teknologien kun så småt ved at finde fodfæste i Danmark. Det kan viden om åbenlyse gevinster, relativ kort implementeringstid og yderst rimeligt budget være med til at ændre på. I dette whitepaper folder vi temaet privilegeret brugerstyring ud og placerer teknologien i det væld af prioriteringer, som CISO’en hver dag skal foretage.