Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Синхронизация приложений 
V
    Опции темы
former
Дата 13.9.2009, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

Репутация: 5
Всего: 17



kami, спасибо (+)! Хороший шаблон! Если возникнут какие-нибудь вопросы, то напишу.
Нашел еще вот здесь несколько неплохих статей. Может ком-нибудь будет полезным.

Это сообщение отредактировал(а) former - 13.9.2009, 17:10


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
kami
Дата 13.9.2009, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 23
Всего: 72



Цитата(former @  13.9.2009,  17:07 Найти цитируемый пост)
kami, спасибо

Да не за что.
Давно уже собирался сделать что-то вроде выложенного здесь для простых задач сетевого обмена, но все руки не доходили. А тут такой случай.
Для полного счастья (мне) осталось их чуть-чуть доработать, дописав пару свойств.

Цитата(former @  13.9.2009,  17:07 Найти цитируемый пост)
Нашел еще вот здесь несколько неплохих статей.

Не знаю почему, но к Indy у меня стойкая аллергия, и чем выше версия - тем больше smile (сразу скажу, что реальных аргументов "против" не имею).
PM MAIL WWW   Вверх
former
Дата 13.9.2009, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

Репутация: 5
Всего: 17



Цитата(kami @  13.9.2009,  19:41 Найти цитируемый пост)
Давно уже собирался сделать что-то вроде выложенного здесь для простых задач сетевого обмена, но все руки не доходили. А тут такой случай.

Думаю, что универсальности в задаче сетевого обмена добиваться нет смысла, т.к. многое определяется конкретными условиями и потребностями. С другой стороны, можно классифицировать типовые задачи и создать для них шаблоны.
Цитата(kami @  13.9.2009,  19:41 Найти цитируемый пост)
Для полного счастья (мне) осталось их чуть-чуть доработать, дописав пару свойств.

О! Это уже интересно.


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
kami
Дата 13.9.2009, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 23
Всего: 72



Цитата(former @  13.9.2009,  20:36 Найти цитируемый пост)
 универсальности в задаче сетевого обмена добиваться нет смысла

Ну, я бы не был так категоричен smile

Цитата(former @  13.9.2009,  20:36 Найти цитируемый пост)
О! Это уже интересно.

Да ничего интересного. Главное при добавлении не дать доступа непосредственно к Server и Client сокетам (и их составляющим по возможности, особенно - касающихся приема и передачи). Пару свойств для идентификации соединений на server-side (к примеру, IP[ConnectionIndex:integer]:string)
В общем - дело 20 минут.

Это сообщение отредактировал(а) kami - 13.9.2009, 23:15
PM MAIL WWW   Вверх
former
Дата 14.9.2009, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

Репутация: 5
Всего: 17



kami, откомпилированный вариант работает как часы.
Возможно, что это связано с самим компилятором. Я компилирую в D2009. При компиляции предупреждения и сообщения об ошибках не появляются.
Вот мой вариант компиляции.

Это сообщение отредактировал(а) former - 14.9.2009, 22:37

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  Project1.exe 542,00 Kb


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
kami
Дата 14.9.2009, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 23
Всего: 72



Цитата(former @  14.9.2009,  22:36 Найти цитируемый пост)
Я компилирую в D2009. 

Надо было сразу говорить. У меня D7.
Вроде, единственное, что нужно сделать - заменить везде String на AnsiString. Завтра гляну.
PM MAIL WWW   Вверх
Romikgy
Дата 14.9.2009, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



Цитата(kami @  14.9.2009,  22:41 Найти цитируемый пост)
заменить везде String на AnsiString.

тогда уж на WideString...


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
former
Дата 14.9.2009, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

Репутация: 5
Всего: 17



Цитата(kami @  14.9.2009,  23:41 Найти цитируемый пост)
Вроде, единственное, что нужно сделать - заменить везде String на AnsiString

Это не помогло. 
Замана PChar на PAnsiChar позволила передать данные, но
user posted image

Это сообщение отредактировал(а) former - 14.9.2009, 23:59


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
kami
Дата 15.9.2009, 07:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 23
Всего: 72



Цитата(Romikgy @  14.9.2009,  23:48 Найти цитируемый пост)
тогда уж на WideString...

Вот честно - не сталкивался с D2009, посему - могу только предполагать, но думаю, что не везде.
В методах, взаимодействующих с пользователем - да, желательно бы на WideString. Но я так понимаю, что при  этом нужно учитывать, что Length(myWideString)=2*Length(myAnsiString) при копировании из байтовых буферов, к примеру - TStream.Read?

И кстати, какой условной директивой определяется, что это D2009 ?

former, Ваш экзешник вообще ничего не выводит, хотя передача данных между клиентом и сервером идет smile

Это сообщение отредактировал(а) kami - 15.9.2009, 07:38
PM MAIL WWW   Вверх
former
Дата 15.9.2009, 08:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

Репутация: 5
Всего: 17



Цитата(kami @  15.9.2009,  07:30 Найти цитируемый пост)
И кстати, какой условной директивой определяется, что это D2009 ?

Если этот вопрос адресован мне. Лицензией. smile 
Цитата(kami @  15.9.2009,  07:30 Найти цитируемый пост)
former, Ваш экзешник вообще ничего не выводит, хотя передача данных между клиентом и сервером идет smile

Так я об этом и говорил.


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
kami
Дата 15.9.2009, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 23
Всего: 72



Цитата(former @  15.9.2009,  08:43 Найти цитируемый пост)
Если этот вопрос адресован мне. Лицензией

Не, я немного не про то. smile
Я имел ввиду директивы условной компиляции типа
Код

{$IFDEF VER150}

Чуствую, надо будет поставить на виртуалку 2009, потому что иначе много вопросов возникает...

Это сообщение отредактировал(а) kami - 15.9.2009, 12:40
PM MAIL WWW   Вверх
bems
Дата 15.9.2009, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



Цитата(kami @  15.9.2009,  12:15 Найти цитируемый пост)
{$IFDEF VER150}
это проверка версии компилятора. А тебе наверное нужно RTLVersion, или вообще SizeOf(Char)

Цитата(kami @  15.9.2009,  07:30 Найти цитируемый пост)
Length(myWideString)=2*Length(myAnsiString)

длина же в символах а не байтах. Так что тут умножение на 2 ни к чему


--------------------
Обижено школьников: 8
PM MAIL   Вверх
kami
Дата 15.9.2009, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 23
Всего: 72



Цитата(bems @  15.9.2009,  17:01 Найти цитируемый пост)
длина же в символах а не байтах

Я имел ввиду
Цитата(kami @  15.9.2009,  07:30 Найти цитируемый пост)
при копировании ... к примеру - TStream.Read

Потому что стандартный код для D7 (опуская проверки длины строки и размера потока)
Код

SetLength(str, Stream.Size);
Stream.Read(str[1], Length(str));

с учетом

Цитата(bems @  15.9.2009,  17:01 Найти цитируемый пост)
SizeOf(Char)

будет выглядеть как-то так:
Код

len:=Stream.Size;
SetLength(str, len div SizeOf(Char));
Stream.Read(str[1], Len);

???
PM MAIL WWW   Вверх
former
Дата 15.9.2009, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

Репутация: 5
Всего: 17



kami, все, нашел причину. smile 
В модулях компонента поменял String - AnsiString и Char - AnsiChar, а в главном нет. Вот в этом и была загвоздка. Моя вина. smile 


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
kami
Дата 15.9.2009, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 23
Всего: 72



Цитата(former @  15.9.2009,  20:00 Найти цитируемый пост)
все, нашел причину.

Тоже переделал, протестировал на D2009.
Замена на Ansi коснулась только буферов в private секциях.
Для упрощения использования в примере (при приеме данных) добавил функцию StreamToString

Присоединённый файл ( Кол-во скачиваний: 10 )
Присоединённый файл  SimpleTCPTransfer.zip 6,31 Kb
PM MAIL WWW   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0955 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.