Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-02-2012
Avatar de richy08
richy08 richy08 is offline
Miembro
 
Registrado: may 2007
Ubicación: Bucerias, Nayarit Mexico
Posts: 529
Poder: 17
richy08 Va por buen camino
convertir arreglo Array[0..33] of Char; a cadena

buenos dias compañeros estoy un poco perdido con esto de las coversiones de datos, les explico tengo un record de esta manera:

Código Delphi [-]
 TRegDocumento = Record
    aFolio         : Double;
    aNumMoneda     : LongInt;
    aTipoCambio    : Double;
    aImporte       : Double;
    aDescuentoDoc1 : Double;
    aDescuentoDoc2 : Double;
    aSistemaOrigen : LongInt;
    aCodConcepto   : Array[0..kLongCodigo] of Char;
    aSerie         : Array[0..kLongSerie] of Char;
    aFecha         : Array[0..kLongFecha] of Char;
    aCodigoCteProv : Array[0..kLongCodigo] of Char;
    aCodigoAgente  : Array[0..kLongCodigo] of Char;
    aReferencia    : Array[0..kLongReferencia] of Char;
    aAfecta        : LongInt;

como puedo convertir este dato a tipo cadena

aSerie : Array[0..33] of Char;


gracias por cualquier comentario
Responder Con Cita
  #2  
Antiguo 17-02-2012
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 richy08.

Podes usar el procedimiento SetString.

A modo de ejemplo:
Código Delphi [-]
procedure TForm1.btnDemoClick(Sender: TObject);
var
  aSerie : array[0..33] of Char;
  i: Byte;
  Cadena: string;
begin
  for i:= 0 to 33 do aSerie[i]:= Chr(63+i);
  SetString(Cadena, aSerie, Length(aSerie));
  ShowMessage(Cadena);
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 17-02-2012
Avatar de richy08
richy08 richy08 is offline
Miembro
 
Registrado: may 2007
Ubicación: Bucerias, Nayarit Mexico
Posts: 529
Poder: 17
richy08 Va por buen camino
gracias eficsa probare lo que me comentas

saludos
Responder Con Cita
  #4  
Antiguo 17-02-2012
Avatar de richy08
richy08 richy08 is offline
Miembro
 
Registrado: may 2007
Ubicación: Bucerias, Nayarit Mexico
Posts: 529
Poder: 17
richy08 Va por buen camino
pregunta tonta pero sigo sin comprender , si tengo una variable asi

Código Delphi [-]
var 
cadena :string;
.
.
.
cadena:='f';
documento.aserie:='f';   <----esto es diferente de esto ---> documento.aserie:=cadena;


saludos
Responder Con Cita
  #5  
Antiguo 17-02-2012
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 richy08.

La lógica indica que si Cadena = string y documento.Cadena = string, esto implica que Cadena y documento.Cadena son del mismo tipo.
Código Delphi [-]
...
implementation

type
  TRegDocumento = Record
    Cadena: string;
  end;

var
  documento: TRegDocumento;

procedure TForm1.btComprobarClick(Sender: TObject);
var
  Cadena: string;
begin
  Cadena:= 'f';
  documento.Cadena:= 'f';
  ShowMessage(Cadena+' = '+documento.Cadena);
end;
...

Pero no acabo de entender que problema te está generando la duda...

Saludos.
__________________
Daniel Didriksen

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

Última edición por ecfisa fecha: 17-02-2012 a las 19:38:39.
Responder Con Cita
  #6  
Antiguo 17-02-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
No veo para qué copiar caracter por caracter. Si aSerie contiene un caracter de terminación #0, se puede asignar directamente:

Código Delphi [-]
Cadena := aSerie;

Si no contiene caracter de terminación pero se sabe la longitud L que ocupa (no necesariamente L debe ser la longitud de aSerie) entonces se puede usar SetString directamente:

Código Delphi [-]
SetString(Cadena, aSerie, L);

// Saludos
Responder Con Cita
  #7  
Antiguo 17-02-2012
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 roman.

El código
Código Delphi [-]
procedure TForm1.btnDemoClick(Sender: TObject);
var
  aSerie : array[0..33] of Char;
  i: Byte;
  Cadena: string;
begin
  for i:= 0 to 33 do aSerie[i]:= Chr(63+i);
  SetString(Cadena, aSerie, Length(aSerie));
  ShowMessage(Cadena);
end;
fué un demo para que pudiera ver el uso de SetString en el pasaje de array of char a string. El copiado de caracteres es sólo a efectos de que Cadena tuviera un valor para mostrar.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #8  
Antiguo 17-02-2012
Avatar de richy08
richy08 richy08 is offline
Miembro
 
Registrado: may 2007
Ubicación: Bucerias, Nayarit Mexico
Posts: 529
Poder: 17
richy08 Va por buen camino
gracias roman y eficsa por su tiempo, ahi va de donde me surge la duda estoy tratando de usar el sdk de contpaqi, tengo un record declarado asi:

Código Delphi [-]
type
  TRegDocumento = Record
    aFolio         : Double;
    aNumMoneda     : LongInt;
    aTipoCambio    : Double;
    aImporte       : Double;
    aDescuentoDoc1 : Double;
    aDescuentoDoc2 : Double;
    aSistemaOrigen : LongInt;
    aCodConcepto   : Array[0..kLongCodigo] of Char;
    aSerie         : Array[0..kLongSerie] of Char;
    aFecha         : Array[0..kLongFecha] of Char;
    aCodigoCteProv : Array[0..kLongCodigo] of Char;
    aCodigoAgente  : Array[0..kLongCodigo] of Char;
    aReferencia    : Array[0..kLongReferencia] of Char;
    aAfecta        : LongInt;
  end {RegDocumento};

type
  LPFREGDOCUMENTO = ^TRegDocumento;


despues en el evento de un boton tengo esto

Código Delphi [-]
var
  documento: LPFREGDOCUMENTO;
  lSerie : Array[0..kLongSerie] of Char;
  aFolio :double;


se supone que con esta funcion el sdk de contpaq me devuelve la serie y el folio del cfdi en uso.

Código Delphi [-]
 lError:=fSiguienteFolio('5',  lSerie, aFolio);
     //showmessage(lSerie);
     if lError <> kSIN_ERRORES  then
     begin
      rMensajeError( lError );
      FreeMem(documento);
      Exit;
     end;

pero al querer mandarle de nuevo esos datos al sdk de esta manera me dice que los tipos de datos son incompatibles

Código Delphi [-]
    documento.aFolio:=aFolio;
    documento.aNumMoneda:=1;
    documento.aTipoCambio:=1;
    documento.aImporte:=5000.50;
    documento.aDescuentoDoc1:=0;
    documento.aDescuentoDoc2:=0;
    documento.aSistemaOrigen:=5;
    documento.aCodConcepto:='5';
    documento.aSerie:=lserie;                  <------------------aqui esta el error 
    documento.aFecha:='01/01/2012';
    documento.aCodigoCteProv :='1';
    documento.aAfecta:=0;


saludos
Responder Con Cita
  #9  
Antiguo 17-02-2012
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.
Cita:
Código Delphi [-]
 documento.aSerie:=lserie;                  <------------------aqui esta el error
Pero en ese caso no estás copiando una variable de tipo string a otra como indicabas en el mensaje #4 ni tampoco un array of char a string. Estas copiando un array of char a otro.

En este caso probá de este modo:
Código Delphi [-]
  CopyMemory(@documento.aSerie[0], @lSerie[0], SizeOf(lSerie));

Saludos.
__________________
Daniel Didriksen

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

Última edición por ecfisa fecha: 17-02-2012 a las 20:18:31. Razón: resaltar palabras reservadas
Responder Con Cita
  #10  
Antiguo 17-02-2012
Avatar de richy08
richy08 richy08 is offline
Miembro
 
Registrado: may 2007
Ubicación: Bucerias, Nayarit Mexico
Posts: 529
Poder: 17
richy08 Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola.

Pero en ese caso no estás copiando una variable de tipo string a otra como indicabas en el mensaje #4 ni tampoco un array of char a string. Estas copiando un array of char a otro.

En este caso probá de este modo:
Código Delphi [-] CopyMemory(@documento.aSerie[0], @lSerie[0], SizeOf(lSerie));


Saludos.

mil gracias Eficsa esto es lo que estaba buscando

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
Duda convertir de int a char array mizzard C++ Builder 3 17-04-2011 11:14:47
Convertir char*, char[], string lmpadron C++ Builder 2 29-10-2010 09:08:45
Convertir una cadena de palabras separadas por # en array David OOP 11 10-09-2008 15:46:09
Cargar array of char de un archivo binario JosepZ Varios 9 12-11-2007 23:28:16
De una cadena a un arreglo D-MO PHP 2 06-01-2006 19:19:45


La franja horaria es GMT +2. Ahora son las 12:09:28.


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