Конференция "Сети" » Передача записи по сети через сокеты
 
  • Vladimir © (20.12.09 22:01) [0]
    Здравствуйте! Знаю что тема объезжена уже, но все же. Есть клиент и сервер использующие TClient и TServer Socket соответственно. При передаче TStringList через SendBuf переменная типа TStringList пропадает где то в сети, вообщем приходит пустой. Как быть?
  • Сергей М. © (20.12.09 23:17) [1]

    > Как быть?


    Не передавать переменную типа TStringList.
    Ибо тема объезжена уже.
  • Сергей М. © (20.12.09 23:24) [2]
    Результат := SendBuf(PChar(StringList.Text)^, Length(StringList.Text))
  • Vladimir © (21.12.09 00:17) [3]
    а что делать у меня...

    //Описание типа информации о клиенте
    type
     TClientInfo = record
       Nik: string[20];            //Ник
       Family: string[50];         //Фамилия
       Name: string[50];           //Имя
       **********: string[50];      //Отчество
       Birthday: string[25];       //Дата рождения
       ZodiacalSign: string[20];   //Знак зодиака
       Email: string[30];          //Почтовый ящик
       Phone: string[20];          //Номер телефона
       IP: string[15];             //IP-адрес
       Password: string[20];       //Пароль
       ClientRegDate: string[25];  //Дата регистрации
     end;

    type //описание записи типа TConnectSets
     TConnectSets = record
       ********: string[35];        
       *********: integer;            
       **********: string[35];      
       Password: string[35];     // пароль -//-//-
     end;

    type //описание записи типа TMsgSets
     TMsgSets = record
       *****: TConnectSets;    // Настройки подключения
       Field_From: string[35];         // От кого
       Field_To: string[35];           // Кому
       ******: string[50];      
       *******: TStringList;    
     end;

    //запись с описанием сообщения чата
    type
     TChatMsg = record
       From: string[20]; //От кого
       Msg: string[100];   //Сообщение
     end;

    //запись для обмена информацией между клиентом и сервером
    type
     TDataExchange = record
      ActionCode: byte;           //Код действия
      ClientData: TClientInfo;    //Информация о клиенте
      MiniChatData: TChatMsg;     //сообщение мини-чата
      *: TMsgSets;        
      **: integer;        
      ***: TStringList;    
      ****: boolean;  
     end;

    Как тогда быть?? Чем можно здесь заменить TStringList? Если передаются данные через DataExchange то есть SendBuf(DataExchange, SizeOf(DataExchange)) ??
  • Anatoly Podgoretsky © (21.12.09 00:23) [4]
    > Vladimir  (21.12.2009 00:17:03)  [3]

    Если по длине string[255] не тянет, то тогда array [1..n] of char
    Главное что бы была фиксированая длина
  • Vladimir © (21.12.09 00:28) [5]
    Да, 255 маловато) Попробую с массивом тогда, Спасибо!
  • Дмитрий Белькевич (22.12.09 13:43) [6]
    >Результат := SendBuf(PChar(StringList.Text)^, Length(StringList.Text))

    IMHO CommaText лучше.
 
Конференция "Сети" » Передача записи по сети через сокеты
Есть новые Нет новых   [134437   +30][b:0][p:0]