Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-03-2007
Gagiel Gagiel is offline
Miembro
 
Registrado: ene 2007
Posts: 27
Poder: 0
Gagiel Va por buen camino
Rececpción de buffer incerrecta ?¿

Hola

Tengo una aplicación que recibe un buffer proviniente de la red i trata el string en una base de datos.
Las comunicaciones funcionan correctamente.
El problema es la recepción de la cadena de caracteres.
Me explico; el trozo de codigo donde se trata la cadena es el siguiente:
Código:
procedure ServerReceive(ID: integer; Buffer: ETCPBuffer; Size: integer);
var Recepcio : string[255];
var Correcte : integer;
var i : integer;
var Enviar : string[3];
var Client : string[255];
var Ip : String[255];
begin
  Enviar:= 'ACK';
  move(Buffer[0], Recepcio, Size);
  Delete(Recepcio, 17, Length(Recepcio)-16);
Al final me sale un string con la información que quiero.
El problema esta en que si yo desde local envio:
1234567890123456
recibo
1234567890123456
en cambio si envio desde la red:
1234567890123456
lo que recibo(O el programa lee) es lo siguiente:
234567890123456
Es decir "se come" el primer caracter, lo he probado con un cliente hardware, uno de software de delphi otro de Visual Basic i siempre pasa lo mismo. Tengo un servidor parecido hecho en Visual Basic i no pasa, por lo que creo que es problema de mi Buffer que elimina el primer caracter....
Sabeis como se puede arreglar? ya que me está trayendo de cabeza porqué no logro entender el porqué en local si que funciona i en remoto se come el caracter.

Gracias!

Saludos.
Responder Con Cita
  #2  
Antiguo 02-03-2007
Gagiel Gagiel is offline
Miembro
 
Registrado: ene 2007
Posts: 27
Poder: 0
Gagiel Va por buen camino
Hola

Me respondo a mi mismo...
Se ve que para encontrar la solución tengo que postear i me viene sola xD (llevava unos dias tras esto)
El tema está en que al hacer el move el buffer se vuelca en Recepcio pero la copia se realiza desde el caracter [0] i delphi al leer el string lo hace a partir del caracter [1].

Lo que he hecho es simplemente lo siguiente:
Código:
move(Buffer, Recepcio, 16);
Recepcio:= Recepcio[0] + Recepcio;
Lo que hace esto es mover la posicion [0] del string a la posición [1].

Saludos
Responder Con Cita
  #3  
Antiguo 02-03-2007
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
No sabría yo cuál es el problema pero ese move lo veo raro. Creo que deberías mover no hacia Recepcio, sino hacia Recepcio[1] y luego asignar a Recepcio[0] la longitud del string en lugar de ese Delete.

EDITO

¡Oh! Veo que ya resolviste el misterio

// Saludos
Responder Con Cita
  #4  
Antiguo 05-03-2007
Gagiel Gagiel is offline
Miembro
 
Registrado: ene 2007
Posts: 27
Poder: 0
Gagiel Va por buen camino
Hola,

Tengo un (varios) problema con el buffer.

Con el "apaño" que he hecho funciona, pero no me convence... si alguien tiene otra opción... :s


Otra cosa, el buffer que me llega proviene de una conexión TCP con lo que me llega lo que han mandado más una colección de caracteres "raros", el problema esta en que lo recibido va a una base de datos y al probar de meter estos caracteres da error, las recepciones no son de un numero de caracteres fijo.

Tenes la salvación para mi?

Gracias!

Saludos!
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
Leer buffer de teclado dieleo Varios 0 12-02-2007 19:23:19
Texto del buffer del sistema calogero Varios 1 07-02-2007 18:22:16
Problema con Double Buffer guillonet C++ Builder 0 29-08-2006 19:26:22
decompression overran buffer(179) IVAND Firebird e Interbase 0 24-04-2006 17:38:52
Buffer-Impresora matricial StartKill Impresión 2 22-03-2005 17:04:48


La franja horaria es GMT +2. Ahora son las 11:58: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