<html>
<head>
</head>
<body>
<DIV><FONT size=2 face=arial>É na verdade simplificaria , mas ...<BR>___________________________________________<BR><BR>Esqueci de comentar ..meus campos tem dois fomatos básicos. <BR>1 - é o código que pod ir de 1...99999. o usuário defini.<BR>2 - é numérico: Real, Int e word..<BR>estes quatro tipos eu transformo no array boolean...<BR>___________________________________________<BR><BR>Veja um&nbsp; comparativo:<BR><BR>uma única record com 05 campos, sendo:<BR>1 - campoA Boolean&nbsp; 02 códigos - tamanho 02 byts<BR>2&nbsp;- campoB Boolean&nbsp; 10 códigos - tamanho&nbsp;10 byts<BR>3&nbsp;- campoC Boolean&nbsp; 05 códigos - tamanho 05 byts<BR>4&nbsp;- campoD Boolean&nbsp; 03 códigos - tamanho 03 byts<BR>5&nbsp;- campoE&nbsp;Real&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - tamanho&nbsp;48 byts<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ------------------------<BR>tamanho total&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 68 byts..<BR><BR>Conteudo da record.<BR>A,B,C,D,E<BR>2,1/5/8,2,1/2/3,5292.32<BR><BR>Veja:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tamanho do arquivo ficou em:<BR>- no meu formato&nbsp; &nbsp; 9 bytes.<BR>-&nbsp;no txt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;23 bytes.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2,1/5/8,2,1/2/3,5292.32<BR>- no txt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 68 bytes.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;01100010010001000111101100011001010000111010111100010100011010100100<BR>&nbsp;<BR>vamos nos falando,<BR><BR>abs<BR><BR><BR></FONT></DIV>
<BLOCKQUOTE style="BORDER-LEFT: #000000 2px solid; PADDING-LEFT: 5px; PADDING-RIGHT: 0px; MARGIN-LEFT: 5px; MARGIN-RIGHT: 0px">
<DIV style="FONT: 10pt arial">----- Mensagem Original ----- </DIV>
<DIV style="FONT: 10pt arial; BACKGROUND: #e4e4e4; font-color: black"><B>De:</B> <A title=blabos@gmail.com href="mailto:blabos@gmail.com">Blabos de Blebe</A> </DIV>
<DIV style="FONT: 10pt arial"><B>Para:</B> <A title=saopaulo-pm@mail.pm.org href="mailto:saopaulo-pm@mail.pm.org">saopaulo-pm@mail.pm.org</A></DIV>
<DIV style="FONT: 10pt arial"><B>Data:</B> Thursday, 09 De July De 2009 21:32</DIV>
<DIV style="FONT: 10pt arial"><B>Assunto:</B> Re: [SP-pm] Do Delphi para Perl - Array Boolean para Real/Int/Worde a volta</DIV><BR><FONT size=2 face=arial><FONT size=2 face="Courier New">Olha, eu vou pular as várias ressalvas e tentar ser útil.<BR><BR>Ao invés de usar números, por que você não usa uma string com as letras 0 e 1?<BR><BR>Ttipo:<BR><BR>my $valores = "00011010111010101010100010101";<BR><BR>Com isso:<BR><BR>Você não vai ter que se preocupar com o comprimento binário de um<BR>inteiro ou aramazenar flags em um número em ponto flutuante;<BR>Você não vai ter que se preocupar com a quantidade de valores;<BR>Você vai poder usar as funções length e substr para implementar<BR>funções semelhantes às que estão no pastebin.<BR>Você vai poder converter as listas em escalares e vice-versa, apenas<BR>com split e join.<BR><BR><BR><BR>2009/7/9 &nbsp;<CLAUDIO@DPREFERENCIAL.COM.BR>:<BR>&gt; Pessoal, Boa noite!<BR>&gt;<BR>&gt; Ainda estou apanhando naquela questão de passar de&nbsp;números para arrays<BR>&gt; booleanos..<BR>&gt;<BR>&gt; Sem querer abusar, mas já abusando ... rsrs..<BR>&gt;<BR>&gt;<BR>&gt; Se alguém puder me dar umas dicas,<BR>&gt; ou onde posso encontrar estas informações.<BR>&gt;<BR>&gt; Desde já agradeço a todos.<BR>&gt;<BR>&gt; Claudio H.Binaghi<BR>&gt;<BR>&gt; ___________________________________________________<BR>&gt; Segue abaixo como faço em Delphi...<BR>&gt;<BR>&gt; Na verdade são 6 procedimentos que fazem:<BR>&gt;<BR>&gt; Boolean =&gt; Real<BR>&gt; Real =&gt; Boolean<BR>&gt;<BR>&gt; Boolean =&gt; Int<BR>&gt; Int&nbsp;=&gt; Boolean<BR>&gt;<BR>&gt; Boolean =&gt; Word<BR>&gt; Word&nbsp;=&gt; Boolean<BR>&gt; ___________________________________________________<BR>&gt;<BR>&gt; <BEGIN CODE><BR>&gt;<BR>&gt;<BR>&gt; {****************************************************************************<BR>&gt; * REAL_BOOLEAN : Transforma uma variavel REAL em posições de uma matriz do<BR>&gt; *<BR>&gt; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tipo Boolean.<BR>&gt; *<BR>&gt; *****************************************************************************<BR>&gt; * Input: B = matriz (vetor) Boolean (48 elementos), passada como parametro<BR>&gt; *<BR>&gt; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VAR, que recebe o resultado da transformação.<BR>&gt; *<BR>&gt; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R = número REAL&nbsp; a ser "transformado" em posições booleanas.<BR>&gt; *<BR>&gt; ****************************************************************************}<BR>&gt; procedure REAL_BOOLEAN{(var B:TIPO_BOOLEAN_REAL;R:Real)};<BR>&gt; const BITS : array[1..8] of Byte = (1,2,4,8,16,32,64,128);<BR>&gt; var I,J : Byte;<BR>&gt; &nbsp;&nbsp;&nbsp; BY&nbsp; : array[1..6] of Byte Absolute R;<BR>&gt; Begin<BR>&gt; &nbsp; FillChar(B,SizeOf(B),0);<BR>&gt; &nbsp; For I:=1 to 6 do<BR>&gt; &nbsp;&nbsp;&nbsp; If BY[I]&lt;&gt;0 then For J:=1 to 8 do<BR>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B[8*(I-1)+J]:=Boolean(BITS[J] and BY[I]);<BR>&gt; End;<BR>&gt;<BR>&gt; {****************************************************************************<BR>&gt; * INT_BOOLEAN : Transforma uma variavel INTEGER em posições de uma matriz<BR>&gt; *<BR>&gt; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; do tipo Boolean.<BR>&gt; *<BR>&gt; *****************************************************************************<BR>&gt; * Input: B = matriz (vetor) Boolean (16 elementos), passada como parametro<BR>&gt; *<BR>&gt; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VAR, que recebe o resultado da transformação.<BR>&gt; *<BR>&gt; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; I = número INTEGER&nbsp; a ser "transformado" em posições booleanas.<BR>&gt; *<BR>&gt; ****************************************************************************}<BR>&gt; procedure INT_BOOLEAN{(var B:TIPO_BOOLEAN_INT;I:Integer)};<BR>&gt; const BITS : array[1..8] of Byte = (1,2,4,8,16,32,64,128);<BR>&gt; var J,K : Byte;<BR>&gt; &nbsp;&nbsp;&nbsp; BY&nbsp; : array[1..2] of Byte Absolute I;<BR>&gt; Begin<BR>&gt; &nbsp; FillChar(B,SizeOf(B),0);<BR>&gt; &nbsp; For J:=1 to 2 do<BR>&gt; &nbsp;&nbsp;&nbsp; If BY[J]&lt;&gt;0 then For K:=1 to 8 do<BR>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B[8*(J-1)+K]:=Boolean(BITS[K] and BY[J]);<BR>&gt; End;<BR>&gt;<BR>&gt; {****************************************************************************<BR>&gt; * WORD_BOOLEAN : Transforma uma variavel WORD em posições de uma matriz do<BR>&gt; *<BR>&gt; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tipo Boolean.<BR>&gt; *<BR>&gt; *****************************************************************************<BR>&gt; * Input: B = matriz (vetor) Boolean (16 elementos), passada como parametro<BR>&gt; *<BR>&gt; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VAR, que recebe o resultado da transformação.<BR>&gt; *<BR>&gt; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; W = número WORD&nbsp; a ser "transformado" em posições booleanas.<BR>&gt; *<BR>&gt; ****************************************************************************}<BR>&gt; procedure WORD_BOOLEAN{(var B:TIPO_BOOLEAN_INT;W:WORD)};<BR>&gt; const BITS : array[1..8] of Byte = (1,2,4,8,16,32,64,128);<BR>&gt; var J,K : Byte;<BR>&gt; &nbsp;&nbsp;&nbsp; BY&nbsp; : array[1..2] of Byte Absolute W;<BR>&gt;<BR>&gt; Begin<BR>&gt; &nbsp; FillChar(B,SizeOf(B),0);<BR>&gt; &nbsp; For J:=1 to 2 do<BR>&gt; &nbsp;&nbsp;&nbsp; If BY[J]&lt;&gt;0 then For K:=1 to 8 do<BR>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B[8*(J-1)+K]:=Boolean(BITS[K] and BY[J]);<BR>&gt; End;<BR>&gt;<BR>&gt; {****************************************************************************<BR>&gt; * BOOLEAN_REAL : Retorna um número REAL obtido de um vetor Booleano do tipo<BR>&gt; *<BR>&gt; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TIPO_BOOLEAN_REAL.<BR>&gt; *<BR>&gt; *****************************************************************************<BR>&gt; * Input: B = matriz (vetor) Boolean (48 elementos) a ser "transformado".<BR>&gt; *<BR>&gt; ****************************************************************************}<BR>&gt; function BOOLEAN_REAL{(B:TIPO_BOOLEAN_REAL):Real};<BR>&gt; const BITS : array[1..8] of Byte = (1,2,4,8,16,32,64,128);<BR>&gt; var I,J : Byte;<BR>&gt; &nbsp;&nbsp;&nbsp; BY&nbsp; : array[1..6] of Byte;<BR>&gt; &nbsp;&nbsp;&nbsp; R&nbsp;&nbsp; : Real Absolute BY;<BR>&gt;<BR>&gt; Begin<BR>&gt; &nbsp; FillChar(BY,6,0);<BR>&gt; &nbsp; For I:=1 to 6 do<BR>&gt; &nbsp;&nbsp;&nbsp; For J:=1 to 8 do<BR>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If B[8*(I-1)+J] then BY[I]:=BY[I]+BITS[J];<BR>&gt; &nbsp; Result:=R;<BR>&gt; End;<BR>&gt;<BR>&gt; {****************************************************************************<BR>&gt; * BOOLEAN_INT : Retorna um número INTEGER obtido de um vetor Booleano do<BR>&gt; *<BR>&gt; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tipo TIPO_BOOLEAN_INT.<BR>&gt; *<BR>&gt; *****************************************************************************<BR>&gt; * Input: B = matriz (vetor) Boolean (16 elementos) a ser "transformado".<BR>&gt; *<BR>&gt; ****************************************************************************}<BR>&gt; function BOOLEAN_INT{(B:TIPO_BOOLEAN_INT):Integer};<BR>&gt; const BITS : array[1..8] of Byte = (1,2,4,8,16,32,64,128);<BR>&gt; var I,J : Byte;<BR>&gt; &nbsp;&nbsp;&nbsp; BY&nbsp; : array[1..2] of Byte;<BR>&gt;<BR>&gt; Begin<BR>&gt; &nbsp; FillChar(BY,2,0);<BR>&gt; &nbsp; For I:=1 to 2 do<BR>&gt; &nbsp;&nbsp;&nbsp; For J:=1 to 8 do<BR>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If B[8*(I-1)+J] then BY[I]:=BY[I]+BITS[J];<BR>&gt; &nbsp;&nbsp; If LongInt((BY[2] shl 8)+BY[1])&gt;32767 then<BR>&gt; &nbsp;&nbsp;&nbsp;&nbsp; Result:=Integer(((BY[2] shl 8)+BY[1])-65536)<BR>&gt; &nbsp;&nbsp; else<BR>&gt; &nbsp;&nbsp;&nbsp;&nbsp; Result:=(BY[2] shl 8)+BY[1];<BR>&gt; End;<BR>&gt;<BR>&gt; {****************************************************************************<BR>&gt; * BOOLEAN_WORD : Retorna um número WORD obtido de um vetor Booleano do tipo<BR>&gt; *<BR>&gt; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TIPO_BOOLEAN_INT.<BR>&gt; *<BR>&gt; *****************************************************************************<BR>&gt; * Input: B = matriz (vetor) Boolean (16 elementos) a ser "transformado".<BR>&gt; *<BR>&gt; ****************************************************************************}<BR>&gt; function BOOLEAN_WORD{(B:TIPO_BOOLEAN_INT):Word};<BR>&gt; const BITS : array[1..8] of Byte = (1,2,4,8,16,32,64,128);<BR>&gt; var I,J : Byte;<BR>&gt; &nbsp;&nbsp;&nbsp; BY&nbsp; : array[1..2] of Byte;<BR>&gt; &nbsp;&nbsp;&nbsp; N&nbsp;&nbsp; : Word Absolute BY;<BR>&gt; Begin<BR>&gt; &nbsp; FillChar(BY,2,0);<BR>&gt; &nbsp; For I:=1 to 2 do<BR>&gt; &nbsp;&nbsp;&nbsp; For J:=1 to 8 do<BR>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If B[8*(I-1)+J] then BY[I]:=BY[I]+BITS[J];<BR>&gt; &nbsp; BOOLEAN_WORD:=N;<BR>&gt; End;<BR>&gt; <END CODE><BR>&gt;<BR>&gt;<BR>&gt;<BR>&gt;<BR>&gt;<BR>&gt;<BR>&gt;<BR>&gt; ----- Original Message -----<BR>&gt; From: <A href="mailto:claudio@dpreferencial.com.br" target=_top>claudio@dpreferencial.com.br</A><BR>&gt; To: <A href="mailto:saopaulo-pm@mail.pm.org" target=_top>saopaulo-pm@mail.pm.org</A><BR>&gt; Sent: Thursday, July 09, 2009 12:36 PM<BR>&gt; Subject: Re: [SP-pm] Problemas numa comparação<BR>&gt;<BR>&gt; Gostei do exemplo que vc colou lá no Pastebin..<BR>&gt;<BR>&gt; ótimo código, bem limpo e simples...<BR>&gt;<BR>&gt; VIvendo e aprendendo,<BR>&gt; valeu pela dica..<BR>&gt;<BR>&gt; abs<BR>&gt;<BR>&gt;<BR>&gt; ----- Original Message -----<BR>&gt; From: Solli Honorio<BR>&gt; To: <A href="mailto:saopaulo-pm@mail.pm.org" target=_top>saopaulo-pm@mail.pm.org</A><BR>&gt; Sent: Wednesday, July 08, 2009 11:30 PM<BR>&gt; Subject: Re: [SP-pm] Problemas numa comparação<BR>&gt; Meu querido, tire o sotaque de C e coloque o sotaque de Perl, então :<BR>&gt;<BR>&gt; ... de :<BR>&gt; <CODE><BR>&gt;<BR>&gt; my $num = 0;<BR>&gt; for (my $i = 0; $i &lt; 8; $i++) {<BR>&gt; &nbsp; &nbsp; if ($options[$i] eq "S") {<BR>&gt; &nbsp; &nbsp; &nbsp; &nbsp; $num = set_bit($num, $i);<BR>&gt; &nbsp; &nbsp; }<BR>&gt; }<BR>&gt;<BR>&gt; </CODE><BR>&gt;<BR>&gt; para ... :<BR>&gt; <CODE><BR>&gt;<BR>&gt; for&nbsp; my $i ( 0..7 ) {<BR>&gt; &nbsp; &nbsp; if ($options[$i] eq "S") {<BR>&gt; &nbsp; &nbsp; &nbsp; &nbsp; $num = set_bit($num, $i);<BR>&gt; &nbsp; &nbsp; }<BR>&gt; }<BR>&gt;<BR>&gt; </CODE><BR>&gt;<BR>&gt; 2009/7/8 Blabos de Blebe <BLABOS@GMAIL.COM><BR>&gt;&gt;<BR>&gt;&gt; 6000 campos? 200000 campos?<BR>&gt;&gt;<BR>&gt;&gt; O que é um campo, nesse contexto? Não conheço o tal do SPSS.<BR>&gt;&gt;<BR>&gt;&gt; Você usa algum banco de dados, tipo MySQL, Postgres?<BR>&gt;&gt;<BR>&gt;&gt; Mas voltando ao assunto?<BR>&gt;&gt;<BR>&gt;&gt; Pelo que eu entendi, denovo supondo, você tem algo como:<BR>&gt;&gt;<BR>&gt;&gt; ----------| Maçã | Laranja | Abacaxi | Banana<BR>&gt;&gt; Wesley &nbsp; &nbsp;| Não&nbsp; | Sim &nbsp; &nbsp; | Não &nbsp; &nbsp; | Não<BR>&gt;&gt; Solli &nbsp; &nbsp; | Não &nbsp;| Sim &nbsp; &nbsp; | Sim &nbsp; &nbsp; | Não<BR>&gt;&gt; Montovani | Não &nbsp;| Não &nbsp; &nbsp; | Não &nbsp; &nbsp; | Sim<BR>&gt;&gt;<BR>&gt;&gt; E quer transformar em:<BR>&gt;&gt;<BR>&gt;&gt; ----------| Frutas |<BR>&gt;&gt; Wesley &nbsp; &nbsp;| 4&nbsp; &nbsp; &nbsp; |<BR>&gt;&gt; Solli &nbsp; &nbsp; | 6 &nbsp; &nbsp; &nbsp;|<BR>&gt;&gt; Montovani | 1 &nbsp; &nbsp; &nbsp;|<BR>&gt;&gt;<BR>&gt;&gt; Neste caso, me veio à cabeça algo assim:<BR>&gt;&gt;<BR>&gt;&gt; <A href="http://pastebin.com/m729e79c7" target=_blank>http://pastebin.com/m729e79c7</A><BR>&gt;&gt;<BR>&gt;&gt; Abraços<BR>&gt;&gt;<BR>&gt;&gt; 2009/7/8 <CLAUDIO@DPREFERENCIAL.COM.BR><BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt; A todos boa noite!<BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt; Soli,<BR>&gt;&gt; &gt; valeu a intenção, mas assim não rola..<BR>&gt;&gt; &gt; já resolvi isto com &amp; mesmo...<BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt; Estou passando o meu sistema que é em Delphi..mas...<BR>&gt;&gt; &gt; sou novato total em Perl...rsrs...<BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt; Respondendo a sua pergunta:<BR>&gt;&gt; &gt; ________________<BR>&gt;&gt; &gt; Um breve histórico:<BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt; Eu trabalho com processamento de pesquisas de mercado. (tabulação)<BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt; No começo trabalhei muito anos com Statiscs SPSS, Statiscs ... (com<BR>&gt;&gt; &gt; estes programas as bases ficavam realmente gigantes..rsrs..200.000<BR>&gt;&gt; &gt; campos..rsrs)<BR>&gt;&gt; &gt; acabei desenvolvendo meu próprio sistema de tabulação.<BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt; Desenvolvi&nbsp;um formato para o meu arquivo de dados,<BR>&gt;&gt; &gt; levando em consideração minhas necessidades, tais como:<BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt; - conteúdo criptografado.<BR>&gt;&gt; &gt; - tamanho final do arquivo de base.<BR>&gt;&gt; &gt; - quantidade final de campos na base.<BR>&gt;&gt; &gt; - base não normalizada&nbsp;= campos multivalorados e dependentes..<BR>&gt;&gt; &gt; - conteúdo dos campos: numérico.<BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt; levando em consideração que:<BR>&gt;&gt; &gt; - 80% dos campos de uma pesquisa são campos numéricos e RM (respostas<BR>&gt;&gt; &gt; múltiplas=campos multivalorados)<BR>&gt;&gt; &gt; &nbsp; Ex:<BR>&gt;&gt; &gt; &nbsp; Quais frutas vc gosta:<BR>&gt;&gt; &gt; &nbsp; 1 - abacaxi<BR>&gt;&gt; &gt; &nbsp; 2 - Mamão<BR>&gt;&gt; &gt; &nbsp; 3 - abacate....&nbsp; até o código 50.<BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt; &nbsp; um fulano responde os códigos 2/3/4/9/10/15<BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt; &nbsp; num buffer(array de boleanos) eu marco true nestas posição e gravo.<BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt; Veja,&nbsp;no SPSS ou em outras bases "normais"&nbsp;eu precisaria de 15 campos<BR>&gt;&gt; &gt; para guardar as informações,<BR>&gt;&gt; &gt; quando que eu guardo num campo só..de tamanho bem pequeno...rsrs..<BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt; (não percebeu meu nome ..rsrs&nbsp;=&gt; &nbsp;Binaghi = Binário..rsrs...&nbsp;aqui só rola<BR>&gt;&gt; &gt; um neurônio, que de vez em quando resolve ficar&nbsp;True..rsrs)<BR>&gt;&gt; &gt; ____________________________________________________<BR>&gt;&gt; &gt; ____________________________________________________<BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt; (é um código totalmente grosso..mas funfa..rsrs)<BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt; É assim que eu faço:<BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt; Leio o arq:<BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt; &nbsp; open(tap,"&lt;$PathHtdocs");<BR>&gt;&gt; &gt; &nbsp; binmode tap;<BR>&gt;&gt; &gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my ($buf, $data, $n, @cont);<BR>&gt;&gt; &gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (($n = read tap, $data, $x) != 0) {<BR>&gt;&gt; &gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print "$n bytes readn";<BR>&gt;&gt; &gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $buf .= $data;<BR>&gt;&gt; &gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&gt;&gt; &gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print "$buf";<BR>&gt;&gt; &gt; &nbsp; close(tap);<BR>&gt;&gt; &gt; &nbsp;@cont=split(//,$buf);<BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt; Comparo o conteúdo:<BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt; &nbsp; push (@byt,1);<BR>&gt;&gt; &gt; &nbsp; push (@byt,2);<BR>&gt;&gt; &gt; &nbsp; push (@byt,4);<BR>&gt;&gt; &gt; &nbsp; push (@byt,8);<BR>&gt;&gt; &gt; &nbsp; push (@byt,16);<BR>&gt;&gt; &gt; &nbsp; push (@byt,32);<BR>&gt;&gt; &gt; &nbsp; push (@byt,64);<BR>&gt;&gt; &gt; &nbsp; push (@byt,128);<BR>&gt;&gt; &gt; &nbsp; my @res;<BR>&gt;&gt; &gt; &nbsp; my $RecCount=$n*8;<BR>&gt;&gt; &gt; &nbsp; for($a=1;$a&lt;=$RecCount+1;$a++){<BR>&gt;&gt; &gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push (@res,0);<BR>&gt;&gt; &gt; &nbsp; }<BR>&gt;&gt; &gt; &nbsp; my $pos=0;<BR>&gt;&gt; &gt; &nbsp; for($a=1;$a&lt;=$n;$a++){<BR>&gt;&gt; &gt; &nbsp;&nbsp;&nbsp; $val=$cont[$a];<BR>&gt;&gt; &gt; print "----&gt; testa valor $a:=$cont[$a]<BR>n";<BR>&gt;&gt; &gt; &nbsp;&nbsp;&nbsp; if(ord($val)!=0){<BR>&gt;&gt; &gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for($k=0;$k&lt;=7;++$k){<BR>&gt;&gt; &gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $pos=8*($a-1)+$k+1;<BR>&gt;&gt; &gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $ord=ord($val);<BR>&gt;&gt; &gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(ord($val) &amp; $byt[$k]) {<BR>&gt;&gt; &gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $res[$pos]=1;<BR>&gt;&gt; &gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $r=ver_conteudo(ord($val),$byt[$k]);<BR>&gt;&gt; &gt; print "----&gt; res[$pos]:=1 / $r<BR>n";<BR>&gt;&gt; &gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&gt;&gt; &gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&gt;&gt; &gt; &nbsp;&nbsp;&nbsp; }<BR>&gt;&gt; &gt; &nbsp; }<BR>&gt;&gt; &gt; ____________________________________________________<BR>&gt;&gt; &gt; ____________________________________________________<BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt; Esse formato é para as respostas no formato de códigos,<BR>&gt;&gt; &gt; os textos, destes códigos, ficam guardados em outro arquivo..<BR>&gt;&gt; &gt; Tipo na base normal se guarda no formato literal: Sim, Não..<BR>&gt;&gt; &gt; na minha base quardo 1, 2 e tenho um texo só para sim e não..<BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt; Sacou...<BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt; Obrigado pela atenção..<BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt; Abs<BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt; Claudio H.Binaghi<BR>&gt;&gt; &gt; <A href="mailto:claudio@dpreferencial.com.br" target=_top>claudio@dpreferencial.com.br</A><BR>&gt;&gt; &gt; 5511 3288.4840<BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt; ----- Original Message -----<BR>&gt;&gt; &gt; From: Solli Honorio<BR>&gt;&gt; &gt; To: <A href="mailto:saopaulo-pm@mail.pm.org" target=_top>saopaulo-pm@mail.pm.org</A><BR>&gt;&gt; &gt; Sent: Wednesday, July 08, 2009 3:32 PM<BR>&gt;&gt; &gt; Subject: Re: [SP-pm] Problemas numa comparação<BR>&gt;&gt; &gt; Claudio, eu não ví que vc já havia encontrado o teu problema, mas<BR>&gt;&gt; &gt; continuo curioso sobre o teu trabalho... mas quero mostra uma outra solução<BR>&gt;&gt; &gt; para o teu problema...<BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt; <CODE><BR>&gt;&gt; &gt; sub ver_conteudo {<BR>&gt;&gt; &gt; &nbsp; return 1 &lt;&lt; $_[0] &amp; $_[1] ? 1 : 0;<BR>&gt;&gt; &gt; }<BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt; if ( ver_conteudo(1,6) ) {<BR>&gt;&gt; &gt; &nbsp; print "Verdadeiron";<BR>&gt;&gt; &gt; } else {<BR>&gt;&gt; &gt; &nbsp; print "Falson";<BR>&gt;&gt; &gt; }<BR>&gt;&gt; &gt; </CODE><BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt; apesar de não ser tão legível (com certeza percisa de uma explicação), é<BR>&gt;&gt; &gt; muito mais rápido pois não preciso criar um array.<BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt; Solli M. Honório<BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt; 2009/7/8 Solli Honorio <SHONORIO@GMAIL.COM><BR>&gt;&gt; &gt;&gt;<BR>&gt;&gt; &gt;&gt; Claudio, eu não o que vc quer cara, não entendi o que vc quis dizer com<BR>&gt;&gt; &gt;&gt; 'É uma comparação feita como entre Bytes como Boolean.', então vou responder<BR>&gt;&gt; &gt;&gt; o que eu acho que deveria ser a tradução do teu código:<BR>&gt;&gt; &gt;&gt;<BR>&gt;&gt; &gt;&gt; <CODE><BR>&gt;&gt; &gt;&gt; sub ver_conteudo {<BR>&gt;&gt; &gt;&gt; &nbsp; my @bits = (1,2,4,8,16,32,64,128);<BR>&gt;&gt; &gt;&gt; &nbsp; return $bits[1] &amp; $_[0] ? 1 : 0;<BR>&gt;&gt; &gt;&gt; }<BR>&gt;&gt; &gt;&gt;<BR>&gt;&gt; &gt;&gt; if ( ver_conteudo(8) ) {<BR>&gt;&gt; &gt;&gt; &nbsp; print "Verdadeiron";<BR>&gt;&gt; &gt;&gt; } else {<BR>&gt;&gt; &gt;&gt; &nbsp; print "Falson";<BR>&gt;&gt; &gt;&gt; }<BR>&gt;&gt; &gt;&gt; </CODE><BR>&gt;&gt; &gt;&gt;<BR>&gt;&gt; &gt;&gt; Agora fiquei curioso, porque e como vc está traduzindo um programa em<BR>&gt;&gt; &gt;&gt; Delphi para Perl ? Isto é para uma empresa ?<BR>&gt;&gt; &gt;&gt;<BR>&gt;&gt; &gt;&gt; Abraços,<BR>&gt;&gt; &gt;&gt;<BR>&gt;&gt; &gt;&gt; Solli M. Honório<BR>&gt;&gt; &gt;&gt;<BR>&gt;&gt; &gt;&gt; 2009/7/8 <CLAUDIO@DPREFERENCIAL.COM.BR><BR>&gt;&gt; &gt;&gt;&gt;<BR>&gt;&gt; &gt;&gt;&gt;<BR>&gt;&gt; &gt;&gt;&gt; Pessoall, Boa tarde!<BR>&gt;&gt; &gt;&gt;&gt;<BR>&gt;&gt; &gt;&gt;&gt; Como sempre, estou precisando de um HELP!!!<BR>&gt;&gt; &gt;&gt;&gt;<BR>&gt;&gt; &gt;&gt;&gt; Estou passando um sistema de Delphi para Perl<BR>&gt;&gt; &gt;&gt;&gt; e não tenho consiguido achar&nbsp;indicação<BR>&gt;&gt; &gt;&gt;&gt; para desenvolver este trecho do código.<BR>&gt;&gt; &gt;&gt;&gt;<BR>&gt;&gt; &gt;&gt;&gt; É uma comparação feita como entre Bytes como Boolean.<BR>&gt;&gt; &gt;&gt;&gt; ________________________________________________________________<BR>&gt;&gt; &gt;&gt;&gt; ________________________________________________________________<BR>&gt;&gt; &gt;&gt;&gt; Segue o trecho do código:<BR>&gt;&gt; &gt;&gt;&gt;<BR>&gt;&gt; &gt;&gt;&gt; Procedure Ver_Conteudo;<BR>&gt;&gt; &gt;&gt;&gt; &nbsp;&nbsp; const BITS: array[0..7] of Byte = (1,2,4,8,16,32,64,128);<BR>&gt;&gt; &gt;&gt;&gt; &nbsp;&nbsp; Res:&nbsp;&nbsp; Boolean;<BR>&gt;&gt; &gt;&gt;&gt; Begin<BR>&gt;&gt; &gt;&gt;&gt;<BR>&gt;&gt; &gt;&gt;&gt; &nbsp; Res := Boolean ( BITS[1] and 6 );&nbsp;&nbsp; &nbsp;//&nbsp;Este é o trecho que me<BR>&gt;&gt; &gt;&gt;&gt; interessa, &nbsp;este resultado dá true.<BR>&gt;&gt; &gt;&gt;&gt;<BR>&gt;&gt; &gt;&gt;&gt; &nbsp; if (Res) Then ShowMessage('True') else ShowMessage('False');<BR>&gt;&gt; &gt;&gt;&gt;<BR>&gt;&gt; &gt;&gt;&gt; End;<BR>&gt;&gt; &gt;&gt;&gt;<BR>&gt;&gt; &gt;&gt;&gt; ________________________________________________________________<BR>&gt;&gt; &gt;&gt;&gt; ________________________________________________________________<BR>&gt;&gt; &gt;&gt;&gt;<BR>&gt;&gt; &gt;&gt;&gt; Qualquer ajuda/ luz,&nbsp;ajuda muito...<BR>&gt;&gt; &gt;&gt;&gt;<BR>&gt;&gt; &gt;&gt;&gt; desde já agradeço a todos.<BR>&gt;&gt; &gt;&gt;&gt;<BR>&gt;&gt; &gt;&gt;&gt; Abs<BR>&gt;&gt; &gt;&gt;&gt;<BR>&gt;&gt; &gt;&gt;&gt; Claudio H.Binaghi<BR>&gt;&gt; &gt;&gt;&gt; <A href="mailto:claudio@dpreferencial.com.br" target=_top>claudio@dpreferencial.com.br</A><BR>&gt;&gt; &gt;&gt;&gt; 5511 3288.4840<BR>&gt;&gt; &gt;&gt;&gt;<BR>&gt;&gt; &gt;&gt;&gt; _______________________________________________<BR>&gt;&gt; &gt;&gt;&gt; SaoPaulo-pm mailing list<BR>&gt;&gt; &gt;&gt;&gt; <A href="mailto:SaoPaulo-pm@pm.org" target=_top>SaoPaulo-pm@pm.org</A><BR>&gt;&gt; &gt;&gt;&gt; <A href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target=_blank>http://mail.pm.org/mailman/listinfo/saopaulo-pm</A><BR>&gt;&gt; &gt;&gt;<BR>&gt;&gt; &gt;&gt;<BR>&gt;&gt; &gt;&gt;<BR>&gt;&gt; &gt;&gt; --<BR>&gt;&gt; &gt;&gt; "o animal satisfeito dorme". - Guimarães Rosa<BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt; --<BR>&gt;&gt; &gt; "o animal satisfeito dorme". - Guimarães Rosa<BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt; ________________________________<BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt; _______________________________________________<BR>&gt;&gt; &gt; SaoPaulo-pm mailing list<BR>&gt;&gt; &gt; <A href="mailto:SaoPaulo-pm@pm.org" target=_top>SaoPaulo-pm@pm.org</A><BR>&gt;&gt; &gt; <A href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target=_blank>http://mail.pm.org/mailman/listinfo/saopaulo-pm</A><BR>&gt;&gt; &gt;<BR>&gt;&gt; &gt; _______________________________________________<BR>&gt;&gt; &gt; SaoPaulo-pm mailing list<BR>&gt;&gt; &gt; <A href="mailto:SaoPaulo-pm@pm.org" target=_top>SaoPaulo-pm@pm.org</A><BR>&gt;&gt; &gt; <A href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target=_blank>http://mail.pm.org/mailman/listinfo/saopaulo-pm</A><BR>&gt;&gt;<BR>&gt;&gt;<BR>&gt;&gt; _______________________________________________<BR>&gt;&gt; SaoPaulo-pm mailing list<BR>&gt;&gt; <A href="mailto:SaoPaulo-pm@pm.org" target=_top>SaoPaulo-pm@pm.org</A><BR>&gt;&gt; <A href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target=_blank>http://mail.pm.org/mailman/listinfo/saopaulo-pm</A><BR>&gt;<BR>&gt;<BR>&gt;<BR>&gt; --<BR>&gt; "o animal satisfeito dorme". - Guimarães Rosa<BR>&gt;<BR>&gt; ________________________________<BR>&gt;<BR>&gt; _______________________________________________<BR>&gt; SaoPaulo-pm mailing list<BR>&gt; <A href="mailto:SaoPaulo-pm@pm.org" target=_top>SaoPaulo-pm@pm.org</A><BR>&gt; <A href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target=_blank>http://mail.pm.org/mailman/listinfo/saopaulo-pm</A><BR>&gt;<BR>&gt; ________________________________<BR>&gt;<BR>&gt; _______________________________________________<BR>&gt; SaoPaulo-pm mailing list<BR>&gt; <A href="mailto:SaoPaulo-pm@pm.org" target=_top>SaoPaulo-pm@pm.org</A><BR>&gt; <A href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target=_blank>http://mail.pm.org/mailman/listinfo/saopaulo-pm</A><BR>&gt;<BR>&gt; _______________________________________________<BR>&gt; SaoPaulo-pm mailing list<BR>&gt; <A href="mailto:SaoPaulo-pm@pm.org" target=_top>SaoPaulo-pm@pm.org</A><BR>&gt; <A href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target=_blank>http://mail.pm.org/mailman/listinfo/saopaulo-pm</A><BR>&gt;<BR>_______________________________________________<BR>SaoPaulo-pm mailing list<BR><A href="mailto:SaoPaulo-pm@pm.org" target=_top>SaoPaulo-pm@pm.org</A><BR><A href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target=_blank>http://mail.pm.org/mailman/listinfo/saopaulo-pm</A><BR><BR></FONT></FONT></BLOCKQUOTE>
</body>
</html>