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:
Código Delphi
[-]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:
Código Delphi
[-]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); AddMessageField(sCommandEx, 2); AddMessageField(iForma,3); AddMessageField(IntToStr(lMonto), Length(IntToStr(lMonto))); 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