Forum > Portuguese
Cancelar a aplicação Lazarus com CTLR+C
(1/1)
automacaosamos:
Bom dia fiz o código abaixo usando o Simple Program
ele funciona perfeitamente mas quando tento encerrar com o CTRL + C
ele da a mensagem: Project raised exception class 'External: SIGINT'. At address 7703B095
o que poderia ser ??
--- Code: Pascal [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---program apisamos; {$mode objfpc}{$H+} uses {$IFDEF UNIX}{$IFDEF UseCThreads} cthreads, {$ENDIF}{$ENDIF} SysUtils, Classes, fphttpapp, httpdefs, httproute, fpjson, jsonparser; procedure jsonResponse(var res: TResponse; data: String);begin res.Content := data; res.Code := 200; res.ContentType := 'application/json'; res.ContentLength := length(res.Content); res.SendContent;end; procedure timeEndpoint(req: TRequest; res: TResponse);var jObject : TJSONObject;begin jObject := TJSONObject.Create; try jObject.Strings['time'] := 'Servidor OK ' + TimeToStr(Time) + req.URI; jsonResponse(res, jObject.AsJSON); finally jObject.Free; end;end; procedure apiEndpoint(req: TRequest; res: TResponse);var JSONObject : TJSONObject; Rota : String; Metodo : String; Uri : String;begin req.RouteParams['']; Metodo := req.Method; Rota := req.RouteParams['name']; Uri := req.URI; JSONObject := TJSONObject.Create; JSONObject := TJSONObject(GetJSON('{"teste":"ok"}')); JSONResponse(res, JSONObject.AsJSON); end; begin Application.Port := 8080; HTTPRouter.RegisterRoute('/time' , @timeEndpoint, true); HTTPRouter.RegisterRoute('/api/:name', @apiEndpoint); Application.Threaded := true; writeln('Servidor Rodando: http://localhost:' + IntToStr(Application.Port) + '/time'); Application.Initialize; Application.Run;end.
Gustavo 'Gus' Carreno:
Oies,
Por defeito os sinais não têm uma rotina que faça com que a mensagem desse sinal seja mais humana.
Pelo facto de que estamos a falar da linguagem Object Pascal, qualquer erro normalmente é transmitido como uma Exceção.
Neste caso, quando se tenta encerrar o programa com CTRL+C, o que é enviado para a aplicação é o sinal SIGINT ou Interrupt Signal.
A maneira que a linguagem tem de anunciar que detetou o envio do sinal SIGINT é pelo mecanismo de exceções, e é isso mesmo que encontrou.
Espero que faça sentido... Após uma porrada de anos no Reino Unido, o cérebro começa a pensar mais em Inglês que em Tuga e, por incrivel que pareça, custou-me bastante articular isto em Português, mais do que eu gostaria de admitir, LOL!!
Grande abraço,
Gus
Navigation
[0] Message Index