Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 20.03.2011, 15:47
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию сокеты

У меня есть пара вопросов...
1-можно ли при получении данных определить тип данных и дальше работать с ним, чтото типа такого
Код:
procedure TMainForm.cSocketRead(Sender: TObject; Socket: TCustomWinSocket);
begin
if buf then...
if text then...
end;

2-Мне вот нужно передавать текст(string) и packed record что лучше использовать SendBuf или SendText...
Ответить с цитированием
  #2  
Старый 20.03.2011, 16:08
Аватар для dr. F.I.N.
dr. F.I.N. dr. F.I.N. вне форума
I Like it!
 
Регистрация: 12.12.2009
Адрес: Россия, г. Новосибирск
Сообщения: 663
Версия Delphi: D6/D7
Репутация: 26643
По умолчанию

Определить никак. Пересылается только "буфер" - поток байт. А SendText/ReceiveText - обертка над SendBuf/ReceiveBuf. Для пересылки смешанных данных - "приводи их к одному формату". Отправляешь сначала идентификатор пакета (думаю значения в 1 байт достаточно). либо текст, либо рекорд. если текст, то после идентификатора отправляешь длину сообщения. Если рекорд, то сразу данные. При получении смотришь идентификатор пакета, если рекорд, то принимаешь "буфер" по размеру рекорда. Если же текст, то получаешь длину строки, а потом саму строку. Все это делай через ReceiveBuf. Примерно так.
__________________
Грамотно поставленный вопрос содержит не менее 50% ответа.
Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть.
Ответить с цитированием
  #3  
Старый 20.03.2011, 16:51
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

хм а может проще было бы использовать SendText/ReceiveText
с определителем буду посылать по приходу определять куда мне мне это,
packed record в строку и отправлять, и потом определять и сного в packed record перевести
Ответить с цитированием
  #4  
Старый 20.03.2011, 17:48
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

ни вопрос как перевести packed record в строку и обратно
Ответить с цитированием
  #5  
Старый 20.03.2011, 18:05
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
type
  TRec = record
    i: Integer;
    s: String[10];
  end;
var
  rec: TRec;
  s: String;
begin
  rec.i:=$40;
  rec.s:='hello';
  SetLength(s, SizeOf(TRec));
  CopyMemory(@s[1], @rec, SizeOf(TRec));
  rec.i:=$0;
  rec.s:='';
  CopyMemory(@rec, @s[1], SizeOf(TRec));
  Memo1.Lines.Add(IntToStr(rec.i));
  Memo1.Lines.Add(rec.s);
end;
хотя и не понятно зачем так делать?
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #6  
Старый 20.03.2011, 18:55
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

"хотя и не понятно зачем так делать?"
ну я же SendText/ReceiveText решил использовать...
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:36.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025