Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   ayuda para convertir Integer en PansiChar (https://www.clubdelphi.com/foros/showthread.php?t=70043)

gaston260 27-09-2010 05:48:31

ayuda para convertir Integer en PansiChar
 
Hola a todos tengo este problema creo que necesito convertirlo pero no se como hacer esto ! acá pongo la captura de la pantalla !


ecfisa 27-09-2010 20:27:46

Hola Gastón.

No sé en absoluto que es ComPort1 en tu código. Pero indudablemente Read espera un caracter no un número.
Primero deberías convertirlo a caracter con IntToStr y de ser necesario, hacerle un cast a PChar.

Algo como:
Código Delphi [-]
  ComPort1.Read(DataSerial, PChar(IntToStr(1)));

Creo que podrías usar esto con el mismo resultado:
Código Delphi [-]
   ComPort1.Read(DataSerial, '1');

Saludos. :)

gaston260 28-09-2010 02:04:38

Hola ninguna de las dos opciones funciona , comport es un componente dedicado a usar el puerto com

saludos !!

gaston260 28-09-2010 02:14:36

el problema está en dataserial !

read(mBuffer: PAnsiChar;Count:Integer):Integer

pero Dataserial no aparece como una propiedad ! :(

saludos !

ecfisa 29-09-2010 01:28:42

Cita:

Empezado por gaston260 (Mensaje 377705)
el problema está en dataserial !

read(mBuffer: PAnsiChar;Count:Integer):Integer

pero Dataserial no aparece como una propiedad ! :(

saludos !

Si hubiese visto la declaración de la función es claro que mi respuesta abría sido otra... Ahora puedo ver que es un parámetro de tipo Integer no PAnsiChar.

Y mBuffer es un parámetro de tipo PAnsiChar, por lo que el error que te dá es por que le estás pasando DataSerial,
que no sé que es, pero sí lo que no es: Una variable de tipo PAnsiChar.

Saludos. :)

gaston260 29-09-2010 03:00:50

Hola y gracias por contestar de nuevo ! mi pregunta es ! como puedo hacer la convercion ?

saludos !

ecfisa 29-09-2010 03:21:17

Hola Gaston.

Para contestarte sin decir disparates, necesitaría saber que es DataSerial.
Así como también lo que deseas pasar como parámetro a la función Read.

Saludos. :)

gaston260 29-09-2010 04:13:42

bien ! queres que te pase el codigo completo ?

ecfisa 29-09-2010 10:08:57

No Gaston, no creo que sea necesario.

Como solicitas en el título y como te puse en el primer post; la conversión para pasar un Integer a PAnsiChar es PChar(IntToStr(numero)).

Entonces tomando en cuenta lo anterior y que la declaración de la función es:
Cita:

read(mBuffer: PAnsiChar;Count:Integer):Integer
Seria:
Código Delphi [-]
begin
  ComPort1.Read(PChar(DataSerial), 1);
end;
Este último código es correcto, al menos en lo que refiere a la concordancia de tipos...

Saludos. :)

gaston260 01-10-2010 03:19:00

Hola ecfisa ! lo hice como me indicaste pero me da un error en el codigo del componente ! :( ahi cuelgo las capturas !, sera que tengo que instalar un componente mas nuevo ?




y la linea que me da error en el componente



ecfisa 01-10-2010 03:36:19

Hola Gaston.

Eso, ya es hilar muy fino para el nulo conocimiento que tengo sobre el componente ...
Pero me aventuro a decirte que el error que te aparece: 'Access Violation at address...', es por que estás usando algún
recurso que aún no fué instanciado.

Lo que te escribo a continuación es sólo un ejemplo. Con anterioridad a la línea que genera el error, has realizado algo como:
Código Delphi [-]
   ComPort:= TComPort.Create(Self);

No sé si el componente debe crearse (o si debe crearse así), cuál es su Owner (puse Self ), ni siquiera sé si el error es debido
al componente... es decir que estoy suponiendo que la cosa puede andar por ahí por el tipo de error que te dá.

Espero que te oriente para darle solución.

Saludos. :)

gaston260 01-10-2010 19:30:56

hola gracias por responder de nuevo !, entonces aparentemente el error esta en el componente ?, voy a tratar de istalar otro mas nuevo y comento que paso !

saludos ecfisa !!

ecfisa 01-10-2010 20:08:57

Cita:

Empezado por gaston260 (Mensaje 378136)
hola gracias por responder de nuevo !, entonces aparentemente el error esta en el componente ?, voy a tratar de istalar otro mas nuevo y comento que paso !
saludos ecfisa !!

Hola Gastón.

No digo eso. Sólo digo que ese tipo de error, generalmente, se dá cuando usas un recurso que no ha sido instanciado.
Pero tampoco se puede descartar la otra posibilidad... no es mala idea probar con otra versión del componente.

Saludos. :)

cmm07 03-10-2010 03:56:22

o también puede ser que ese "DataSerial" permita convertirse en PAnsiChar pero el contenido sea diferente al que se solucita al llamar la función Read() causando obviamente un Aceso de Violación (Por lo menos a mí me a pasado eso en algunso casos), para ayudarte, yo creo que nosotros necesitamos saber la herencia del termino "DataSerial" ¿Que es?, ¿Que hace principalmente el Read()?, ¿Que esperas de él?..etc..Nose pero según mi punto de vista necesitamos saber más (no quiere decir que coloques tu código de fuente)...

Saludos y ojala lo soluciones.!

gaston260 09-10-2010 02:15:17

Hola gracias por ayudarme ! estoy confundido !, se que me pides pero digo ?!, no es mejor que publique el codigo (por cierto no es mio) e instalas el comport y lo pruebas ?.

PD: dime que hace falta y yo lo ago !

Saludos !.


La franja horaria es GMT +2. Ahora son las 13:48:00.

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