Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-09-2006
perrotekel perrotekel is offline
Registrado
 
Registrado: sep 2006
Posts: 5
Poder: 0
perrotekel Va por buen camino
Ayuda con visual basic y delphi

Necesito ayudo por favor, tengo acceder a una dll hecha en delphi y todo me va bien, pero creo que los tipo de datos no corresponden, asi que os pongo esta funcion aqui para ver si me podeis decir que tipos de datos de visual basic creeis que seran compatibles con los de la funcion.

procedure get_system_data(com_port,start_data:longint;system_data:PChar;
max_data:longint;
var rec_data,error_code:longint);stdcall;
external 'benzing_com.dll';

Por que yo no tengo ni idea.
Muchas gracias
Responder Con Cita
  #2  
Antiguo 12-09-2006
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Una pregunta.

Estás intentando leer relojes de colombófilos?

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 12-09-2006
perrotekel perrotekel is offline
Registrado
 
Registrado: sep 2006
Posts: 5
Poder: 0
perrotekel Va por buen camino
Exacto

Es que mi tio tiene palomas y les he hecho un software por que el que tenian esta en ms-dos.


Podrias ayudarme, albertodelafuente@gmail.com
Responder Con Cita
  #4  
Antiguo 12-09-2006
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
La declaración sería algo como:
Código:
Public Declare Sub get_system_data Lib "benzing_com.dll" (ByVal com_port As Long, ByVal start_data As Long, system_data As String)
PD: La intención del foro es que se responda en el foro, para que tu inquietud sea de utilidad para el resto. No por correo!!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #5  
Antiguo 12-09-2006
perrotekel perrotekel is offline
Registrado
 
Registrado: sep 2006
Posts: 5
Poder: 0
perrotekel Va por buen camino
Es verdad, tienes razon

Siento haber puesto el email, el problema de que lo ponga es la desesperacion.

Yo he declarado asi la funcion y llega a la funcion y en ese momento me da un error de windows (de los de enviar informe).
yo creo que es por lo de las variables, que no use los mismos tipos.
Responder Con Cita
  #6  
Antiguo 12-09-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
En la declaración de Federico, ¿no faltan argumentos?

// Saludos
Responder Con Cita
  #7  
Antiguo 12-09-2006
perrotekel perrotekel is offline
Registrado
 
Registrado: sep 2006
Posts: 5
Poder: 0
perrotekel Va por buen camino
Si

Pero imagino que sera
Public Declare Sub get_system_data Lib "benzing_com.dll" (ByVal com_port As Long, ByVal start_data As Long, system_data As String,ByVal max_data as Long, rec_data as string,ByVal error_code as long)

No federico, ya que var rec_data , var es un string en delphi ¿No?.
Responder Con Cita
  #8  
Antiguo 12-09-2006
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Cita:
Empezado por roman
En la declaración de Federico, ¿no faltan argumentos?
Ups!... que raro... si lo que hice fue un copy-paste y cambié los tipos y separadores...

Código:
Public Declare Sub get_system_data Lib "benzing_com.dll" (ByVal com_port As Long, ByVal start_data As Long, ByVal system_data As String, ByVal max_data as Long, ByRef rec_data as Long, ByRef error_code as Long)
Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #9  
Antiguo 12-09-2006
perrotekel perrotekel is offline
Registrado
 
Registrado: sep 2006
Posts: 5
Poder: 0
perrotekel Va por buen camino
Gracias

Gracias por echarme una mano, pero una ultima cosa, por que unas veces Byval y otras ByRef?

Y otra cosa, haber si sabes por que puede ser, que cuando llamo al metodo en visual basic me obliga a poner un =, cuando el metodo no devuelve nada, lo que devuelve lo guarda en los valores que se le pasan
Responder Con Cita
  #10  
Antiguo 12-09-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por perrotekel
por que unas veces Byval y otras ByRef?
Pues supongo que corresponde a los parámetros pasados por valor o por referencia. Cuando un parámetro se pasa por valor, la subrutina recibe una copia de la variable, de manera que cualquier modificación que hagas, no se verá reflejada al término de la rutina. En cambio, los parámetros pasados por referencias, podríamos decir que se pasa la variable en sí y no sólo la copia, de manera que los cambios que se hagan si se reflejan en las variables pasadas.

En Delphi, todos los parámetros se pasan por valor a menos que se especifique lo contrario anteponiendo la palabra reservada var. Los ByRef que puso Federico corresponden a los var en la declaración en pascal.

Lo que desconozco es si VB tiene algún default al respecto o siempre hay que especificar ByVal y ByRef.

// Saludos
Responder Con Cita
  #11  
Antiguo 12-09-2006
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Para más facilidad:
Código Delphi [-]
// GET SYSTEMDATA
// com_port: [1..6]
// start_data: start Char for reading (typical:0)
// system_data: pointer with the adress of the Buffer to write the system data
// max_data: max number of the data which could be written in the Buffer
//           (use to protect against buffer (array) overwriting)
// rec_data: number of recived datas from the device
// NOTE: if max_data < rec_data datas got lost

// error_code: 0x00 .. no error
//             0x95 .. no port avaiable
//             0x97 .. no answer
//             0x99 .. timeout (no polling found)
procedure get_system_data(com_port,start_data:longint;system_data:PChar;
                          max_data:longint;
                          var rec_data,error_code:longint);stdcall;
external 'benzing_com.dll';
//------------------------------------------------------------------------------

// SET SYSTEM DATA
// With this command the atis TOP gets new system data from the PC.
// Only the following parts of system data will be changed:
// fancier's name 25 bytes  "Fancier One"
// club nr.       5 bytes   "12345"
// unused         6 bytes   "123456"
// fancier's nr.  6 bytes   "123456"

// The unused data just has a significance in Germany.
// In other countries those data are not necessary. Nevertheless memory is
// reserved for these data. By this way those data can be used in the future.

// Special of the club nr. data in Germany:
// club organization number   3 bytes   "123"
// travel organization number 2 bytes   "12"

// com_port: [1..6]
// system_data: pointer with the adress of the Buffer to read the system data
// len_data: number of datas to send

// error_code: 0x00 .. no error
//             0x20 .. general communication error
//             0x95 .. no port avaiable
//             0x97 .. no answer
//             0x99 .. timeout (no polling found)
procedure set_system_data(com_port:longint;system_data:PChar;len_data:longint;
                           var error_code:longint);stdcall;
external 'benzing_com.dll';

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #12  
Antiguo 12-09-2006
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Cita:
Empezado por perrotekel
Gracias por echarme una mano, pero una ultima cosa, por que unas veces Byval y otras ByRef?
Porque unos parámetros son por valor y otros por referencia. El código en Delphi tienes definido un parámetro del tipo var (variable parameters) estas utilizando un parámetro por referencia, similar al ByRef de VisualBasic.

Cita:
Empezado por perrotekel
Y otra cosa, haber si sabes por que puede ser, que cuando llamo al metodo en visual basic me obliga a poner un =, cuando el metodo no devuelve nada, lo que devuelve lo guarda en los valores que se le pasan
Si al procedimiento lo llamas encerrando sus parámetros entre paréntesis, tienes que utilizar la instrucción call heredada de QBasic, si no utilizas los paréntesis, puedes prescindir del call

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Delphi VS Visual Basic woody Debates 137 18-03-2008 14:54:00
Delphi V/s Visual Basic lavtaro Varios 13 02-05-2006 14:30:47
Será Visual Basic un clon de Delphi KORN Debates 9 22-09-2004 09:30:40
Otra de Visual Basic a Delphi. torito Varios 2 03-06-2004 22:11:35
de Visual Basic a Delphi... Manipulacion de campos!! abril Varios 5 04-07-2003 23:10:43


La franja horaria es GMT +2. Ahora son las 14:52:12.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi