AsyncIO test by Sebastian Guenther
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | // $Id: asiotest.pp,v 1.4 2005/02/14 17:13:18 peter Exp $ // AsyncIO test by Sebastian Guenther, sg@freepascal.org // This file is in the public domain {$MODE objfpc} program asiotest; uses SysUtils, Classes, Crt, AsyncIO; type TASIOTest = class protected FManager: TAsyncIOManager; Input: THandleStream; procedure InputAvailable(UserData: TObject); procedure Timeout(UserData: TObject); public constructor Create(AManager: TAsyncIOManager); destructor Destroy; override; end; procedure TASIOTest.InputAvailable(UserData: TObject);var b: Byte; begin b := Input.ReadByte; Write('Input available: '); if b >= 32 then WriteLn('"', Chr(b), '"') else WriteLn('#', b); case b of Ord('q'): FManager.BreakRun; Ord('t'): FManager.ClearTimeoutHandler; end; end; procedure TASIOTest.Timeout(UserData: TObject); begin WriteLn('Timeout'); end; constructor TASIOTest.Create(AManager: TAsyncIOManager); begin inherited Create; FManager := AManager; Input := THandleStream.Create(StdInputHandle); AManager.SetReadHandler(Input.Handle, @InputAvailable, nil); AManager.SetTimeoutHandler(@Timeout, nil); AManager.Timeout := 1000; end; destructor TASIOTest.Destroy; begin Input.Free; end; var AsyncIOManager: TAsyncIOManager; app: TASIOTest; begin WriteLn('Exit with "q", use "t" to stop the timeout handler'); AsyncIOManager := TAsyncIOManager.Create; app := TASIOTest.Create(AsyncIOManager); AsyncIOManager.Run; app.Free; AsyncIOManager.Free; end. { $Log: asiotest.pp,v $ Revision 1.4 2005/02/14 17:13:18 peter * truncate log } |
¿Has encontrado algún error? ¿Tienes la solución? Dejame tu correción ;-)
Antes de comentar: Gran parte de los ejercicios propuestos no tienen librerías debido a que Wordpress las eliminó al verlas como etiquetas HTML. Si sabes/tienes/conoces las librerías que hacen falta, déjalo en los comentarios. Y lo mas importante: Todos los ejemplos fueron realizados por personas con únicamente conocimiento básico del lenguaje, no de programación.
Otro punto importante: Si vas a sugerir un segmento de código en algún lenguaje debes hacerlo así:
- Si es lenguaje C <code lang="c">Código en C</code>
- Si es lenguaje Pascal <code lang="pascal">Aquí dentro el código de Pascal</code>.
De esta manera el código coloreas el código.
Otro punto importante para muchos que crees que te he ignorado: Todos los comentarios los reviso y en su debido momento los apruebo, pero ojo con el con lo siguiente:Me reservo el derecho de alterar, publicar o no los comentarios así como también cambiar mis condiciones en el momento que yo lo requiera.
¿Si estas de acuerdo? Adelante! que ya te he quitado bastante tiempo leyendo esta basura :)