Thales Pontes Martins

Membros
  • Content Count

    459
  • Joined

  • Last visited

Community Reputation

0 Neutro

About Thales Pontes Martins

  • Birthday 12/14/1986

Contatos

  • Website URL
    http://
  • ICQ
    0

Perfil

  • Gender
    Male
  • Location
    Vila Velha - ES
  • Interests
    Fear Factory, Sepultura, Napalm Death, Snooker, Algorítmos.
  1. Eu não sei se o Delphi consegue trabalhar com Framework 4, não sei como é o mecanismo de interação entre o Delphi e o Microsoft .NET Framework... Até gostaria de saber, mas não entendí a base ainda. Eu chutaria que funciona, mas pra testar isso eu teria que configurar o diretório virtual do IIS com o Framework 4, como o Delphi manda fazer no erro que eu coloquei no primeiro post, e testar novamente, mas ainda não consegui fazer isso. Abraços...
  2. Ok, já instalei a versão 4. E agora, o que eu faço?
  3. Olha só... na mensagem de erro que o Delphi me retorna ele fala que o diretório virtual não está configurado com ASP.NET versão 1.1.... e manda eu usar o aspnet_regiis.exe para configurar o servidor IIS local. Pois bem... esse arquivo aspnet_regiis.exe existe na minha máquina em 3 lugares... são eles: C:\WINDOWS\ServicePackFiles\i386 C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 Ou seja... isso significa que a versão 1.1.4.3.22 e a versão 2.0.5.0.7.2.7 estão instaladas... porem a versão que está no meu Iniciar -> Programas é a versão 1.1... e quanto a esse aspnet_regiis.exe que existe na pasta C:\WINDOWS\ServicePackFiles\i386 eu não sei de qual versão é porque quando chamo "aspnet_regiis.exe /?" não dá saída nenhuma, ao contrário dos outros dois que mostram a ajuda do comando. Se o Delphi tá pedindo a versão 1.1 então é melhor usar ela né? O que voce me recomenda? E só abrindo um parentesis, a respeito dos domínios e servidores DNS... por exemplo: existe uma empresa aqui na minha cidade que hospeda sites. A página principal da empresa é apontada pelo domínio www.idcomercial.com.br, e um amigo hospedou um site que é apontado pelo domínio www.petshopdogboy.com.br. Quando dou o comando ping nos dois domínios eles retornam endereços ip idênticos, porém quando digito esse endereço ip na barra de endereços do firefox ele mostra o painel de controle de uma aplicação que gerencia o servidor. No caso do meu domínio, ele está hospedado numa empresa cujo a página principal é apontada pelo domínio www.namecheap.com, e a minha página é apontada pelo domínio www.viciosanimes.com, aí quando dou um ping nos dois domínios são retornados endereços ip diferentes. Quando digito o endereço ip da página deles no firefox, aparece a página deles normalmente, mas já quando digito o endereço ip da minha página, aparece uma página dizendo que as pessoas que gerenciam esse servidor instalaram o cPanel e o WebHost Manager que está rodando sob o servidor Apache de maneira correta....e tal.... Então, qual o comando pra saber pra onde o domínio REALMENTE aponta, e como faço, já que o domínio é meu, pra mudar ele no servidor DNS e fazer ele apontar pra onde eu quiser e bem entender?
  4. É o seguinte galera... Eu sou completamente ignorante em .NET e ASP, mas tenho que colocar o sistema de um site pra funcionar. Eu escolhi ASP.NET porque eu já sei Delphi, e o Delphi 2006, que é o que eu tenho instalado, dá suporte a essa tecnologia. Então terei que aprender. Eu queria saber se voces me ajudam a colocar um exemplo de aplicação web pra rodar, seja no servidor que eu contratei pra hospedar meu site ou seja no meu pc com o IIS. Primeiro eu tenho que descobrir se o servidor que eu contratei roda sites em ASP. O servidor é o http://www.namecheap.com/ O meu domínio é http://www.viciosanimes.com/ Tem uma página de teste lá dizendo que tá em construção... Aí eu peguei um tutorial de ASP em Delphi 8... Acho que serve também pra Delphi 2006 que é o que eu tenho. O tutorial: http://delphi.about.com/od/aspnet/a/aspnetcourse.htm Nesse tutorial ele fala pra eu baixar a versão atualizada do aplicativo exemplo, pra eu poder então rodar ele e começar a aprender daí. Eis o código do aplicativo: http://viciosanimes.com/BDSWebExample_SOURCE.zip Aí eu coloquei meu IIS, criei um diretório virtual para o site e coloquei o conteúdo desse exemplo dentro. Quando tento acessar pelo localhost nada acontece, e quando transfiro isso pra o hospedeiro do meu site tb não funciona. A partir desse momento eu não tenho a menor idéia do que devo fazer porque sou completamente ignorante. E estou tendo dificuldades pra estudar esse tutorial devido a sérios problemas psicológicos(já estou indo no psiquiatra). Eu agora parei no ponto em que eu abro o meu Delphi for the Microsoft .NET framework 2006 e abro o arquivo BDSWebExample.bdsproj ou BDSWebExample.dpr que são os arquivos do projeto; aí ele abre 2 abas: o código do arquivo BDSWebExample.dpr e outra aba de título "Default.aspx" que mostra, na interface gráfica, um formulário que acredito ser o que seria o resultado de um pré processamento em html da página inicial do exemplo, e no modo código mostra o código do arquivo default.pas. Aí eu tento rodar a aplicação pelo Delphi e ele me retorna o seguinte erro: The project cannot be debugged because virtual directory "BDSWebExample"is not configured with ASP.NET version 1.1. Use aspnet_regiis.exe to configure the local IIS web server. Details: + $2C[5343370B]{dotnetaspide100.bpl} AspIISVDirUtils.AspIISVDirUtils.ValidateOrCreateIISVirtualDirBeforeRun (Line 515, "AspIISVDirUtils.pas" + 37) + $2C + $35[5343585E]{dotnetaspide100.bpl} AspProjectOptions.AspProjectOptions.TAspProjectOptionsEditor.ValidateIISVirtualDir (Line 720, "AspProjectOptions.pas" + 1) + $35 + $8[53440429]{dotnetaspide100.bpl} AspProject.AspProject.TAspOptionsInterfaceDelegate.DebuggerBeforeProgramLaunch (Line 1627, "AspProject.pas" + 16) + $8 + $1E[20C1BBE3]{coreide100.bpl} DebuggerMgr.DebuggerMgr.TProjectEvent.Send (Line 562, "DebuggerMgr.pas" + 2) + $1E + $16[20C1F0E3]{coreide100.bpl} DebuggerMgr.DebuggerMgr.TDebuggerMgr.BeforeProgramLaunch (Line 1873, "DebuggerMgr.pas" + 2) + $16 + $1C[20A8EC32]{dbkdebugide100.bpl} Debug.Debug.TDebugger.Run (Line 10789, "Debug.pas" + 21) + $1C + $2[20A89F82]{dbkdebugide100.bpl} Debug.Debug.TDebugger.Run (Line 8762, "Debug.pas" + 0) + $2 [0041346F]{bds.exe } + $C[52038674]{vcl100.bpl } Controls.Controls.TControl.Perform (Line 5018, "Controls.pas" + 5) + $C + $1F[5203C519]{vcl100.bpl } Controls.Controls.TWinControl.IsControlMouseMsg (Line 7130, "Controls.pas" + 15) + $1F + $6[52095EF5]{vcl100.bpl } ComCtrls.ComCtrls.TToolBar.WndProc (Line 19403, "ComCtrls.pas" + 80) + $6 + $6[5203C150]{vcl100.bpl } Controls.Controls.TWinControl.MainWndProc (Line 7021, "Controls.pas" + 3) + $6 + $0[51F40BB0]{rtl100.bpl } Classes.Classes.StdWndProc (Line 11572, "classes.pas" + 8) + $0 + $6A[7E368731]{USER32.dll } GetDC + $6A + $14A[7E368811]{USER32.dll } GetDC + $14A + $122[7E3689C8]{USER32.dll } GetWindowLongW + $122 + $A[7E3696C2]{USER32.dll } DispatchMessageA + $A Agora eu preciso saber como configurar o .NET framework e como configurar o meu IIS pra testar o código... E se o meu hospedeiro aceita ASP... Voces me ajudam?
  5. Pois é.. esse Microsoft Virtual PC é bom... O jogo rodou nele... mais ainda está na velocidade normal... tenho que descobrir agora como faço para diminuir agora então...
  6. Pois é cara.... é que eu queria roubar nesse jogo... e ficando 4 vezes mais lento ficaria bem mais fácil né? Eu tentei instalar o VMWare aqui mas travou minha máquina e não conseguí fazer nada do que eu queria.... Vou tentar esse que voce sugeriu... Volto com respostas... Valeu mesmo... Tava atráz de um debugador pra ver se funcionava mais ainda não tinha conseguido nada....
  7. Obrigado senhores... essa foi muito boa... Não respondí antes porque estava jogando...kkkk Heim... aproveitando o tópico pra outra dúvida.... Eu preciso fazer o mecanismo que marca o tempo do sistema rodar 4 vezes mais devagar... como eu faço isso? Alguém conhece uma maneira? Valeu... obrigado a todos..... Um abraço....
  8. Oi galera..... É o seguinte, eu estou precisando fazer um cheat de jogo.... Preciso salvar um estado do jogo para recuperá-lo depois quando precisar... Mas para isso eu precisaria salvar a memória que está sendo usada pelo executável em disco, e depois colocala na memória denovo quando precisar recuperar.... Alguém aí saberia a forma correta de se fazer isso no Delphi? Vocês me ajudam?
  9. O cara pode ter desenhado no AutoCAD e depois ter transformado as coordenadas em texto e inserido o código. Já fiz muito isso para fazer o delphi desenhar gráficos por código.
  10. Download Estou colocando esse curso de digitação como versão beta para que verifiquem bugs, eu por enquanto acredito não haver. Mas é pra Windows heim, só tem pingüin aqui. Abraços. Informações do arquivo de ajuda: O objetivo desse curso é capacitar o aluno a digitar rapidamente sem a necessidade de olhar para o teclado nem para a tela. Aqueles que forem capazes de concluir o curso se tornarão os melhores digitadores do mundo. Instruções: Digite o seu nome na tela inicial para começar o curso. Depois para continuar o curso de onde parou, deverá digitar o nome exatamente como foi digitado da primeira vez, ou o programa cadastrará novo aluno. O programa permite 2 tipos de teclado, brasileiro e americano adaptado para língua portuguesa(Layout "Estados Unidos Internacional"), esse último usando layout de teclado idêntico ao americano mas permitindo que os acentos sejam colocados em cima dos caracteres. Deve-se sempre começar a digitar na posição de repouso que é: Dedo 1(mindinho esquerdo) na letra A Dedo 2(anelar esquerdo) na letra S Dedo 3(médio esquerdo) na letra D Dedo 4(indicador esquerdo) na letra F Dedo 5(indicador direito) na letra J Dedo 6(médio direito) na letra K Dedo 7(anelar direito) na letra L Dedo 8(mindinho direito) na letra Ç ou ; no americano Dedos 9 (Polegares) na barra de espaços É possível achar a posição inicial sem a necessidade de olhar para o teclado, pois as letras F e J tem uma saliência para se sentir pelo tato. A partir dessa posição, irás digitar a letra indicada com o dedo indicado na imagem, até que seja informado que você passou de lição, indo assim até que seja informado que você concluiu o curso. E se fechar o programa, tens que digitar o seu nome denovo para poder continuar da lição em que parou. No início poderás olhar para o teclado para saber qual é a posição das teclas, mas assim que tiveres memorizado, deverás evitar olhar para o teclado, e quando esquecer a posição de alguma tecla, a indicação do dedo na tela deverá te ajudar a lembrar. Escolha o tipo de teclado que possui na tela onde vais digitar. O teclado brasileiro é aquele que possui o Ç a direita da letra L, e o americano possui o ; a direita da letra L. As letras maiúsculas e os caracteres de cima das teclas são conseguidos quando se bate a tecla enquanto uma das teclas Shift está pressionada. Pressione a tecla Shift do lado direito quando fores fazer um caractere secundário cujo a tecla é pressionada com um dedo da mão esquerda, e a tecla Shift do lado esquerdo quando fores fazer um caractere secundário cujo a tecla é pressionada com um dedo da mão direita. As teclas Shift devem ser pressionadas com os dedos mindinhos. Os números nunca devem ser digitados no teclado numérico. O que irá determinar se você passou de lição é o número de erros que você cometeu e o tempo que você levou para digitar o que foi pedido. O curso é composto de 114 lições. Concluindo todas você será capaz de digitar profissionalmente. Se você não quiser fazer todas as lições e desejar um curso mais intensivo, poderá fazer apenas as lições 107, 108, 109, 110, 111, 112, 113 e 114, que no final terás a mesma capacidade do que se tivesse feito o curso inteiro, assim como terás a mesma capacidade se fizer só a última. Mas o mais recomendado é que faça o curso todo ou pelo menos a partir da lição 101, ou em último caso a partir da lição 107. Para trocar de lição digite o seu nome na tela de abertura seguido de $#Lição, por exemplo, para trocar o aluno Thales para a lição 107 seria assim: Thales $#107 Ou se quiser apenas entrar em uma lição sem aluno registrado e só assim: $#107 Sempre que estiveres treinando e digitares uma tecla errada, será incrementado o número de erros e será esperado que você digite a tecla correta, e enquanto não o fizer não será prosseguido para a próxima tecla. Poderás conceder o foco para o Memo presente no formulário para que verifiques os erros cometidos. Não deixe de reportar os bugs que por ventura achem para [email protected]
  11. Sabem aquele componente LCDNumber que só existia na biblioteca CLX, bom agora existe na VCL também. O componente LCDNumber é um componente visual que serve para mostrar datas, horas, temperaturas, etc... Programa exemplo -> Relógio despertador Listagem da unit do componente ULCDNumber.pas -> unit ULCDNumber; { Componente LCDNumber Autor: Thales Pontes Martins [email protected] Dezembro de 2006 } interface uses SysUtils, Classes, Controls, ULCDData, Windows, Dialogs, Graphics, Forms, ExtCtrls; type TBevelShape = (bsSingle, bsBox, bsFrame, bsTopLine, bsBottomLine, bsLeftLine, bsRightLine, bsSpacer); TDrawProc = procedure(Canvas : TCanvas; var Temp : TTempDigit); TLCDNumber = class(TGraphicControl) private { Private declarations } //******Bevel***** FStyle: TBevelStyle; FShape: TBevelShape; //******Bevel***** _TempDigit : TTempDigit; _Value : string; _ValAspect, _SizeAspect, _TextHeight, _TextWidth : double; _LastChange : integer; _PenColor, _BrushColor, _Color : TColor; procedure SetStyle(Value: TBevelStyle); procedure SetShape(Value: TBevelShape); //******Bevel***** procedure UpdateTemp(Index : integer); procedure DrawDigit(index : integer; NewC, OldC: Char; DrawAll : boolean); //******Bevel***** protected { Protected declarations } procedure Paint; override; procedure SetValue(Val : String); procedure SetPenColor(Val : TColor); procedure SetBrushColor(Val : TColor); procedure SetColor(Val : TColor); public { Public declarations } constructor Create(AOwner : TComponent); override; destructor Destroy; override; published { Published declarations } property Value : string read _Value write SetValue; property PenColor : TColor read _PenColor write SetPenColor default 0; property BrushColor : TColor read _BrushColor write SetBrushColor default 0; property Color : TColor read _Color write SetColor default ClBtnFace; property Align; property Anchors; property Constraints; property ParentShowHint; property Shape: TBevelShape read FShape write SetShape default bsBox; property ShowHint; property Style: TBevelStyle read FStyle write SetStyle default bsLowered; property Visible; property Width; property Height; property AlignWithMargins; property Left; property Top; property Cursor; property Hint; property HelpType; property HelpKeyword; property HelpContext; property Margins; property OnClick; property OnDblClick; property OnMouseDown; property OnMouseUp; end; procedure DrawPol1(Canvas : TCanvas; var Temp : TTempDigit); procedure DrawPol2(Canvas : TCanvas; var Temp : TTempDigit); procedure DrawPol3(Canvas : TCanvas; var Temp : TTempDigit); procedure DrawPol4(Canvas : TCanvas; var Temp : TTempDigit); procedure DrawPol5(Canvas : TCanvas; var Temp : TTempDigit); procedure DrawPol6(Canvas : TCanvas; var Temp : TTempDigit); procedure DrawPol7(Canvas : TCanvas; var Temp : TTempDigit); procedure DrawPol8(Canvas : TCanvas; var Temp : TTempDigit); procedure DrawPol9(Canvas : TCanvas; var Temp : TTempDigit); procedure DrawPol10(Canvas : TCanvas; var Temp : TTempDigit); procedure DrawPol11(Canvas : TCanvas; var Temp : TTempDigit); procedure DrawPol12(Canvas : TCanvas; var Temp : TTempDigit); procedure DrawPol13(Canvas : TCanvas; var Temp : TTempDigit); procedure DrawPol14(Canvas : TCanvas; var Temp : TTempDigit); procedure DrawPol15(Canvas : TCanvas; var Temp : TTempDigit); procedure DrawPol16(Canvas : TCanvas; var Temp : TTempDigit); procedure DrawPol17(Canvas : TCanvas; var Temp : TTempDigit); procedure DrawPol18(Canvas : TCanvas; var Temp : TTempDigit); procedure DrawPol19(Canvas : TCanvas; var Temp : TTempDigit); procedure DrawPol20(Canvas : TCanvas; var Temp : TTempDigit); procedure DrawPol21(Canvas : TCanvas; var Temp : TTempDigit); procedure DrawPol22(Canvas : TCanvas; var Temp : TTempDigit); procedure DrawPol23(Canvas : TCanvas; var Temp : TTempDigit); procedure DrawPol24(Canvas : TCanvas; var Temp : TTempDigit); procedure DrawPol25(Canvas : TCanvas; var Temp : TTempDigit); procedure DrawPol26(Canvas : TCanvas; var Temp : TTempDigit); procedure DrawPol27(Canvas : TCanvas; var Temp : TTempDigit); procedure DrawPol28(Canvas : TCanvas; var Temp : TTempDigit); procedure DrawPol29(Canvas : TCanvas; var Temp : TTempDigit); procedure DrawPol30(Canvas : TCanvas; var Temp : TTempDigit); procedure DrawPol31(Canvas : TCanvas; var Temp : TTempDigit); procedure Register; implementation const CharOff = 127; CharHi = 227; CharAspect = 1.7874015748031496062992125984252; DrawPol : array [0..30] of TDrawProc = (DrawPol1,DrawPol2,DrawPol3,DrawPol4,DrawPol5,DrawPol6, DrawPol7,DrawPol8,DrawPol9,DrawPol10,DrawPol11,DrawPol12,DrawPol13,DrawPol14, DrawPol15,DrawPol16,DrawPol17,DrawPol18,DrawPol19,DrawPol20,DrawPol21, DrawPol22,DrawPol23,DrawPol24,DrawPol25,DrawPol26,DrawPol27,DrawPol28, DrawPol29,DrawPol30,DrawPol31); procedure Register; begin RegisterComponents('Samples', [TLCDNumber]); end; function RoundFloatPoint(pt : TFloatPoint) : TPoint; begin Result.X:=Round(pt.X); Result.Y:=Round(pt.Y); end; function RoundRect(rc : TFloatRect) : TRect; begin Result.Top:=Round(rc.Top); Result.Bottom:=Round(rc.Bottom); Result.Left:=Round(rc.Left); Result.Right:=Round(rc.Right); end; constructor TLCDNumber.Create(AOwner : TComponent); begin inherited Create(AOwner); //**********Bevel******** ControlStyle := ControlStyle + [csReplicatable]; FStyle := bsLowered; FShape := bsBox; Width := 50; Height := 50; //**********Bevel******** _LastChange:=0; _Color:=ClBtnFace; Width:=127; Height:=227; _TempDigit.Master:=Self; Canvas.Pen.Width:=1; Canvas.Pen.Color:=0; Canvas.Brush.Color:=0; end; procedure TLCDNumber.UpdateTemp(Index : integer); var i : integer; begin _ValAspect:=length(_Value)/CharAspect; _SizeAspect:=Width/Height; if (_ValAspect < _SizeAspect) then begin _TextWidth:=Height/CharAspect; for I := Low(LCData) to High(LCData) do begin if ((i mod 2) = 0){That is X} then TTempData(_TempDigit)[i]:=Round(( ((LCData[i]+(CharOff*(Index-1)))/CharOff)*_TextWidth)+ ((width-((height/CharAspect)*length(_Value)))/2)) else {That is Y} TTempData(_TempDigit)[i]:=Round( (LCData[i]/CharHi)*Height); end; end else begin _TextHeight:=Width/_ValAspect; for I := Low(LCData) to High(LCData) do begin if ((i mod 2) = 0){That is X} then TTempData(_TempDigit)[i]:=Round( ((LCData[i]+(CharOff*(Index-1)))/CharOff)*(Width/length(_Value))) else {That is Y} TTempData(_TempDigit)[i]:=Round(( (LCData[i]/CharHi)*_TextHeight)+((Height-_TextHeight)/2)); end; end; end; destructor TLCDNumber.Destroy; begin inherited Destroy; end; procedure TLCDNumber.Paint; //*****Bevel***** const XorColor = $00FFD8CE; var Color1, Color2: TColor; Temp: TColor; //*****Bevel***** i : integer; //*****Bevel***** procedure BevelRect(const R: TRect); begin with Canvas do begin Pen.Color := Color1; PolyLine([Point(R.Left, R.Bottom), Point(R.Left, R.Top), Point(R.Right, R.Top)]); Pen.Color := Color2; PolyLine([Point(R.Right, R.Top), Point(R.Right, R.Bottom), Point(R.Left, R.Bottom)]); end; end; procedure BevelLine(C: TColor; X1, Y1, X2, Y2: Integer); begin with Canvas do begin Pen.Color := C; MoveTo(X1, Y1); LineTo(X2, Y2); end; end; //*****Bevel***** begin if (_Color <> (Parent as TForm).Color) then begin Canvas.Brush.Color:=_Color; Canvas.Pen.Color:=_Color; Canvas.Rectangle(0,0,Width-1,Height-1); Canvas.Brush.Color:=_BrushColor; Canvas.Pen.Color:=_PenColor; end; //*****Bevel***** with Canvas do begin if (csDesigning in ComponentState) then begin if (FShape = bsSpacer) then begin Pen.Style := psDot; Pen.Mode := pmXor; Pen.Color := XorColor; Brush.Style := bsClear; Rectangle(0, 0, ClientWidth, ClientHeight); Exit; end else begin Pen.Style := psSolid; Pen.Mode := pmCopy; Pen.Color := clBlack; Brush.Style := bsSolid; end; end; Pen.Width := 1; if (FShape = bsSingle) then begin Brush.Color:=0; Pen.Color:=0; end else if FStyle = bsLowered then begin Color1 := clBtnShadow; Color2 := clBtnHighlight; end else begin Color1 := clBtnHighlight; Color2 := clBtnShadow; end; case FShape of bsBox: BevelRect(Rect(0, 0, Width - 1, Height - 1)); bsFrame: begin Temp := Color1; Color1 := Color2; BevelRect(Rect(1, 1, Width - 1, Height - 1)); Color2 := Temp; Color1 := Temp; BevelRect(Rect(0, 0, Width - 2, Height - 2)); end; bsTopLine: begin BevelLine(Color1, 0, 0, Width, 0); BevelLine(Color2, 0, 1, Width, 1); end; bsBottomLine: begin BevelLine(Color1, 0, Height - 2, Width, Height - 2); BevelLine(Color2, 0, Height - 1, Width, Height - 1); end; bsLeftLine: begin BevelLine(Color1, 0, 0, 0, Height); BevelLine(Color2, 1, 0, 1, Height); end; bsRightLine: begin BevelLine(Color1, Width - 2, 0, Width - 2, Height); BevelLine(Color2, Width - 1, 0, Width - 1, Height); end; bsSingle: begin Canvas.MoveTo(0,0); Canvas.LineTo(width-1,0); Canvas.LineTo(width-1,height-1); Canvas.LineTo(0,height-1); Canvas.LineTo(0,0); end; end; end; //*****Bevel***** Canvas.Pen.Color:=_PenColor; Canvas.Brush.Color:=_BrushColor; UpdateTemp(1); for I := 1 to length(_Value) do DrawDigit(i,_Value[i],#0,true); end; procedure TLCDNumber.DrawDigit(index : integer; NewC, OldC: Char; DrawAll : boolean); var Old, New : Cardinal; i : integer; begin if (index <> _LastChange) then UpdateTemp(index); Old:=GetCharInf(OldC); New:=GetCharInf(NewC); if DrawAll then begin for I := 0 to 30 do if GetBit(i,New) then DrawPol[i](Canvas,_TempDigit) end else begin Canvas.Brush.Color:=_Color; Canvas.Pen.Color:=_Color; for I := 0 to 30 do begin if not(GetBit(i,New)) then if GetBit(i,Old) then DrawPol[i](Canvas,_TempDigit); end; Canvas.Brush.Color:=BrushColor; Canvas.Pen.Color:=PenColor; for I := 0 to 30 do begin if (OldC in ['0'..'9']) then begin if GetBit(i,New) then if not(GetBit(i,Old)) then DrawPol[i](Canvas,_TempDigit); end else begin if GetBit(i,New) then DrawPol[i](Canvas,_TempDigit); end; end; end; _LastChange:=index; end; procedure TLCDNumber.SetValue(Val: string); var i : integer; begin if (Val <> _Value) then begin if not(Visible) then begin _Value:=Val; Exit; end; if (length(Val) <> length(_Value)) then begin _Value:=Val; Invalidate; end else begin for I := 1 to length(Val) do begin if (Val[i] <> _Value[i]) then DrawDigit(i,Val[i],_Value[i],false); end; _Value:=Val; end; end; end; procedure TLCDNumber.SetPenColor(Val: TColor); begin if (_PenColor <> Val) then begin _PenColor:=Val; Canvas.Pen.Color:=Val; Invalidate; end; end; procedure TLCDNumber.SetBrushColor(Val: TColor); begin if (_BrushColor <> Val) then begin _BrushColor:=Val; Canvas.Brush.Color:=Val; Invalidate; end; end; procedure TLCDNumber.SetColor(Val: TColor); begin if (Val <> _Color) then begin _Color:=Val; Invalidate; end; end; //******Bevel****** procedure TLCDNumber.SetStyle(Value: TBevelStyle); begin if Value <> FStyle then begin FStyle := Value; Invalidate; end; end; procedure TLCDNumber.SetShape(Value: TBevelShape); begin if Value <> FShape then begin FShape := Value; Invalidate; end; end; //******Bevel****** procedure DrawPol1(Canvas : TCanvas; var Temp : TTempDigit); begin Canvas.Polygon(Temp.Pol1); end; procedure DrawPol2(Canvas : TCanvas; var Temp : TTempDigit); begin Canvas.Polygon(Temp.Pol2); end; procedure DrawPol3(Canvas : TCanvas; var Temp : TTempDigit); begin Canvas.Polygon(Temp.Pol3); end; procedure DrawPol4(Canvas : TCanvas; var Temp : TTempDigit); begin Canvas.Polygon(Temp.Pol4); end; procedure DrawPol5(Canvas : TCanvas; var Temp : TTempDigit); begin Canvas.Polygon(Temp.Pol5); end; procedure DrawPol6(Canvas : TCanvas; var Temp : TTempDigit); begin Canvas.Polygon(Temp.Pol6); end; procedure DrawPol7(Canvas : TCanvas; var Temp : TTempDigit); begin Canvas.Polygon(Temp.Pol7); end; procedure DrawPol8(Canvas : TCanvas; var Temp : TTempDigit); begin Canvas.Polygon(Temp.Pol8); end; procedure DrawPol9(Canvas : TCanvas; var Temp : TTempDigit); begin Canvas.Polygon(Temp.Pol9); end; procedure DrawPol10(Canvas : TCanvas; var Temp : TTempDigit); begin Canvas.Polygon(Temp.K); end; procedure DrawPol11(Canvas : TCanvas; var Temp : TTempDigit); begin Canvas.Polygon(Temp.Asterix); end; procedure DrawPol12(Canvas : TCanvas; var Temp : TTempDigit); begin Canvas.Polygon(Temp.OpenBrace); end; procedure DrawPol13(Canvas : TCanvas; var Temp : TTempDigit); begin Canvas.Polygon(Temp.CloseBrace); end; procedure DrawPol14(Canvas : TCanvas; var Temp : TTempDigit); begin Canvas.Polygon(Temp.OpenBrackets); end; procedure DrawPol15(Canvas : TCanvas; var Temp : TTempDigit); begin Canvas.Polygon(Temp.CloseBrackets); end; procedure DrawPol16(Canvas : TCanvas; var Temp : TTempDigit); begin Canvas.Polygon(Temp.Bigger); end; procedure DrawPol17(Canvas : TCanvas; var Temp : TTempDigit); begin Canvas.Polygon(Temp.Smaller); end; procedure DrawPol18(Canvas : TCanvas; var Temp : TTempDigit); begin Canvas.Polygon(Temp.EqualUp); end; procedure DrawPol19(Canvas : TCanvas; var Temp : TTempDigit); begin Canvas.Polygon(Temp.EqualDown); end; procedure DrawPol20(Canvas : TCanvas; var Temp : TTempDigit); begin Canvas.Polygon(Temp.OpenParentesis); end; procedure DrawPol21(Canvas : TCanvas; var Temp : TTempDigit); begin Canvas.Polygon(Temp.CloseParentesis); end; procedure DrawPol22(Canvas : TCanvas; var Temp : TTempDigit); begin Canvas.Polygon(Temp.Plus); end; procedure DrawPol23(Canvas : TCanvas; var Temp : TTempDigit); begin Canvas.Polygon(Temp.Slash); end; procedure DrawPol24(Canvas : TCanvas; var Temp : TTempDigit); begin Canvas.Polygon(Temp.BackSlash); end; procedure DrawPol25(Canvas : TCanvas; var Temp : TTempDigit); begin Canvas.Ellipse(Temp.PercentUp); end; procedure DrawPol26(Canvas : TCanvas; var Temp : TTempDigit); begin Canvas.Ellipse(Temp.PercentDown); end; procedure DrawPol27(Canvas : TCanvas; var Temp : TTempDigit); begin Canvas.Polygon(Temp.CommaTail); Canvas.Ellipse(Temp.CommaCircle); end; procedure DrawPol28(Canvas : TCanvas; var Temp : TTempDigit); begin Canvas.Ellipse(Temp.Dot); end; procedure DrawPol29(Canvas : TCanvas; var Temp : TTempDigit); begin Canvas.Ellipse(Temp.ColonSup); end; procedure DrawPol30(Canvas : TCanvas; var Temp : TTempDigit); begin Canvas.Ellipse(Temp.ColonInf); end; procedure DrawPol31(Canvas : TCanvas; var Temp : TTempDigit); begin Canvas.Pen.Width:=round(((Temp.Pol7[8].Y-Temp.Pol1[8].Y)/100)*10); if Canvas.Pen.Width < 1 then Canvas.Pen.Width:=1; Canvas.Brush.Color:=(Temp.Master as TLCDNumber).Color; Canvas.Ellipse(Temp.Degree); Canvas.Pen.Width:=1; Canvas.Brush.Color:=(Temp.Master as TLCDNumber).BrushColor; end; end. Listagem da Unit ULCDData.pas -> unit ULCDData; interface uses Types; type TFloatPoint = packed record X : double; Y : double; end; TFloatRect = packed record Top : double; Bottom : double; Left : double; Right : double; end; TTempData = array [0..576] of LongInt; TLCData = array [0..575] of double; PLCDDigit = ^TLCDDigit; TLCDDigit = packed record Pol1 : array [1..12] of TFloatPoint; Pol2 : array [1..6] of TFloatPoint; Pol3 : array [1..13] of TFloatPoint; Pol4 : array [1..7] of TFloatPoint; Pol5 : array [1..6] of TFloatPoint; Pol6 : array [1..13] of TFloatPoint; Pol7 : array [1..12] of TFloatPoint; Pol8 : array [1..5] of TFloatPoint; Pol9 : array [1..5] of TFloatPoint; K : array [1..11] of TFloatPoint; Asterix : array [1..19] of TFloatPoint; OpenBrace : array [1..27] of TFloatPoint; CloseBrace : array [1..27] of TFloatPoint; OpenBrackets : array [1..9] of TFloatPoint; CloseBrackets : array [1..9] of TFloatPoint; Bigger : array [1..7] of TFloatPoint; Smaller : array [1..7] of TFloatPoint; EqualUp : array [1..5] of TFloatPoint; EqualDown : array [1..5] of TFloatPoint; OpenParentesis : array [1..15] of TFloatPoint; CloseParentesis : array [1..15] of TFloatPoint; Plus : array [1..13] of TFloatPoint; CommaTail : array[1..12] of TFloatPoint; Slash : array[1..7] of TFloatPoint; BackSlash : array[1..7] of TFloatPoint; PercentUp : TFloatRect; PercentDown : TFloatRect; CommaCircle : TFloatRect; Dot : TFloatRect; ColonSup : TFloatRect; ColonInf : TFloatRect; Degree : TFloatRect; end; TTempDigit = packed record Pol1 : array [1..12] of TPoint; Pol2 : array [1..6] of TPoint; Pol3 : array [1..13] of TPoint; Pol4 : array [1..7] of TPoint; Pol5 : array [1..6] of TPoint; Pol6 : array [1..13] of TPoint; Pol7 : array [1..12] of TPoint; Pol8 : array [1..5] of TPoint; Pol9 : array [1..5] of TPoint; K : array [1..11] of TPoint; Asterix : array [1..19] of TPoint; OpenBrace : array [1..27] of TPoint; CloseBrace : array [1..27] of TPoint; OpenBrackets : array [1..9] of TPoint; CloseBrackets : array [1..9] of TPoint; Bigger : array [1..7] of TPoint; Smaller : array [1..7] of TPoint; EqualUp : array [1..5] of TPoint; EqualDown : array [1..5] of TPoint; OpenParentesis : array [1..15] of TPoint; CloseParentesis : array [1..15] of TPoint; Plus : array [1..13] of TPoint; CommaTail : array[1..12] of TPoint; Slash : array[1..7] of TPoint; BackSlash : array[1..7] of TPoint; PercentUp : TRect; PercentDown : TRect; CommaCircle : TRect; Dot : TRect; ColonSup : TRect; ColonInf : TRect; Degree : TRect; Master : TObject; end; const Glyphs : array [#32..#255] of Cardinal =( $00000000,// Dec = 32 $00000000,// ! Dec = 33 $00000006,// " Dec = 34 $00000000,// # Dec = 35 $000001EB,// $ Dec = 36 $03400000,// % Dec = 37 $00000000,// & Dec = 38 $40000000,// ' Dec = 39 $00080000,// ( Dec = 40 $00100000,// ) Dec = 41 $00000400,// * Dec = 42 $00200000,// + Dec = 43 $04000000,// , Dec = 44 $00000008,// - Dec = 45 $08000000,// . Dec = 46 $00400000,// / Dec = 47 $00000077,// 0 Dec = 48 $00000024,// 1 Dec = 49 $0000005D,// 2 Dec = 50 $0000006D,// 3 Dec = 51 $0000002E,// 4 Dec = 52 $0000006B,// 5 Dec = 53 $0000007B,// 6 Dec = 54 $00000025,// 7 Dec = 55 $0000007F,// 8 Dec = 56 $0000006F,// 9 Dec = 57 $30000000,// : Dec = 58 $00000000,// ; Dec = 59 $00010000,// < Dec = 60 $00060000,// = Dec = 61 $00008000,// > Dec = 62 $00000000,// ? Dec = 63 $00000000,// @ Dec = 64 $0000003F,// A Dec = 65 $0000007A,// B Dec = 66 $00000053,// C Dec = 67 $0000007C,// D Dec = 68 $0000005B,// E Dec = 69 $0000001B,// F Dec = 70 $0000007B,// G Dec = 71 $0000003E,// H Dec = 72 $000001C1,// I Dec = 73 $00000064,// J Dec = 74 $00000212,// K Dec = 75 $00000052,// L Dec = 76 $000000B7,// M Dec = 77 $00800036,// N Dec = 78 $00000077,// O Dec = 79 $0000001F,// P Dec = 80 $00000177,// Q Dec = 81 $00000213,// R Dec = 82 $0000006B,// S Dec = 83 $00000181,// T Dec = 84 $00000076,// U Dec = 85 $00000106,// V Dec = 86 $00000176,// W Dec = 87 $00C00000,// X Dec = 88 $0000006E,// Y Dec = 89 $0020005D,// Z Dec = 90 $00002000,// [ Dec = 91 $00800000,// \ Dec = 92 $00004000,// ] Dec = 93 $00000000,// ^ Dec = 94 $00000040,// _ Dec = 95 $40000000,// ` Dec = 96 $0000007D,// a Dec = 97 $0000007A,// b Dec = 98 $00000058,// c Dec = 99 $0000007C,// d Dec = 100 $0000005F,// e Dec = 101 $0000001B,// f Dec = 102 $0000006F,// g Dec = 103 $0000003A,// h Dec = 104 $10000100,// i Dec = 105 $00000064,// j Dec = 106 $00000212,// k Dec = 107 $00000024,// l Dec = 108 $00000138,// m Dec = 109 $00000038,// n Dec = 110 $00000078,// o Dec = 111 $0000001F,// p Dec = 112 $0000002F,// q Dec = 113 $00000018,// r Dec = 114 $0000006B,// s Dec = 115 $00000108,// t Dec = 116 $00000070,// u Dec = 117 $00000070,// v Dec = 118 $00000170,// w Dec = 119 $00C00000,// x Dec = 120 $0000006E,// y Dec = 121 $0020005D,// z Dec = 122 $00000800,// { Dec = 123 $00000180,// | Dec = 124 $00001000,// } Dec = 125 $00000000,// ~ Dec = 126 $00000000,// Dec = 127 $00000153,// € Dec = 128 $00000000,// Dec = 129 $00000000,// ‚ Dec = 130 $00000000,// ƒ Dec = 131 $00000000,// „ Dec = 132 $00000000,// … Dec = 133 $00000000,// † Dec = 134 $20000058,// ‡ Dec = 135 $00000000,// ˆ Dec = 136 $00000000,// ‰ Dec = 137 $00000000,// Š Dec = 138 $00000000,// ‹ Dec = 139 $00000000,// Œ Dec = 140 $00000000,// Dec = 141 $00000000,// Ž Dec = 142 $00000000,// Dec = 143 $00000000,// Dec = 144 $00000000,// ‘ Dec = 145 $00000000,// ’ Dec = 146 $00000000,// “ Dec = 147 $00000000,// ” Dec = 148 $00000000,// • Dec = 149 $00000000,// – Dec = 150 $00000000,// — Dec = 151 $00000000,// ˜ Dec = 152 $00000000,// ™ Dec = 153 $00000000,// š Dec = 154 $000001D3,// › Dec = 155 $00000000,// œ Dec = 156 $00000000,// Dec = 157 $00000000,// ž Dec = 158 $00000000,// Ÿ Dec = 159 $00000000,// Dec = 160 $00000000,// ¡ Dec = 161 $00000000,// ¢ Dec = 162 $00000000,// £ Dec = 163 $00000000,// ¤ Dec = 164 $00000000,// ¥ Dec = 165 $00000000,// ¦ Dec = 166 $00000000,// § Dec = 167 $00000000,// ¨ Dec = 168 $00000000,// © Dec = 169 $00000000,// ª Dec = 170 $00000000,// « Dec = 171 $00000000,// ¬ Dec = 172 $00000000,// ­ Dec = 173 $00000000,// ® Dec = 174 $00000000,// ¯ Dec = 175 $00000000,// ° Dec = 176 $00000000,// ± Dec = 177 $00000000,// ² Dec = 178 $00000000,// ³ Dec = 179 $00000000,// ´ Dec = 180 $00000000,// µ Dec = 181 $00000000,// ¶ Dec = 182 $00000000,// · Dec = 183 $00000000,// ¸ Dec = 184 $00000000,// ¹ Dec = 185 $00000000,// º Dec = 186 $00000000,// » Dec = 187 $00000000,// ¼ Dec = 188 $00000000,// ½ Dec = 189 $00000000,// ¾ Dec = 190 $00000000,// ¿ Dec = 191 $00000000,// À Dec = 192 $00000000,// Á Dec = 193 $00000000,//  Dec = 194 $00000000,// à Dec = 195 $00000000,// Ä Dec = 196 $00000000,// Å Dec = 197 $00000000,// Æ Dec = 198 $00000000,// Ç Dec = 199 $00000000,// È Dec = 200 $00000000,// É Dec = 201 $00000000,// Ê Dec = 202 $00000000,// Ë Dec = 203 $00000000,// Ì Dec = 204 $00000000,// Í Dec = 205 $00000000,// Î Dec = 206 $00000000,// Ï Dec = 207 $00000000,// Ð Dec = 208 $00000000,// não Dec = 209 $00000000,// Ò Dec = 210 $00000000,// Ó Dec = 211 $00000000,// Ô Dec = 212 $00000000,// Õ Dec = 213 $00000000,// Ö Dec = 214 $00000000,// × Dec = 215 $00000000,// Ø Dec = 216 $00000000,// Ù Dec = 217 $00000000,// Ú Dec = 218 $000001FF,// Û Dec = 219 $00000178,// Ü Dec = 220 $00000192,// Ý Dec = 221 $000001A4,// Þ Dec = 222 $0000008F,// ß Dec = 223 $00000000,// à Dec = 224 $00000000,// á Dec = 225 $00000017,// â Dec = 226 $00000000,// ã Dec = 227 $00000000,// ä Dec = 228 $00000000,// å Dec = 229 $00000000,// æ Dec = 230 $00000000,// ç Dec = 231 $00000000,// è Dec = 232 $00000000,// é Dec = 233 $00000000,// ê Dec = 234 $00000000,// ë Dec = 235 $00000000,// ì Dec = 236 $00000000,// í Dec = 237 $00000000,// î Dec = 238 $00000000,// ï Dec = 239 $00000049,// ð Dec = 240 $00000000,// não Dec = 241 $00008040,// ò Dec = 242 $00010040,// ó Dec = 243 $00000000,// ô Dec = 244 $00000000,// õ Dec = 245 $30000008,// ö Dec = 246 $00000000,// ÷ Dec = 247 $40000000,// ø Dec = 248 $20000000,// ù Dec = 249 $10000000,// ú Dec = 250 $00000000,// û Dec = 251 $00000007,// ü Dec = 252 $00000000,// ý Dec = 253 $00000100,// þ Dec = 254 $7FFFFFFF);// ÿ Dec = 255 LCData : TLCData = //polygon1 (13.5000, 24.9115, 13.7656, 22.9833, 14.3831, 20.3263, 15.2475, 18.5653, 16.8528, 16.5880, 18.5507, 15.2741, 20.5264, 13.9619, 23.2739, 13.5000, 102.0885, 13.5000, 86.5000, 40.5000, 40.5000, 40.5000, 13.5000, 24.9115, //Polygon2 13.5000,109.1324, 20.1000,113.5000, 40.5000,100.0000, 40.5000,40.5000, 13.5000,24.9115, 13.5000,109.1324, //Polygon3 106.9000, 113.5000, 113.5000, 109.1324, 113.5000, 23.2739, 113.0381, 20.5264, 111.9259, 18.5507, 110.4120, 16.8528, 108.4347, 15.2475, 106.6737, 14.3831, 104.0167, 13.7656, 102.0885, 13.5000, 86.5000, 40.5000, 86.5000, 100.0000, 106.9000, 113.5000, //polygon4 20.1000, 113.5000, 40.5000, 127.0000, 86.5000, 127.0000, 106.9000, 113.5000, 86.5000, 100.0000, 40.5000, 100.0000, 20.1000, 113.5000, //Polygon5 13.5000, 202.0885, 40.5000, 186.5000, 40.5000, 127.0000, 20.1000, 113.5000, 13.5000, 117.8676, 13.5000, 202.0885, //Polygon6 102.0885, 213.5000, 104.0167, 213.2344, 106.6737, 212.6169, 108.4347, 211.7525, 110.4120, 210.1472, 111.9259, 208.4493, 113.0381, 206.4736, 113.5000, 203.7261, 113.5000, 117.8676, 106.9000, 113.5000, 86.5000, 127.0000, 86.5000, 186.5000, 102.0885, 213.5000, //polygon7 13.5000, 202.0885, 13.7656, 204.0167, 14.3831, 206.6737, 15.2475, 208.4347, 16.8528, 210.4120, 18.5507, 211.9259, 20.5264, 213.0381, 23.2739, 213.5000, 102.0885, 213.5000, 86.5000, 186.5000, 40.5000, 186.5000, 13.5000, 202.0885, // Polygon8 52.0000, 100.0000, 75.0000, 100.0000, 75.0000, 40.5000, 52.0000, 40.5000, 52.0000, 100.0000, // Polygon9 52.0000, 186.5000, 75.0000, 186.5000, 75.0000, 127.0000, 52.0000, 127.0000, 52.0000, 186.5000, // K 113.5000, 199.3520, 86.5000, 186.5000, 40.5000, 127.0000, 20.1000, 113.5000, 40.5000, 100.0000, 86.5000, 40.5000 , 113.5000, 27.6480 , 107.8607, 57.0142 , 64.1910, 113.5000, 107.8607, 169.9858, 113.5000, 199.3520, // asterix 53.5000, 177.3549, 53.5000, 132.2788, 13.5000, 159.1860, 13.5000, 135.0821, 45.5837, 113.5000, 13.5000, 91.9179 , 13.5000, 67.8140 , 53.5000, 94.7212 , 53.5000, 49.6451 , 73.5000, 49.6451 , 73.5000, 94.7212 , 113.5000, 67.8140 , 113.5000, 91.9179 , 81.4163, 113.5000, 113.5000, 135.0821, 113.5000, 159.1860, 73.5000, 132.2788, 73.5000, 177.3549, 53.5000, 177.3549, // OpenBrace 105.8364, 213.5000, 94.6545, 213.5000, 73.2641, 208.6574, 55.3507, 195.8722, 45.1697, 177.4824, 45.1697, 127.0000, 21.1636, 113.5000, 45.1697, 100.0000, 45.1697, 49.5176 , 55.3507, 31.1278 , 73.2641, 18.3426 , 94.6545, 13.5000 , 105.8364, 13.5000 , 105.8364, 40.1668 , 99.1444, 40.1668 , 84.5260, 43.4763 , 76.0116, 49.5533 , 72.1697, 56.4927 , 72.1697, 100.0000, 53.5849, 113.5000, 72.1697, 127.0000, 72.1697, 170.5073, 76.0116, 177.4467, 84.5260, 183.5237, 99.1444, 186.8332, 105.8364, 186.8332, 105.8364, 213.5000, // CIoseBrace 21.1636, 213.5000, 32.3455, 213.5000, 53.7359, 208.6574, 71.6493, 195.8722, 81.8303, 177.4824, 81.8303, 127.0000, 105.8364, 113.5000, 81.8303, 100.0000, 81.8303, 49.5176 , 71.6493, 31.1278 , 53.7359, 18.3426 , 32.3455, 13.5000 , 21.1636, 13.5000 , 21.1636, 40.1668 , 27.8556, 40.1668 , 42.4740, 43.4763 , 50.9884, 49.5533 , 54.8303, 56.4927 , 54.8303, 100.0000, 73.4151, 113.5000, 54.8303, 127.0000, 54.8303, 170.5073, 50.9884, 177.4467, 42.4740, 183.5237, 27.8556, 186.8332, 21.1636, 186.8332, 21.1636, 213.5000, // OpenBrackets 95.9223, 213.5000, 31.0777, 213.5000, 31.0777, 13.5000 , 95.9223, 13.5000 , 95.9223, 40.5000 , 58.0777, 40.5000 , 58.0777, 186.5000, 95.9223, 186.5000, 95.9223, 213.5000, // CIoseBrackets 31.0777, 213.5000, 95.9223, 213.5000, 95.9223, 13.5000 , 31.0777, 13.5000 , 31.0777, 40.5000 , 68.9223, 40.5000 , 68.9223, 186.5000, 31.0777, 186.5000, 31.0777, 213.5000, // Bigger 13.5000, 176.8454, 113.5000, 113.5000, 13.5000, 50.1546 , 13.5000, 82.1158 , 63.0445, 113.5000, 13.5000, 144.8842, 13.5000, 176.8454, // Smaller 113.5000, 176.8454, 13.5000, 113.5000, 113.5000, 50.1546 , 113.5000, 82.1158 , 63.9555, 113.5000, 113.5000, 144.8842, 113.5000, 176.8454, // Equal Up 13.5000, 100.0000, 113.5000, 100.0000, 113.5000, 73.0000 , 13.5000, 73.0000 , 13.5000, 100.0000, // Equal Down 13.5000, 127.0000, 13.5000, 154.0000, 113.5000, 154.0000, 113.5000, 127.0000, 13.5000, 127.0000, // OpenParentesis 71.6250, 213.5000, 53.4821, 183.8127, 40.6806, 150.2537, 37.2647, 113.5000, 40.6806, 76.7463 , 53.4821, 43.1873 , 71.6250, 13.5000 , 105.3750, 13.5000 , 81.3439, 50.1889 , 67.6233, 82.4253 , 64.7353, 113.5000, 67.6233, 144.5747, 81.3439, 176.8111, 105.3750, 213.5000, 71.6250, 213.5000, // CIoseParentesis 21.6250, 213.5000, 55.3750, 213.5000, 73.5179, 183.8127, 86.3194, 150.2537, 89.7353, 113.5000, 86.3194, 76.7463 , 73.5179, 43.1873 , 55.3750, 13.5000 , 21.6250, 13.5000 , 45.6561, 50.1889 , 59.3767, 82.4253 , 62.2647, 113.5000, 59.3767, 144.5747, 45.6561, 176.8111, 21.6250, 213.5000, // Plus 50.0000, 163.5000, 50.0000, 127.0000, 13.5000, 127.0000, 13.5000, 100.0000, 50.0000, 100.0000, 50.0000, 63.5000 , 77.0000, 63.5000 , 77.0000, 100.0000, 113.5000, 100.0000, 113.5000, 127.0000, 77.0000, 127.0000, 77.0000, 163.5000, 50.0000, 163.5000, //CommaTail: 27.6453, 177.1241, 53.9998, 173.0648, 53.9282, 187.9864, 50.5732, 197.7387, 45.4899, 205.5609, 37.7633, 211.6561, 24.9372, 216.9098, 28.1051, 210.2339, 30.2400, 203.0212, 31.3584, 195.7070, 31.3584, 188.6975, 27.6453, 177.1241, // Slash 13.5000, 213.5000, 28.5935, 213.5000, 113.5000, 43.6869, 113.5000, 13.5000, 98.4065, 13.5000, 13.5000, 183.3131, 13.5000, 213.5000, // BackSlash 98.4065, 213.5000, 113.5000, 213.5000, 113.5000, 183.3131, 28.5935,13.5000, 13.5000, 13.5000, 13.5000, 43.6869, 98.4065, 213.5000, // Percent // PercentUp // Lel 13.5000, 28.5000 , 53.5000, 68.5000 , // PercentDown 73.5000, 158.5000, 113.5000, 198.5000, //Comma //CircleRec: //Ieft: 27.0000, //top: 159.5000, //right: 54.0000, //bottom: 186.5000, //dot: //CircleRec: //Ieft: 27.0000, //top: 186.5000, //right 54.0000, //bottom: 213.5000, //superiorCircleRec: //Ieft: 50.0000, //top: 56.7500, //right: 77.0000, //bottom: 83.7500, //colon: //inferiorCircleRec: //Ieft: 50.0000, //top: 143.2500, //right: 77.0000, //bottom: 170.2500, // Degree // Left 23.5000, // Top 23.5000, // Right 95.0000, // Bottom 95.0000); function GetBit(index: integer; val : Cardinal) : Boolean; function GetCharInf(ch : char) : Cardinal; implementation function GetBit(index: integer; val : Cardinal) : Boolean; begin Result:=((val and (1 shl index)) <> 0); end; function GetCharInf(ch : char) : Cardinal; begin if (ch in [#32..#255]) then result:=Glyphs[ch] else result:=$00000000; end; end.
  12. Cara, obrigado por responder. Mas não funcionou não. O programa de recuperação de arquivos não achou nenhum arquivo e só existe uma caixa de entrada.dbx. Como pode o Outlook simplesmente apagar as mensagens assim? Abraços.
  13. Uso o Outlook Express para gerenciar e-mails, aonde ficam as mensagens recebidas e enviadas, e um belo dia eu abro o outlook e as mais de 2000 mensagens que eu tinha desapareceram todas... E as da pasta de enviadas também. Quero saber como faço pra te-las de volta... :angry: Desconfio que foi em uma das vezes que o Outlook perguntou se eu queria compactar as mensagens e eu sempre digo sim. E dessa vez ele deve ter perguntado se eu desejava apagar todas as minhas mensagens e eu devo ter dito sim sem perceber... :angry: Valeu aí galera...
  14. Putz, não testei não. Há meses que eu não abro o Delphi, e pra testar isso aí deve dar um trabalho. Por isso que joguei verde perguntando se há algum erro, rsrsrs. Espero que o nosso colega Renato teste e nos diga. É, existe um erro sim. A dll nem compila. Mas existem mais 2 soluções que funcionam. 1º colocar na lista uses da dll a unit da DataModule para poder acessar os componentes pelo nome dos campos tipo DM.Table1, ou usar a propriedade components do DataModule que guarda referencia para todos os componentes. No primeiro caso o código ficaria mais fácil mais seria preciso recompilar todas as dll's cada vez que você modificar algo no DataModule. No 2º caso isso não é necessário.
  15. Claro que dá. porque não daria? Variaveis globais na dll -> type TDMClass = class of TDataModule; var DMGlobal : Pointer; DMClass : TDMClass; Procedure InitDMGlobal(DMcl : TDMClass; DM : Pointer); stdcall; begin DMGlobal:=DM; DMClass:=DMcl; end; Para chamar -> InitDMGlobal(TDataModule1, Pointer(DataModule1)); Para acessar o DataModule -> (TObject(DMGlobal) as DMClass).Table1................ Existe algum erro nisto?