Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.07.2014, 08:11   #11
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
тип переменных record
Через передачу потоком. SendStream().
Только запись должна быть финализированной. Никаких указателей, объхектов и строк. Иначе полезут адреса вместо содержимого.
ИМХО лучше написать свою процедуру сериализации, которая вгонит поля записи в MemoryStream. А потом его уже и передавать.

P.S. А чего устаревший компонент используешь? Если не секрет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.07.2014, 11:13   #12
Loligan
Пользователь
 
Аватар для Loligan
 
Регистрация: 30.01.2012
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Через передачу потоком. SendStream().
Только запись должна быть финализированной. Никаких указателей, объхектов и строк. Иначе полезут адреса вместо содержимого.
ИМХО лучше написать свою процедуру сериализации, которая вгонит поля записи в MemoryStream. А потом его уже и передавать.

P.S. А чего устаревший компонент используешь? Если не секрет.
спасибо) буду гуглить и делать)

Цитата:
Сообщение от Stilet Посмотреть сообщение
Через передачу потоком. SendStream().
Только запись должна быть финализированной. Никаких указателей, объхектов и строк. Иначе полезут адреса вместо содержимого.
ИМХО лучше написать свою процедуру сериализации, которая вгонит поля записи в MemoryStream. А потом его уже и передавать.

P.S. А чего устаревший компонент используешь? Если не секрет.
Может подскажите как финализировать запись? И вообще как пользоваться SendStream.

Цитата:
Сообщение от Stilet Посмотреть сообщение
P.S. А чего устаревший компонент используешь? Если не секрет.
в смысле устаревший?

Последний раз редактировалось Stilet; 30.07.2014 в 19:30.
Loligan вне форума Ответить с цитированием
Старый 30.07.2014, 19:42   #13
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
в смысле устаревший?
Ну всмысле он еще в D2007 если не ошибаюсь был выкинут из оффициальной поставки, но модули сохранили для совместимости. его заменили INDI и Synapse. Причем весьма удачно.
Цитата:
Может подскажите как финализировать запись?
Могу:
Код:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs;

type
  r=record
    s:string;
    i:integer;
    f:double;
  end;

  { TForm1 }

  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
var ms:TMemoryStream; tr2,tr:r;c:cardinal;
begin
 ms:=TMemoryStream.Create;
 tr.f:=123; tr.i:=55; tr.s:='131323ads';
 c:=Length(tr.s);
 with ms do begin
   Write(tr.f,sizeof(tr.f)); //Пишем в стрим переменку
   Write(tr.i,sizeof(tr.i)); //Еще одну
   Write(c,sizeof(c)); //Потом строка - пишем ее длину, чтоб на той стороне распознали
   Write(tr.s[1],c); //И сами байты строки
 end;
 // Передаем ms по сокету
 //На принимающей стороне записываем переданное в такой же стрим
 with ms do begin
   Position:=0; //Становимся в начало
   Read(tr2.f,sizeof(tr.f)); //Считываем первое поле записи
   Read(tr2.i,sizeof(tr.i)); //Второе
   Read(c,sizeof(c)); //Для строки ее длину
   SetLength(tr2.s,c);//Резервируем место под строку
   Read(tr2.s[1],c);//Считываем саму строку
 end;

 ms.Free;
end;

end.
А вот передачу увы. Я уже с этим компонентом не работаю.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.07.2014, 20:22   #14
Loligan
Пользователь
 
Аватар для Loligan
 
Регистрация: 30.01.2012
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ну всмысле он еще в D2007 если не ошибаюсь был выкинут из оффициальной поставки, но модули сохранили для совместимости. его заменили INDI и Synapse. Причем весьма удачно.
Так а по вашему что лучше использовать INDI или Synapse?
Loligan вне форума Ответить с цитированием
Старый 30.07.2014, 20:34   #15
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Ну чтоб быть до конца честным - я никогда не использовал Синапс. Инди и сокеты беркли - вот два пути, которые я сегодня использую.
Есть мнения что Инди библиотека гнилая и по сравнению с синапсом совершенно тормознутая - считаю что это мнение высосано из непонятно чего.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как через js передать переменную из ex1.html в ex2.html? Andrody JavaScript, Ajax 5 06.08.2012 11:23
Как передать переменную String в SelectCommand в SqlDataSource? sergey_dmitrievich ASP.NET 1 18.10.2011 13:55
Как передать переменную в другую форму FACE OFF Помощь студентам 2 07.01.2011 11:32
Как передать переменную с javascript в php master3763 JavaScript, Ajax 8 29.11.2010 18:27
Asp.net + ajax: Как передать серверу многа id :) Manonia ASP.NET 3 15.09.2010 04:16