El_Raso
11-11-2014, 18:34:47
Saludos Hermanos Foristas
Estoy programando para imprimir facturas fiscales en una impresora Star 650 de VMAX, los numeros
debo de enviarlo a la impresora de forma entero y sin punto por Ejemplo: 152.00 debo enviar 15200
He creado esta funcion:
function CIntX100(Number: Extended) : Cardinal;
var
NumeroSTR: string;
begin
NumeroSTR := floatToStr(Number);
NumeroSTR := StringReplace(NumeroSTR, '.', '', [rfReplaceAll]);
result := StrToInt(NumeroSTR) * 100;
end;
Para convertirlo y enviarlo a una funcion que esta declarada en la DLL del fabricante asi:
function PagoCF(iTipo: LongWord; iForma: String; lMonto: LongWord): LongWord;
var
lRet: LongWord;
sCommand: String;
sCommandEx: String;
begin
PurgeMessage();
sCommand := Chr(10) + Chr(5);
sCommandEx := Chr(0) + Chr(iTipo);
AddMessageField(sCommand, 2); //Comando
AddMessageField(sCommandEx, 2); //Extensión de comando
AddMessageField(iForma,3); //Campo 1: Tipo de Pago
AddMessageField(IntToStr(lMonto), Length(IntToStr(lMonto))); //Campo 2: Monto de Pago
// AddMessageField('', 0); //Campo 3: Descripcion adicional 1
// AddMessageField('', 0); //Campo 4: Descripcion adicional 2
// AddMessageField('', 0) ; //Campo 5: Descripcion adicional 3
SendSerialMessage();
repeat
lRet := GetCommunicationState();
until lRet <> IDLE;
lRet := GetLastCommError();
Result:= lRet;
end;
Pero siembre me sale repetido la forma de pago en la factura:
EFECTIVO 152.00
EFECTIVO 152.00
y la impresora como que se aloca y a veces no termina de cerrar la factura fiscal.
Que esta mal?
Uso Delphi XE2
Estoy programando para imprimir facturas fiscales en una impresora Star 650 de VMAX, los numeros
debo de enviarlo a la impresora de forma entero y sin punto por Ejemplo: 152.00 debo enviar 15200
He creado esta funcion:
function CIntX100(Number: Extended) : Cardinal;
var
NumeroSTR: string;
begin
NumeroSTR := floatToStr(Number);
NumeroSTR := StringReplace(NumeroSTR, '.', '', [rfReplaceAll]);
result := StrToInt(NumeroSTR) * 100;
end;
Para convertirlo y enviarlo a una funcion que esta declarada en la DLL del fabricante asi:
function PagoCF(iTipo: LongWord; iForma: String; lMonto: LongWord): LongWord;
var
lRet: LongWord;
sCommand: String;
sCommandEx: String;
begin
PurgeMessage();
sCommand := Chr(10) + Chr(5);
sCommandEx := Chr(0) + Chr(iTipo);
AddMessageField(sCommand, 2); //Comando
AddMessageField(sCommandEx, 2); //Extensión de comando
AddMessageField(iForma,3); //Campo 1: Tipo de Pago
AddMessageField(IntToStr(lMonto), Length(IntToStr(lMonto))); //Campo 2: Monto de Pago
// AddMessageField('', 0); //Campo 3: Descripcion adicional 1
// AddMessageField('', 0); //Campo 4: Descripcion adicional 2
// AddMessageField('', 0) ; //Campo 5: Descripcion adicional 3
SendSerialMessage();
repeat
lRet := GetCommunicationState();
until lRet <> IDLE;
lRet := GetLastCommError();
Result:= lRet;
end;
Pero siembre me sale repetido la forma de pago en la factura:
EFECTIVO 152.00
EFECTIVO 152.00
y la impresora como que se aloca y a veces no termina de cerrar la factura fiscal.
Que esta mal?
Uso Delphi XE2