sábado, 9 de maio de 2009

6º Firebird Developers Day

Organizado pela FireBase, o Firebird Developers Day chega à sua sexta edição consagrado como o maior evento de banco de dados Firebird em todo o mundo! Em tempos de crise, a redução de custos é uma ferramenta importante para qualquer negócio, e em se tratando de SGBDs, o Firebird ganha destaque como uma alternativa confiável e gratuita!
O FDD é voltado para desenvolvedores e DBAs, que encontram no evento a oportunidade de se aprofundar e expandir seus conhecimentos, bem como fazer contatos e trocar experiências, além de aproveitar as super promoções que são oferecidas para os participantes.
As palestras focam temas que podem ser aplicados diretamente no trabalho do dia-a-dia do desenvolvedor. Os participantes receberão um kit com material exclusivo do evento, e poderão adquirir licenças de ferramentas e componentes por um preço super reduzido (saiba mais aqui).

Acesse: http://www.firebirddevelopersday.com.br/fdd/index.html?utm_source=fireBase&utm_medium=web&utm_campaign=fddrotativo

Exemplo Adaptado de Rotina de Conversao de Hexadecima - Binario - Octal

Salve, salve amigos,

Navegando na internet neste final de semana, localize uma unit contendo alguns códigos interessantes e resolvi realizar algumas alterações no código para que você possa precisar em algum momento converter de Hexadecimal, Binário ou Octal.

Não se esqueçam de deixar seu comentário

------------------------------------------------------------------------------------------------

Em um formulario, adicione os seguintes componentes:

Um RadioGroup contendo os seguintes itens: Dec, Bin. Oct, Hex

Deixe selecionado a primeira opção. (Dec)

Adicione um componente Edit, e limpe seu caption.

Na seção public, declare as seguintes procedure:

Procedure RotinadeConversao_D; // Converte um numero para decimal
Procedure Rotinadeconversao_B; // Converter de decimal para

*******************************************************************

procedure TForm3.RotinadeConversao_D;
var
i, Bin :Integer;
Calcular :Real;
Inverter :String;

begin

Calcular:=0;
Inverter :=AnsiReverseString(Edit1.text) ;

For i:= 1 to Length(Edit1.text) do begin

{ Convertendo de Binario Para Decimal}

If PosicaoAnterior = 1 Then Begin
Bin := StrToInt(Inverter[i]);
Calcular := Calcular + (Bin * Power(2,i-1)); //Power Eleva Potencia
end
{ Fim da Conversão de Binario Para Decimal}
else

{ Inicio de Octal Para Decimal}
if PosicaoAnterior = 2 Then Begin
Bin:=StrtoInt(Inverter[i]);
Calcular := Calcular + (Bin * Power(8,i-1));
end
{ Fim da Conversão de Octal Para Decimal}
else
{ Convertendo de Hexadecimal Para Decimal}
if PosicaoAnterior = 3 Then Begin
Case Inverter[i]of
'A':Bin :=10;
'B':Bin :=11;
'C':Bin :=12;
'D':Bin :=13;
'E':Bin :=14;
'F':Bin :=15;
else Bin:=StrtoInt(Inverter[i]);
end;
Calcular := Calcular + (Bin * power(16,i-1));
end;
{ Fim da Conversão de Hexadecimal Para Decimal}
end;
Edit1.text:=(FloatToStr(Calcular));
end;


***************************************************

procedure TForm3.Rotinadeconversao_B;
var

Calculo,Conversao,Bin,Resto:Integer;
Aux:String;
Begin
Aux:='';
if Edit1.Text<>'' Then
Conversao:= Trunc(StrToFloat(Edit1.text))
else
Conversao:=0;
Edit1.text:='';
{Inicio Conversao para Binario}
if RgTipo.ItemIndex=1 Then Begin
repeat
Bin := Conversao div 2;
Resto := Conversao mod 2;
Aux := Aux + IntToStr(resto);
Conversao:= Bin;
until (conversao <=1); Aux:= Aux + IntToSTR(Bin); Edit1.Text:= AnsiReverseString(Aux); end {Fim da Conversao para Binario} else {Inicio Conversao para Octal} if RgTipo.ItemIndex=2 then Begin Repeat Bin := Conversao div 8; Resto := Conversao mod 8; Conversao:= Bin; Aux := Aux + IntToStr(resto); Until (Conversao <=1); if bin>0 then
Aux:= Aux + IntToSTR(Bin);
Edit1.Text:= AnsiReverseString(aux);
end
{Fim da Conversão para Octal}
else Begin
{Inicio da Conversao para Hexadecimal}
Repeat
Bin := Conversao div 16;
Resto := Conversao mod 16;
Conversao:= Bin;
case Resto of
10: Edit1.Text :=Edit1.Text + 'A';
11: Edit1.Text :=Edit1.Text + 'B';
12: Edit1.Text :=Edit1.Text + 'C';
13: Edit1.Text :=Edit1.Text + 'D';
14: Edit1.Text :=Edit1.Text + 'E';
15: Edit1.Text :=Edit1.Text + 'F';
else Edit1.Text :=Edit1.Text+ IntToStr(resto);
end;
until (Conversao <=1); if Bin>0 then
Edit1.Text:= Edit1.Text + IntToSTR(bin);
Edit1.text:= AnsiReverseString(Edit1.text);
end;
{Fim da Conversao para Hexadecimal}

end;


**************************************************************

No evento OnKeyPress do componente Edit, digite o seguinte código

if not (key in ['0'..'9']) then
key:=#0;

*********************************************************************

No evento Onclick do componente RadioGroup, digite o seguinte código:


case(RGTIPO.ItemIndex) of
0: begin
RotinadeConversao_D;
PosicaoAnterior:=0;
end;
1: begin
if (PosicaoAnterior=2)Or (PosicaoAnterior=3) Then Begin
RotinadeConversao_D;
PosicaoAnterior:=1;
Rotinadeconversao_B;
end
else Begin
PosicaoAnterior:=1;
Rotinadeconversao_B;
end;
end;//Fim CAse 1
2: begin
If (PosicaoAnterior=1) or (PosicaoAnterior=3) Then Begin
RotinadeConversao_D;
PosicaoAnterior:=2;
Rotinadeconversao_B;
end else Begin
PosicaoAnterior:=2;
Rotinadeconversao_B;
end;
end;
3: begin
If (PosicaoAnterior=1) or (PosicaoAnterior=2) Then Begin
RotinadeConversao_D;
PosicaoAnterior:=3;
Rotinadeconversao_B;
end else Begin
PosicaoAnterior:=3;
Rotinadeconversao_B;
end;
end;
end;
end;

***********************************************************************

Bom, agora basta compilar e digita por exemplo o valor 100 dentro do edit e selecionar uma das opções do Radiogroup


Um forte abraço

Marcos Antonio