[SP-pm] Problemas numa comparação

claudio at dpreferencial.com.br claudio at dpreferencial.com.br
Wed Jul 8 15:03:56 PDT 2009


A todos boa noite!

Soli, 
valeu a intenção, mas assim não rola.. 
já resolvi isto com & mesmo...

Estou passando o meu sistema que é em Delphi..mas...
sou novato total em Perl...rsrs...


Respondendo a sua pergunta:
________________
Um breve histórico:

Eu trabalho com processamento de pesquisas de mercado. (tabulação)

No começo trabalhei muito anos com Statiscs SPSS, Statiscs ... (com estes programas as bases ficavam realmente gigantes..rsrs..200.000 campos..rsrs)
acabei desenvolvendo meu próprio sistema de tabulação.

Desenvolvi um formato para o meu arquivo de dados, 
levando em consideração minhas necessidades, tais como:

- conteúdo criptografado.
- tamanho final do arquivo de base.
- quantidade final de campos na base.
- base não normalizada = campos multivalorados e dependentes..
- conteúdo dos campos: numérico.

levando em consideração que:
- 80% dos campos de uma pesquisa são campos numéricos e RM (respostas múltiplas=campos multivalorados) 
  Ex: 
  Quais frutas vc gosta:
  1 - abacaxi
  2 - Mamão
  3 - abacate....  até o código 50.

  um fulano responde os códigos 2/3/4/9/10/15
   
  num buffer(array de boleanos) eu marco true nestas posição e gravo.

Veja, no SPSS ou em outras bases "normais" eu precisaria de 15 campos para guardar as informações, 
quando que eu guardo num campo só..de tamanho bem pequeno...rsrs..

(não percebeu meu nome ..rsrs =>  Binaghi = Binário..rsrs.. aqui só rola um neurônio, que de vez em quando resolve ficar True..rsrs)
____________________________________________________
____________________________________________________

(é um código totalmente grosso..mas funfa..rsrs)

É assim que eu faço: 

Leio o arq:

  open(tap,"<$PathHtdocs");
  binmode tap;
      my ($buf, $data, $n, @cont);
      while (($n = read tap, $data, $x) != 0) {
          print "$n bytes read\n";
         $buf .= $data;
      }
       print "$buf";
  close(tap);
 @cont=split(//,$buf);

Comparo o conteúdo:

  push (@byt,1);
  push (@byt,2);
  push (@byt,4);
  push (@byt,8);
  push (@byt,16);
  push (@byt,32);
  push (@byt,64);
  push (@byt,128);
  my @res;
  my $RecCount=$n*8;
  for($a=1;$a<=$RecCount+1;$a++){
       push (@res,0);
  }
  my $pos=0;
  for($a=1;$a<=$n;$a++){
    $val=$cont[$a];
print "----> testa valor $a:=$cont[$a]<br>\n";                
    if(ord($val)!=0){
      for($k=0;$k<=7;++$k){
          $pos=8*($a-1)+$k+1;
          $ord=ord($val);
          if(ord($val) & $byt[$k]) {
            $res[$pos]=1;
            $r=ver_conteudo(ord($val),$byt[$k]);
print "----> res[$pos]:=1 / $r<br>\n";
          }
      }
    }
  }

____________________________________________________
____________________________________________________

Esse formato é para as respostas no formato de códigos,
os textos, destes códigos, ficam guardados em outro arquivo..
Tipo na base normal se guarda no formato literal: Sim, Não.. 
na minha base quardo 1, 2 e tenho um texo só para sim e não..

Sacou...


Obrigado pela atenção..

Abs

Claudio H.Binaghi
claudio at dpreferencial.com.br
5511 3288.4840






  ----- Original Message ----- 
  From: Solli Honorio 
  To: saopaulo-pm at mail.pm.org 
  Sent: Wednesday, July 08, 2009 3:32 PM
  Subject: Re: [SP-pm] Problemas numa comparação


  Claudio, eu não ví que vc já havia encontrado o teu problema, mas continuo curioso sobre o teu trabalho... mas quero mostra uma outra solução para o teu problema...

  <code>
  sub ver_conteudo {
    return 1 << $_[0] & $_[1] ? 1 : 0;
  }

  if ( ver_conteudo(1,6) ) {
    print "Verdadeiro\n";
  } else {
    print "Falso\n";
  }
  </code>

  apesar de não ser tão legível (com certeza percisa de uma explicação), é muito mais rápido pois não preciso criar um array.

  Solli M. Honório


  2009/7/8 Solli Honorio <shonorio at gmail.com>

    Claudio, eu não o que vc quer cara, não entendi o que vc quis dizer com 'É uma comparação feita como entre Bytes como Boolean.', então vou responder o que eu acho que deveria ser a tradução do teu código:

    <code>
    sub ver_conteudo {
      my @bits = (1,2,4,8,16,32,64,128);
      return $bits[1] & $_[0] ? 1 : 0;
    }

    if ( ver_conteudo(8) ) {

      print "Verdadeiro\n";
    } else {
      print "Falso\n";
    }

    </code>

    Agora fiquei curioso, porque e como vc está traduzindo um programa em Delphi para Perl ? Isto é para uma empresa ?

    Abraços,

    Solli M. Honório


    2009/7/8 <claudio at dpreferencial.com.br>


      Pessoall, Boa tarde!

      Como sempre, estou precisando de um HELP!!!

      Estou passando um sistema de Delphi para Perl 
      e não tenho consiguido achar indicação  
      para desenvolver este trecho do código.

      É uma comparação feita como entre Bytes como Boolean.
      ________________________________________________________________
      ________________________________________________________________
      Segue o trecho do código:

      Procedure Ver_Conteudo;
         const BITS: array[0..7] of Byte = (1,2,4,8,16,32,64,128);
         Res:   Boolean;
      Begin
          
        Res := Boolean ( BITS[1] and 6 );    // Este é o trecho que me interessa,  este resultado dá true.

        if (Res) Then ShowMessage('True') else ShowMessage('False');

      End;

      ________________________________________________________________
      ________________________________________________________________

      Qualquer ajuda/ luz, ajuda muito...

      desde já agradeço a todos.

      Abs

      Claudio H.Binaghi
      claudio at dpreferencial.com.br
      5511 3288.4840



      _______________________________________________
      SaoPaulo-pm mailing list
      SaoPaulo-pm at pm.org
      http://mail.pm.org/mailman/listinfo/saopaulo-pm




    -- 
    "o animal satisfeito dorme". - Guimarães Rosa




  -- 
  "o animal satisfeito dorme". - Guimarães Rosa



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


  _______________________________________________
  SaoPaulo-pm mailing list
  SaoPaulo-pm at pm.org
  http://mail.pm.org/mailman/listinfo/saopaulo-pm
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20090708/d85ac4fc/attachment-0001.html>


More information about the SaoPaulo-pm mailing list