const

  MAX_CALIBRES   = 16;

  MAX_COLORES    =  8;

  MAX_FORMAS     =  4;

  MAX_DENSIDADES =  4;

  MAX_DEFECTOS   =  4;

 

type

  tagDatosFrutas = packed record

    nDatosPeso, nDatosFrutas: integer;

  end;

 

  DatosPartida: array[0..MAX_CALIBRES, 0..MAX_COLORS,

                      0..MAX_FORMAS - 1, 0..MAX_DENSIDADES - 1,

                      0..MAX_DEFECTOS - 1] of tagDatosFatura;

 

procedure DescomprimeDatos(pStream: TBlobStream; DatosPartidaP: Pointer);

var

  pDatoActual: Pointer;

  i, j, nDato, nNumRepeticiones: integer; 

begin

  try

    pDatoActual := DatosPartidaP;

    try

      for i := 0 to pStream.Size div (SizeOf(integer) shl 1) - 1 do

      begin

        pStream.Read(nNumRepeticiones, SizeOf(integer));

        pStream.Read(nDato, SizeOf(integer));

        for j := 0 to nNumRepeticiones - 1 do

        begin

          pDatoActual := nDato;

          pDatoActual := pDatoActual + SizeOf(integer);

        end;

      end;

    except

      raise;

    end;

  finally

    pStream.Free;

  end;

end;

 

//  Chamada em Delphi (convertida do C++Builder)

pStream :=
TBlobStream(ExportarDB.PartidasQ.CreateBlobStream(ExportarDB.PartidasQ.Field
ByName('Datos'), bmRead));

DescomprimeDatos(pStream, @DatosPartida);

 

// DATOS DE LA PARTIDA ** si la máquina es de solo peso

// Datos de la partida 10 pesos

for Calibre := 1 to 10 do

begin

  Peso := DatosPartida[Calibre, 0, 0, 0, 0].nDatosPeso;

  Frutas = DatosPartida[Calibre, 0, 0, 0, 0].nDatosFrutas;

end;

 

// Destrio -> en caso de que la máquina tenga

Peso := DatosPartida[0, 0, 0, 0, 0].nDatosPeso;

AS := AS + strAux;

 

Sds.

 

De: delphi-br@yahoogrupos.com.br [mailto:delphi...@yahoogrupos.com.br] Em
nome de Walter Chagas (Bol)
Enviada em: sexta-feira, 30 de julho de 2010 08:25
Para: delphi-br@yahoogrupos.com.br
Assunto: Re: [delphi-br] Ferramenta para transcrever codigo C++ Builder para
Delphi

 

  

Eu precisei uma vez, na faculdade, de ferramentas pra portar código pascal 
para C++. Achei muitas que faziam o contrario (algumas eram a própria 
pagina) mas infelizmente não salvei as URLs senão até te passaria.

Os dois códigos são portáveis, basta voce saber o que um significa no outro.

O Struts, por exemplo, corresponde ao Record no Pascal. Variável com 
asterisco na frente é um ponteiro, a seta (->) voce substitui pelo ponto e o

catch é o Exception no pascal

Mas dá uma olhada na web que vc deve achar tais ferramentas. Mas só 
lembrando que as que vi convertiam apenas algorítmos e não forms e recursos 
visuais.

[]s

Walter Alves Chagas Junior
Belo Horizonte - MG - Brazil
wchag...@bol.com.br <mailto:wchagasj%40bol.com.br> 
http://delphitocorporerm.blogspot.com/
MSN: whitesock...@hotmail.com <mailto:whitesockets%40hotmail.com> 
SKYPE: WalterChagasJr

----- Original Message ----- 
From: <thevorte...@yahoo.com.br <mailto:thevortex78%40yahoo.com.br> >
To: <delphi-br@yahoogrupos.com.br <mailto:delphi-br%40yahoogrupos.com.br> >
Sent: Friday, July 30, 2010 7:31 AM
Subject: [delphi-br] Ferramenta para transcrever codigo C++ Builder para 
Delphi

Bom dia pessoal, tenho um cliente que tem uma maquina de classificação de
frutas e esta maquina possui um sistema que foi desenvolvido em C++ Builder
e armazena dados no MySQL, acontece que tem um campo onde o programador
armazena uma array muiltidimensional em um campo BLOB (vai saber La por que,
como eu disse o cara é programador de C++ Builder), descobri esse campo
quando fomo tentar importar os registros de classificação para o banco de
dados do ERP da empresa, entrei em contato com o programador dizendo como
poderia "facilmente" recuperar esses dados e ele me enviou esse código:

#define MAX_CALIBRES 16

#define MAX_COLORES 8

#define MAX_FORMAS 4

#define MAX_DENSIDADES 4

#define MAX_DEFECTOS 4

//----------------------------------------------------------

struct tagDatosFrutas {

int nDatosPeso;

int nDatosFrutas;

};

struct tagDatosFrutas DatosPartida [MAX_CALIBRES+1]

[MAX_COLORES+1]

[MAX_FORMAS]

[MAX_DENSIDADES]

[MAX_DEFECTOS];

//----------------------------------------------------------

void __fastcall DescomprimeDatos(TBlobStream *pStream, int* DatosPartidaP)

{

int *pDatoActual;

int nDato, nNumRepeticiones;

int i, j;

pDatoActual = DatosPartidaP;

try {

// Se divide por dos porque hago 2 lecturas en cada iteracion

for (i=0; i<(int)(pStream->Size/(sizeof(int)*2)); i++) {

pStream->Read (&nNumRepeticiones, sizeof (int));

pStream->Read (&nDato, sizeof (int));

for (j=0; j<nNumRepeticiones; j++) {

*pDatoActual = nDato;

pDatoActual++;

}

}

}

catch (...) {

throw;

}

delete pStream;

}

//----------------------------------------------------------

** Tratamiento de la información de la partida después de seleccionarla

//----------------------------------------------------------

(Código para c++ builder)

pStream = (TBlobStream *)ExportarDB->PartidasQ->

CreateBlobStream(ExportarDB->PartidasQ->

FieldByName("Datos"), bmRead);

DescomprimeDatos( pStream, (int *)DatosPartida);

//DATOS DE LA PARTIDA ** si la máquina es de solo peso

// Datos de la partida 10 pesos

for (Calibre = 1; Calibre < 11; Calibre++)

{

Peso = DatosPartida[Calibre][0][0][0][0].nDatosPeso;

Frutas = DatosPartida[Calibre][0][0][0][0].nDatosFrutas;

}

// Destrio -> en caso de que la máquina tenga

Peso = DatosPartida[0][0][0][0][0].nDatosPeso;

AS += strAux;

//FIN DATOS PARTIDA

Alguem conhece alguma ferramenta para traduzir isso pra Delphi ou poderia me
dar uma força na tradução disso?

Muito obrigado pela força.

José Ricardo Aviles.
assinatura1

( Tel.....: 19 3868-7185
( Cel.....: 19 8173 0077
* E-mail: <mailto:jravi...@stiware.com.br <mailto:jraviles%40stiware.com.br>
> jravi...@stiware.com.br <mailto:jraviles%40stiware.com.br> 
Skype: stiware



 



[As partes desta mensagem que não continham texto foram removidas]

Responder a