hola federico bueno la verdad ya me funciono ya retorna un valor la funcion llebanda, la funcion quedo asi:
Código Delphi
[-]
function leebanda:PChar;stdcall;
var
sTmp:String;
PCharString: array[0..255] of Char;
c1,rebut: integer;
chBuffer: array[0..150] of char;
NumberOfBytesRead: dword;
begin
AbrirPuerto('COM1','1200','E','7','1');
banda;
repeat
rebut:=0;
repeat
if ComFile=INVALID_HANDLE_VALUE then
Exit;
if not ReadFile(ComFile, chBuffer[rebut],1, NumberOfBytesRead, nil) then
raise Exception.Create('Imposible leer datos desde el puerto');
for c1:= 0 to NumberOfBytesRead - 1 do
sTmp:= sTmp+chBuffer[c1];
until rebut<100 ;
if chBuffer[rebut]=chr(04) then
begin
CerrarPuerto;
SetProcessWorkingSetSize(GetCurrentProcess, $FFFFFFFF, $FFFFFFFF);
break;
end;
until rebut=100;
sTmp:=Trim(sTmp);
sTmp:=copy(sTmp,7,(length(sTmp)-9));
Result := StrPCopy(PCharString, sTmp);
end;
pero ahora hay un problema en el codigo de visual:
Código:
Private Sub boton_leer_banda_Click()
Dim txt As String
Dim token As String
Dim msj As String
' Se llama a la función del VPOS para leer la banda de tarjetas de créditos y débitos
retorno = leebanda
' Se obtiene el valor del string que retorna la función del VPOS
' este string posee los valores de los tracks de la tarjeta a la cual se le leyo la banda
'x = retorno
retorno = GetToken(retorno, ";") '& vbCrLf
Do
token = GetToken("", ";")
If token = "" Then Exit Do
retorno = retorno '& vbCrLf
txt = token
Loop
' Se asigna en la box de texto el valor de los diferentes tracks
If retorno <> "" Then
var = InStr(1, retorno, "?")
msj = Mid(retorno, 2, var - 2) 'AQUI APARECE EL ERROR
txt_track1.Text = msj
Else
txt_track1.Text = ""
End If
If txt <> "" Then
var = InStr(1, txt, "?")
msj = Mid(txt, 1, var - 2)
txt_track2.Text = msj
Else
txt_track2.Text = ""
End If
End Sub
me sale el siguiente error: ERROR '5' EN TIEMPO DE EJECUCION. LLAMADA A PROCEDIMIENTO O ARGUMENTO NO VALIDO.
Y me sale en la funcion MID de visual, porque sera eso? ah no uso la otra funcion que me pusiste de leebanda, porque no puedo cambiarle la estructura. asi hacen la llamada en los programas que ya usan esta DLL.