Mensajes [1] - Enviado el Miércoles 29 de Agosto de 2007 a las 07:13hs
Hola a todos,
estoy haciendo un programa que tiene que cargar un archivo TXT para su posterior procesamiento. La carga se debe hacer linea a linea (para seleccionar cuales se quieren y cuales sobran) y mediante una DLL creada en vc6 (es mas rapido que con los procedimientos propios de vb6). A continuacion adjunto el codigo que tengo para ambas funciones tanto en la parte de la DLL como en la de vb.
En la DLL:
extern "C"
int WINAPI FAR PASCAL _stdcall DLLcargarTXT (char* fich,char* texto)
{
char cadena[160];
char* puntero;
//strcpy(puntero,texto);
puntero = texto;
int i=0;
// Abre un fichero de entrada
ifstream fe(fich);
fe.getline(cadena,160);
while (!fe.eof())
{
puntero = strcat(puntero,cadena);
puntero = strcat(puntero,"
");
fe.getline(cadena,160);
}
fe.close();
strcpy(texto,puntero);
return 1;
}
Ahora la parte de vb:
Private Sub Command1_Click()
Dim texto, archivo As String
Select Case True
Case Option1
archivo = "c:Pruebasinnopsys.txt"
Call DLLcargarTXT(archivo, texto)
RichTextBox1.Text = texto
Case Option2
archivo = "c:Pruebasgenepix.txt"
End Select
End Sub
En principio deberia devolver el texto del archivo TXT dentro de la variable texto, pero por algun motivo no lo hace, aunque en la DLL la variable texto si que tiene los datos que yo quiero.
Si alguien sabe como solucionarlo, se lo agradeceria inmensamente...
Mensajes [13] - Enviado el Domingo 16 de Setiembre de 2007 a las 02:53hs
Saludos amigo, no se si te sirva de algo, paro hace mucho lei que las dll de windows retornan valores de tipo unicode y el vb las lee como otro tipo que no recuerdo bien cual es y es por eso que no las reconoce el vb o las lee mal, en fin? no se si sea tu caso pero por si acaso te lo comento, suerte!
Mensajes [13] - Enviado el Domingo 16 de Setiembre de 2007 a las 02:56hs
Perdon la solucion era, hacer un barrido de todo tu texto y eliminar el caracter 0 para que lo reconozca el visual
ej. 3040506070 para que quede asi 34567 algo parecido la verdad es que se hace?comparando los caracteres con?el chr(0) y en caso de ser iguales se omite. Suerte