Indy tem limite caracteres?
03/04/2006
0
estou criando uma aplicação para troca mesangens com componentes Indy.
Quando envio mensagens com uns 1000 caracteres por exemplo, ela chega ao destino com apenas 50. como posso resolver isso??
Também gostaria de uma ajuda na troca arquivos usando componentes INDY.
obs.: Uso IdTCPServer+IdTCPClient
Rengaf
Posts
03/04/2006
Massuda
03/04/2006
Rengaf
clienteIndy.WriteBuffer(varRecord, SizeOf(varRecord),True);
Servidor OnExecute
athread.connection.ReadBuffer(VarRecord, sizeof(VarRecord));
Obrigado pela atenção!!
03/04/2006
Massuda
03/04/2006
Rengaf
TipoMSG :String;
ScriptMSG :String;
NumMSG :Smallint;
end;
VarRecord = DadosMSG;
:wink:
03/04/2006
Massuda
A não ser que você esteja usando strings de tamanho fixo (tipo ShortString ou string[]), qualquer variável do tipo string é um ponteiro para uma área de memória onde está o texto da string.
Assim, se você põe 10 ou 10000000 caracteres na string VarRecord.ScriptMSG, o tamanho de VarRecord não muda, pois o texto da string VarRecord.ScriptMSG está em outra área de memória que não necessariamente inclui o VarRecord.
Para poder passar seu record de um programa para outro, você precisa transferir os textos das strings ao invés do ponteiros. Um jeito de fazer isso seria...
//Cliente clienteIndy.WriteLn(varRecord.TipoMSG); clienteIndy.WriteLn(varRecord.ScriptMSG); clienteIndy.WriteSmallInt(varRecord.NumMSG); //Servidor OnExecute VarRecord.TipoMSG := athread.connection.ReadLn; VarRecord.ScriptMSG := athread.connection.ReadLn; varRecord.NumMSG := athread.connection.ReadSmallInt;
Clique aqui para fazer login e interagir na Comunidade :)