okey ho capito pero mi fa una cosa strana in questa funziona, gli puoi dare un'occhiata !
codice:
void __fastcall TForm1::ClientSocket1Read(TObject *Sender,
TCustomWinSocket *Socket)
{
std::string FTP_Command;
Comando cmd[]={{"___"},{"220"},{"331"},{"230"}};
char Command[3];
int i;
int FNC_N=0;
char buf_retrived[4];
int Size=ClientSocket1->Socket->ReceiveLength();
char *Buffer = new char[Size];
ClientSocket1->Socket->ReceiveBuf(Buffer,Size);
Memo1->Lines->Add(Buffer);
FTP_Command=Buffer;
delete [] Buffer;
FTP_Command=FTP_Command.substr(0,3);
strcpy(buf_retrived,FTP_Command.c_str());
for (i=0;i<sizeof(cmd);i++){
if (!StrComp(cmd[i].CMD,buf_retrived)) {FNC_N=i;}
}
AnsiString Buf;
switch(FNC_N){
case 1:
Buf="USER \r\n\r\n";
Size=Buf.Length();
Size++;
Buffer= new char[Size];
strcpy(Buffer,Buf.c_str());
ClientSocket1->Socket->SendBuf(Buffer,Size-1);
break;
case 2:
Buf="PASS \r\n\r\n";
Size=Buf.Length();
Buffer= new char[Size];
strcpy(Buffer,Buf.c_str());
ClientSocket1->Socket->SendBuf(Buffer,Size);
break;
case 3:
Buf="PWD \r\n\r\n";
Size=Buf.Length();
Buffer= new char[Size];
strcpy(Buffer,Buf.c_str());
ClientSocket1->Socket->SendBuf(Buffer,Size);
break;
}
delete [] Buffer;
}
Se lo lancio cosi

Se lo lancio togliendo il primo delete

come mai ?