Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-04-2014
JM1985 JM1985 is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 68
Poder: 11
JM1985 Va por buen camino
Tipo de datos TByteDynArray

Esta es mi otra opción.. consumir un web service.

Pero se me presenta otro detalle mi piden como parámetro TByteDynArray XML

y mi XML es un AnsiString.


Como convierto AnsiString a TByteDynArray??

Gracias.

Saludos.
Responder Con Cita
  #2  
Antiguo 11-04-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola JM1985.
Cita:
Empezado por JM1985 Ver Mensaje
Como convierto AnsiString a TByteDynArray??
Podes hacer:
Código:
void AnsiStringToBDA(AnsiString str, TByteDynArray &bda)
{
  bda.set_length(str.Length());
  Move(&str, &bda, str.Length());
};
Ejemplo de uso:
Código:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  AnsiString tmp, cadena = "ABC 012";
  TByteDynArray  vec;

  AnsiStringToBDA(cadena, vec);
  for(int i=0; i<vec.Length;i++)
    Memo1->Lines->Add(vec[i]);  // 65 66 67 32 48 49 50
}
Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 11-04-2014
JM1985 JM1985 is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 68
Poder: 11
JM1985 Va por buen camino
Hola que tal ecfisa Gracias por responder.


Voy a probar y te comento.

Saludos.
Responder Con Cita
  #4  
Antiguo 11-04-2014
JM1985 JM1985 is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 68
Poder: 11
JM1985 Va por buen camino
Hola Eficsa
estoy tratando de implementar tu ejemplo pero no me convierte los caracteres a byte reemplaza la cadena por ???? y al ByteArray le agrega al prinicipio 3444 ?????, y la cadena..

Algo raro es que luego el usuario y la contraseña las vuelve ????? ???????

esto estoy haciendo.

Código:
cfdi = archivoXML->Text;

          TByteDynArray vec;
          StringToByteArray(cfdi, vec);


          AnsiString cResponse;
          _di_Application ServicioFINKOK = GetApplication();
          AcuseRecepcionCFDI *response;
          ServicioFINKOK->stamp(vec, InfoMain->usuarioCFDI, InfoMain->contraseniaCFDI);
          cResponse = response->xml;

Este es el método.

Código:
TByteDynArray TfrmFormaXML20::StringToByteArray(AnsiString cCadena, TByteDynArray &bda)
{
    bda.set_length(cCadena.Length());
    Move(&cCadena, &bda, cCadena.Length());
}
Responder Con Cita
  #5  
Antiguo 11-04-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola de nuevo.

Hago una correción del código anterior: (me dió problemas en una prueba posterior)
Código:
void AnsiStringToBDA(AnsiString str, TByteDynArray &bda)
{
  bda.set_length(str.Length());
  Move(str.c_str(),  &bda[0],  str.Length()); // <- Cambia esta línea
};
Ejemplo:
Código:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  AnsiString str = "Foros Club Delphi > Otros entornos y lenguajes > C++ Builder";
  TByteDynArray bda;

  Memo1->Clear();
  AnsiStringToBDA(str, bda);
  for(int i=0; i<bda.Length;i++)
    Memo1->Lines->Add((char)bda[i]);
}
Saludos

Edito: No había visto tu último mensaje, proba con el cambio que te comento.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 11-04-2014 a las 19:41:11.
Responder Con Cita
  #6  
Antiguo 11-04-2014
JM1985 JM1985 is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 68
Poder: 11
JM1985 Va por buen camino
Te adjunto unas imagenes para que veas como me queda el resultado al final creo que no lo está codificando.


El método para consumir el web service me pideun parámetro como tipo TByteDynArray;


Código:
 virtual AcuseRecepcionCFDI* stamp(const TByteDynArray xml, const AnsiString username, const AnsiString password) = 0;

y te devuelve como una clase y ahi accedes a lo que te devolvió no había visto algo parecido.
Imágenes Adjuntas
Tipo de Archivo: jpg 1.jpg (26,7 KB, 12 visitas)
Tipo de Archivo: jpg 2.jpg (16,8 KB, 8 visitas)
Responder Con Cita
  #7  
Antiguo 11-04-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola JM1985.

No alcanzo a distinguir el texto en las imágenes y lamentablemente desconozco el método AcuseRecepcionCFDI, pero fijate este ejemplo que demuestra que el valor del AnsiString pasa correctamente al ByteDynArray:
Código:
// Pasa el contenido del AnsiString al ByteDynArray
void AnsiStringToBDA(AnsiString str, TByteDynArray &bda)
{
  bda.set_length(str.Length());
  Move(str.c_str(),  &bda[0],  str.Length());
};

// Muestra el contenido del ByteDynArray como char
void ShowBDA(TByteDynArray bda, TMemo *Me) {
  String s;

  for(int i=0;i< bda.Length; i++) s += (char)bda[i];
  Me->Clear();
  Me->Lines->Add(s);
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  AnsiString str = "Foros Club Delphi > Otros entornos y lenguajes > C++ Builder";
  TByteDynArray bda;

  AnsiStringToBDA(str, bda);    // AnsiString a ByteDynArray
  ShowBDA(bda, Memo1); // mostrar contenido de ByteDynArray
}
Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #8  
Antiguo 12-04-2014
JM1985 JM1985 is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 68
Poder: 11
JM1985 Va por buen camino
AcuseRecepcion

Hola buen día eficsa

disculpa ayer ya no continué con este hilo debido a que me dedique con otro requerimiento ya que este que ando resolviendo ya me llevo algo de tiempo.


Voy a probar y te comento.

Te podría enviar la clase que se genera al momento de importar el web service?..

Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Tipo de datos Varbytes Marcela Varios 4 11-09-2006 20:48:58
Tipo de datos no coincide Genner SQL 5 08-05-2006 17:14:40
Tipo de datos SI/NO acces Genner Conexión con bases de datos 1 24-04-2006 20:19:16
Tipo de base de datos CARSOFT_AR Varios 6 06-02-2006 17:49:26
Tipo de datos Letty Conexión con bases de datos 4 13-01-2004 21:19:48


La franja horaria es GMT +2. Ahora son las 00:58:57.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi