Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/03/2009, 16:36
clavijo83
 
Fecha de Ingreso: abril-2008
Mensajes: 40
Antigüedad: 16 años, 1 mes
Puntos: 0
Error al LLamar un DLl, "memoria Insuficiente"

Hola.. mi problema es el siguiente..

he creado una DLL y esta DLL tiene un formulario donde se ejecutan prefectamente las funciones. pero al llamar esas funciones dentro de un proyecto de VB6 me sale este dichoso error: error '7' en tiempo de ejecucion memoria insuficente.

lo mas curioso es que llamo esta funcion desde un proyecto de Delphi y me funciona correctamente.

quisiera saber como solucionar este problema.. es urgente.
aqui esta el codigo de la DLL. la funcion se ejecuta hasta el procedimento "banda" lo se porq eso me muestra un msj en un dispositivo que tengo conectado al puerto.

function leebanda:string;stdcall;
var
sTmp: string;
c1,rebut: integer;
chBuffer: array[0..150] of char;
NumberOfBytesRead: dword;
begin
//abro el puerto
AbrirPuerto('COM1','1200','E','7','1');
//mensaje de solicitud de lectura
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
closehandle(ComFile);
/ /libero memoria
SetProcessWorkingSetSize(GetCurrentProcess, $FFFFFFFF, $FFFFFFFF);
break;
end;
until rebut=100;
result:=sTmp;
end;

y aqui esta el llamado desde el proyecto de vb6


Private Declare Function leebanda Lib "C:\pnp\dllcredicard.dll" () As String
public retorno as string
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
retorno = leebanda
' Se obtiene el valor del string que retorna la función del VPOS

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)
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

espero tengan una idea de lo que pueda ser... gracias por la atencion y la ayuda