![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не могу найти три отличия в коде [D7]
Zheksonz © (2012-06-14 12:49:00)переводил с Си на Делфи следующий код:
__fastcall TWindow::TWindow(TComponent* Owner)
: TForm(Owner)
{
Encoding = TEncoding::UTF8;
ProtocolVersion = 0;
}
//---------------------------------------------------------------------------
void __fastcall TWindow::WriteString(UnicodeString String, TIdTCPClient *TCPClient)
{
Write7BitEncodedInt(Encoding->GetByteCount(String), TCPClient);
TCPClient->Socket->Write(String, Encoding);
}
void __fastcall TWindow::Write7BitEncodedInt(int value, TIdTCPClient *TCPClient)
{
for (; value >= 128; value >>= 7)
TCPClient->Socket->Write((unsigned char)(value | 128));
TCPClient->Socket->Write((unsigned char)value);
}
UnicodeString __fastcall TWindow::ReadString(TIdTCPClient *TCPClient)
{
return TCPClient->Socket->ReadString(Read7BitEncodedInt(TCPClient), Encoding);
}
int __fastcall TWindow::Read7BitEncodedInt(TIdTCPClient *TCPClient)
{
int value = 0, shift = 0, byteval;
while (((byteval = TCPClient->Socket->ReadByte()) & 128) != 0 & shift != 35)
{
value |= ((byteval & 127)
RWolf (2012-06-14 13:09:00) [21]Если исходник делает Socket->ReadByte(), а перевод — ReadInteger, то весьма вероятно, что это не будет работать.