Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   convertir un file a byte (https://www.clubdelphi.com/foros/showthread.php?t=93327)

ANCELMO 03-08-2018 18:40:20

convertir un file a byte
 
Buenos dias.

he estado buscando como pasar un archivo X a bits pero no he encontrado como, me prodian dar una idea de como realizarlo o si existe una funcion que lo haga me la compartiera porfavor.

Casimiro Notevi 03-08-2018 19:32:05

"File a byte", "file a bit", ¿qué es lo que necesitas hacer exactamente?

ANCELMO 04-08-2018 00:10:05

mira tengo que enviar un xml por un web service en el web service ha toca enviar unas etiquetas endonde se coloca en archivo en bytes para que al otro lado lo puedan crea, del mismo modo ese arreglo de bytes cuando lo retornen necesito crearlo

gmontes 04-08-2018 05:29:42

en delphi 7 yo tomo el archivo xml formado y lo convierto asi:


Código Delphi [-]
function TProveedorFinkOk.FileToByteArray( const FileName : string ) : TByteDynArray;
const BLOCK_SIZE=1024;
var BytesRead, BytesToWrite, Count : integer;
 F : FIle of Byte;
 pTemp : Pointer;
begin
 AssignFile( F, FileName );
 Reset(F);
try
 Count := FileSize( F );
 SetLength(Result, Count );
 pTemp := @Result[0];
 BytesRead := BLOCK_SIZE;
 while (BytesRead = BLOCK_SIZE ) do
 begin
  BytesToWrite := Min(Count, BLOCK_SIZE);
  BlockRead(F, pTemp^, BytesToWrite , BytesRead );
   pTemp := Pointer(LongInt(pTemp) + BLOCK_SIZE);
  Count := Count-BytesRead;
 end;
finally
  CloseFile( F );
 end;
end;

hago esto porque la rutina original no me tomaba la Ñ , ñ, y otros campos mas

esta rutina es la original

Código Delphi [-]

function TProveedorFinkOk.UTF8Bytes(const s: UTF8String): TBytedynArray; // sacada de http://stackoverflow.com/questions/5...array-in-utf-8
begin
 {$IF Compilerversion >= 20}Assert(StringElementSize(s)=1){$IFEND};
  SetLength(Result, Length(s));
  if Length(Result)>0 then
    Move(s[1], Result[0], Length(s));
end;

y esta es la rutina que timbra en finkok

Código Delphi [-]
function TProveedorFinkOk.TimbrarDocumento2(const aComprobante:
    string; const aTransaccion: Int64): TCadenaUTF8;
var
  respuestaTimbrado: TFinkOkRespuestaTimbrado;
  sXML:TByteDynArray;
begin
  //sXML := UTF8Bytes(aComprobante.XML);

  sXML := FIleToByteArray(aComprobante);

  respuestaTimbrado := fwsTimbradoFinkOk.stamp(sXML,fCredencialesPAC.RFC,fCredencialesPAC.Clave);
  if Trim(respuestaTimbrado.CodEstatus) <> '' then
    Result := ExtraerNodoTimbre(respuestaTimbrado.xml);
  if Trim(respuestaTimbrado.CodEstatus) = '' then
   begin
   {$IFDEF CODESITE}
    CodeSite.Send('Falla Validacion Error No.', respuestaTimbrado.Incidencias[0].CodigoError+'/Detalle :'+respuestaTimbrado.Incidencias[0].MensajeIncidencia);
   {$ELSE}
    raise exception.Create('Falla Validacion Error No.'+ respuestaTimbrado.Incidencias[0].CodigoError+'/Detalle :'+respuestaTimbrado.Incidencias[0].MensajeIncidencia);
   {$ENDIF}
   end;
end;

lo hice asi porque en delphi 7 tengo problemas con las conversiones de tipos que en versiones mas recientes no hay problema

espero empezar a migrar de delphi 7 a lo mas reciente pronto

estas rutinas las cambie del original que se encuentra en el proyecto bambucode para construir el cfdi 3.3 y timbrar en finkok

Alex Mireles 07-08-2018 03:03:19

Hola Amigo,
Para tener mas opciones de solución, revisa los temas de

EncodeDecodeBase64


https://stackoverflow.com/questions/...-base64-delphi


Nota:
Suponiendo que tu proyecto utiliza SOAP y WebServices.....Un archivo binario no se puede transportar por HTTP debido a que se solo se permite texto, lo que se debe hacer es convertir esa cadena de bytes "binarios" a bytes de "texto" y asi hacer el envio por HTTP. (Conceptos de Send Request y Get Response)..

Casimiro Notevi 07-08-2018 11:17:33

Mira este hilo.


La franja horaria es GMT +2. Ahora son las 15:51:06.

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