Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Синтаксис языка Си   Найти похожие ветки 

 
Zheksonz   (2012-06-07 15:27) [0]

Имеется достаточно простой для знающих СИ код:

for (; value >= 128; value >>= 7)
TCPClient->Socket->Write((unsigned char)(value | 128));
TCPClient->Socket->Write((unsigned char)value)


как его правильно перевести на Делфи?


 
MBo ©   (2012-06-07 15:37) [1]

while value >= 128 do begin
  TCPClient.Socket.Write(Byte(value or 128));
 ..
 value := value shr 7;
end


 
Zheksonz   (2012-06-07 15:44) [2]

спасибо, MBo

Вот что в итоге получилось:

while value >= 128 do begin
  TCPClient.Socket.Write(Byte(value or 128));
 value := value shr 7;
end;
TCPClient.Socket.Write(Byte(value));


но в Делфийном компоненте TIdTCPClient нет TCPClient.Socket.Write, зато есть TCPClient.Write одно ли это и то же?


 
Zheksonz   (2012-06-11 12:32) [3]

вот незадача мало того что в Делфи нет TCPClient.Socket.Write так ещё и TCPClient.Write это строковая переменная, а мне нужно байт отправить(((


 
Юрий Зотов ©   (2012-06-11 15:21) [4]


> Zheksonz   (11.06.12 12:32) [3]

IntToStr ?


 
Zheksonz   (2012-06-11 15:26) [5]


> Юрий Зотов ©   (11.06.12 15:21) [4]


неееееет, это слишком просто... я так не могу... а что-нибудь по типу пяткой ухо почесать нельзя придумать?


 
Zheksonz   (2012-06-11 15:35) [6]

а если серьёзно, то я немного запутался... у меня сейчас нет возможности проверить работоспособность кода, но копаясь в интернете, в описании TidTCPClient под Делфи, видел примеры использования Client.Socket.Write в то время как у меня нет подобной процедуры... зато есть Client.Write

будет ли посылаться по порту "сообщение" посланное не через .Socket. ?


 
Давайте будем жрать!   (2012-06-11 16:12) [7]


> IntToStr ?
Ему баёт надо послать, а не его строковое значение.


> копаясь в интернете, в описании TidTCPClient под Делфи,
> видел примеры использования Client.Socket.Write в то время
> как у меня нет подобной процедуры
Indy10 и Indy9 сильно отличаются.


 
Юрий Зотов ©   (2012-06-11 16:18) [8]


> Ему баёт надо послать, а не его строковое значение.

Верно. Значит, как-то так: Write(Char(Value))


 
sniknik ©   (2012-06-11 16:20) [9]

> вот незадача мало того что в Делфи нет
> это строковая переменная, а мне нужно байт отправить(((
????

   procedure Write(ABuffer: TIdBytes); overload; virtual;
   procedure WriteDirect(var aBuffer: TIdBytes); virtual;
   procedure Write(const AOut: string); overload; virtual;
   procedure WriteLn(const AOut: string = ""); virtual;
   procedure Write(AValue: TIdStrings; AWriteLinesCount: Boolean = False); overload; virtual;
   procedure Write(AValue: Char); overload;
   procedure Write(AValue: Cardinal; AConvert: Boolean = True); overload;
   procedure Write(AValue: Integer; AConvert: Boolean = True); overload;
   procedure Write(AValue: SmallInt; AConvert: Boolean = True); overload;
   procedure Write(AValue: Int64; AConvert: Boolean = True); overload;
   procedure Write(AStream: TIdStream; ASize: Int64 = 0; AWriteByteCount: Boolean = False); overload; virtual;


> в описании TidTCPClient под Делфи, видел примеры использования
> в то время как у меня нет подобной процедуры... зато есть
версию сравни


 
Zheksonz   (2012-06-11 16:30) [10]

Всем спасибо, что не оскорбили тугодума... ну вроде бы теперь понял))


 
Inovet ©   (2012-06-11 17:41) [11]

> [4] Юрий Зотов ©   (11.06.12 15:21)
> IntToStr ?

Вообще-то и без явного преобразования должен присвоить целое в строку.


 
Капитан Очевидность   (2012-06-11 18:10) [12]


> Вообще-то и без явного преобразования должен присвоить целое
> в строку.
Переработал с вариантами, братюня?


 
Inovet ©   (2012-06-11 18:19) [13]

> [12] Капитан Очевидность   (11.06.12 18:10)
> Переработал с вариантами, братюня?

Нет, в Билдере несколько конструкторов AnsiString с разными типами параметра.

void __fastcall TForm1::Button1Click(TObject *Sender)
{
 int i = 123;
 Label1->Caption = i;
}


 
Inovet ©   (2012-06-11 18:27) [14]

А, ЮЗ насчёт Делфи шутил. Ну, тогда да.


 
Zheksonz   (2012-06-14 10:38) [15]

Добрый день.
В тексте программы СИ наткнулся на две операции, описание к которым в инете найти удалось (составное сложение и составное поразрядное логическое или соответственно), а аналог в Делфи пока нет... может подскажете аналоги СИ_шных операций |= и += ?


 
RWolf ©   (2012-06-14 10:47) [16]

a:=a or b и a:=a+b соответственно.


 
Zheksonz   (2012-06-14 11:06) [17]

спасибо, RWolf



Страницы: 1 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.06 c
15-1352056098
Stant11
2012-11-04 23:08
2013.03.22
Глобальный хук на мышку и диспетчер задач в win7.


2-1342699186
vasa777
2012-07-19 15:59
2013.03.22
правое меню


9-1193069982
lubass
2007-10-22 20:19
2013.03.22
Помогите! Как мне использовать только фон из delphi dxsprite


15-1343713763
Артём
2012-07-31 09:49
2013.03.22
MD5 hash


2-1332325940
CRLF
2012-03-21 14:32
2013.03.22
А куда делось "Прочее"?