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 23-06-2008
Avatar de Io
[Io] Io is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: San Fernando (Cádiz)
Posts: 259
Poder: 19
Io Va por buen camino
Cita:
Empezado por FGarcia Ver Mensaje
A mi entender el problema estaria en que la funcion en la dll el parametro Archivo se recibe como un PChar y deberia ser un string (en esencia son lo mismo ¿o no?) luego entonces ¿hace falta una conversion mas? ¿como se haria?
Hola.
Un Pchar no es lo mismo que un string.

Pchar es un puntero a una cadena de caracteres, y la información de la cadena comenzaria en la direción de memoria a la que apunta. Terminando que la información con el caracter nulo. (Cuantas veces se me ha colgado por olvidarme este fin de cadena).

Un string, utiliza el primer byte(cuando lo estudie hace tiempo) para guardar la longitud de la cadena, y la información biene despues.

En delphi existen funciones para pasar dse pchar a string y viceversa.

Hace tiempo estuve practicando, algo parecido, y creo que mi solución fue:
Reservar memoria: Longitud cadena + 1(Fin de cadena), utilizando un pchar para guardar la información. Llamar a la función de la dll, y esta despues de tomar la información libere la memoria.

La verdad que hace tiempo de esto pero creo que me funciono.

Espero no haber liado mucho.

Saludos.
__________________
¿Quién es Io?
Responder Con Cita
  #2  
Antiguo 23-06-2008
[FGarcia] FGarcia is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Cordoba, Veracruz, México
Posts: 1.123
Poder: 20
FGarcia Va por buen camino
continuo en lo mismo...
Si vi el error de que lo genera el componente... supongo entonces que el problema estriba en la creacion del componente. Algo falta.

revise el codigo del componente y encontre que :

Código Delphi [-]
TComPort = class(TCustomComPort)

y que :

Código Delphi [-]
// create component
constructor TCustomComPort.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  // component cannot reside on inheritable forms
  FComponentStyle := FComponentStyle - [csInheritable];
  FLinks := TList.Create;
  FTriggersOnRxChar := True;
  FEventThreadPriority := tpNormal;
  FBaudRate := br9600;
  FCustomBaudRate := 9600;
  FPort := 'COM1';
  FStopBits := sbOneStopBit;
  FDataBits := dbEight;
  FEvents := [evRxChar, evTxEmpty, evRxFlag, evRing, evBreak,
             evCTS, evDSR, evError, evRLSD, evRx80Full];
  FHandle := INVALID_HANDLE_VALUE;
  FStoredProps := [spBasic];
  FParity := TComParity.Create;
  FParity.SetComPort(Self);
  FFlowControl := TComFlowControl.Create;
  FFlowControl.SetComPort(Self);
  FTimeouts := TComTimeouts.Create;
  FTimeouts.SetComPort(Self);
  FBuffer := TComBuffer.Create;
  FBuffer.SetComPort(Self);
end;

siguiendo, yo creo en la dll :

Código Delphi [-]
PuertoS := TComPort.Create(Application);
    PuertoS.Port := 'Com1';
    PuertoS.BaudRate := br9600;
    PuertoS.Parity.Bits  := prNone;
    PuertoS.StopBits := sbOneStopBit;
    PuertoS.DataBits := dbEight;
    PuertoS.Events := [evRxChar, evTxEmpty, evRxFlag, evRing, evBreak, evCTS, evDSR, evError, evRLSD, evRx80Full];
    PuertoS.StoredProps := [spBasic];
    PuertoS.FlowControl.OutCTSFlow := False;
    PuertoS.FlowControl.OutDSRFlow := False;
    PuertoS.FlowControl.ControlDTR := dtrDisable;
    PuertoS.FlowControl.ControlRTS := rtsDisable;
    PuertoS.FlowControl.XonXoffOut := False;
    PuertoS.FlowControl.XonXoffIn := False;

La pregunta para los que tengan la paciencia de revisar tantas lineas ¿es correcto como estoy creando el componente?

Reitero mi agradecimiento a la ayuda que puedan prestar.


P.d. Gracias Io por la explicacion de Pchar y Sting.
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
error funcion login usuario en c# con SQL server Ariel03 .NET 2 20-02-2008 23:27:30
Error al crear una imagen en una funcion ilcapo C++ Builder 0 12-04-2007 21:12:07
Error con funcion astut Varios 4 17-09-2006 14:47:04
Error funcion mail() Andrea Martinez PHP 6 02-12-2004 16:00:34
Al accesar con usuario diferente da error. ElCherchu Conexión con bases de datos 0 04-06-2003 19:10:44


La franja horaria es GMT +2. Ahora son las 08:13:22.


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