Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 481 • Страница 6 из 25<  1 ... 3  4  5  6  7  8  9 ... 25  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 18.02.2005
Откуда: Москва
Ray Adams
Ray Adams писал(а):
Кстати давай не будем начинать опять споры хорошо это или плохо и переходить на конкретности может/не может кто-то что-то

Да ради бога, давай не будем. Я как-то просто недопонял, извини. Я-то думал, что ты не знаешь, как что сделать, и спрашиваешь совета. Но, поскольку "Я не первый десяток лет пишу программы и уж что что , а искать я могу" и "Я очень даже все хорошо понимаю", а ответы на твои вопросы (например, последний: "теперь как мне присвоив к примеру вывод фунции к object, потом понять а что же в object было занесено?") находятся в документации примерно за 20-30 секунд, вывод единственный - тебе просто лень самому писать код, и ты хочешь, чтобы за тебя написали программу. Чтож, возможно какой-нибудь добрый самаритянин и будет тебе пооператорно писать в форуме, но мне неохота - я за написание программ деньги получаю. Разяснить что-то человеку, который не знает/не понимает - всегда пожалуйста, а работать забесплатно вместо лентяев - увольте :D



Партнер
 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Kot-II писал(а):
тебе просто лень самому писать код, и ты хочешь, чтобы за тебя написали программу

Да нет, за меня никто ничего никогда не напишут . А мы эту ветку открывали именно для таких вопросов (прочти еще раз ВНИМАТЕЛЬНО заголовок ветки) Дока есть, все есть, но как и писал выше тяжко искать ответ, не зная что именно надо искать :) У object есть GetType так вот в help описано все это вполне в духе .NET

Kot-II писал(а):
но мне неохота - я за написание программ деньги получаю

Ну и на кой ты тут вообще тогда пишеш я не понимкаю? Я вот за то что сейчас пишу денег не получаю, а прогами пользуются много людей.


 

Member
Статус: Не в сети
Регистрация: 18.02.2005
Откуда: Москва
Ray Adams
Ray Adams писал(а):
Ну и на кой ты тут вообще тогда пишеш я не понимкаю?

Ну я ж сказал - я думал, что ты не что-то не можешь найти, и хотел помочь. А оказалось, что ты и сам все понимаешь и искать умеешь, и моя помощь излишня :)
Ray Adams писал(а):
Дока есть, все есть, но как и писал выше тяжко искать ответ, не зная что именно надо искать У object есть GetType так вот в help описано все это вполне в духе .NET

Ага, другое дело. Оказывается, "искать умею, но не могу понять найденного" :D
Помимо GetType, есть еще такая штука, как оператор is.
Соответвенно:
Код:
object o = foo();
if (o is string)
{
   ...
   ... (string)o ...
   ...
}
else if (o is int)
{
   ...
   ... (int)o ...
   ...
}
else if (o is Byte[])
{
   ...
   ... (byte[])o ...
   ...
}


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Kot-II писал(а):
Помимо GetType, есть еще такая штука, как оператор is.

Вот это и надо было, блин половину сперли у Delphi! :) Точно такая же проверка есть в Delphi, честно говоря не думал, что там будет настолько похоже :)

Добавлено спустя 4 часа, 48 минут, 2 секунды:
Вопрос чисто теоретический:
Как лучше настроить обмен данными между win32 dll и програмой на .NET?
1. Создать shared memory, dll при надобности записывает данные в SM и выставляет семафор. EXE файл имеет поток который следит за появление семафора и при его появлении считывает данные. запись в SM может быть только в один момент времени, тоесть одновременный доступ исключен.
2. ? есть еще что-то? (Только сокеты не предлагать так как это реализовали ATI в своем Control Center)
_____
Первый вариант у меня реализован и прекрасно работает в связке win32 exe + dll. А как у .NET с потоками и с WaitForSingleObject? Интересует именно безопасность такой связки с точки зрения самого .NET.


 

Member
Статус: Не в сети
Регистрация: 14.03.2004
Откуда: Москва
Ray Adams Что значит DLL записывает?

_________________
ФИЗТЕХ- рулез, ФАКИ - сила, Кванты тоже хорошо


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
nickyoz писал(а):
Что значит DLL записывает?

Ну то и значить. DLL инжектируется в чужие прочессы и мониторить определенные события, и как только отловит их, вписывает данные в sraed memory, после чего через SetEvent подымает флаг, основная же программа ожидает через WaitForSingleObject появление этого события и считывает данные.
Тут проблема в том, что в .NET вроде не безопасно использовать указатели (ну не с технической стороны, а типа для .NET указатель это что-то инродное :) )!


 

Member
Статус: Не в сети
Регистрация: 14.03.2004
Откуда: Москва
Ray Adams В каком виде вызываются функции из DLL?
Нет. Указатели как раз и не инородные - это главное отличие от Java. Но при этом указатели строго типизированны и нельзя (по крайней мересчитается небезопасно) сделать char[...] в MyClass
И кроме того, сильно отличается ABI. Возможно (точно не помню) часть елементов класса хранитья не в адресном пространстве процесса, а ещё где-то... В общем в све время по моему витала идея об едином адресном пространстве __gc.

_________________
ФИЗТЕХ- рулез, ФАКИ - сила, Кванты тоже хорошо


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
nickyoz Ты знаеш что такое SharedMem?


 

Member
Статус: Не в сети
Регистрация: 14.03.2004
Откуда: Москва
Ray Adams Да. Просто я не предсталяю что об shared memory думает .net
PS: програю я под linux, предпочитаю posix

_________________
ФИЗТЕХ- рулез, ФАКИ - сила, Кванты тоже хорошо


 

Ray Adams писал(а):
Как лучше настроить обмен данными между win32 dll и програмой на .NET?


- можно зарегистрировать класс .net в качестве com-объекта
- можно импортировать функции доступа (типа CreateFileMapping) в класс .net
- можно написать небольшую native dll с простыми в использовании функциями (ReadData) и импортировать их

Вариантов - масса.


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Mong Я думаю, что .NET позволяет использовать SharedMem. Или все же нет? Если импортнуть нудные функции будет ли все работать? Все таки это работа с общей памятью! Меня вот и интересует. Так как я пока не берусь писать , то что я хотел (время нету), я просто хочу подготовится к началу работы :)


 

Member
Статус: Не в сети
Регистрация: 24.09.2004
Откуда: Belarus, Mensk
Kot-II >>теперь как мне присвоив к примеру вывод фунции к object, потом понять а что же в object было занесено?

Во второй версии C# вас ждет сюрприз: generics (да, да, они родимые, всем знакомые со времен С++, правда в несколько ином формате). Также были введены partial classes, итераторы, различный уровень доступа get/set и многое многое другое. На перечисление и освоение новых технологий уходит много времени (читайте статьи на том же RSDN, кодовое название новой среды - Visual Studio 2005 - Whidbey). Релиз ожидается где-то поздней осенью, но уже сейчас с сайта GotDotNet.ru можно заказать Beta 2 Visual Studio 2005. Продукт вполне пристойный, но не обошлось без досадных ляпов, да и среда иногда просто вылетает (бетка, как никак). Но есть режим AutoRecovery, что вполне неплохо спасает от этой напасти. Извините, отвлекся.

Ray Adams >>У object есть GetType так вот в help описано все это вполне в духе .NET

Понятное дело. Это же обычный метод обычного нетовского объекта. Правда, зачем в данном случае лезть в Reflection я не понимаю :)

Kot-II >>Помимо GetType, есть еще такая штука, как оператор is.

Не нужно путать боб с горохом. Помимо is есть еще typeof и as :)

>>FileStream TextFile = new FileStream(OpenFileD.FileName, FileMode.Open, FileAccess.Read);
const int FileBlockSize = 5120;
Byte[] abyBuffer = new Byte[FileBlockSize];
int icount;

while ((icount = TextFile.Read(abyBuffer, 0, FileBlockSize)) > 0)
{
StringBuilder buf = new StringBuilder();
buf.Append(Encoding.Unicode.GetString(abyBuffer));
TextOut.Text += buf;
};
TextFile.Close();

Вот этот вот код в корне не верный. Дело в том, что если между открытием и закрытием файла у нас выбросится исключение, то ресурс не высвободится, а значит достучать из другого потока до этого файла не удастся. Тут необходимо использовать ключевое слово using, тогда и Close() не надо. Его неявно вызовет GC. Т.е. что-то в этом духе:

using (FileStream TextFile = new FileStream(OpenFileD.FileName, FileMode.Open, FileAccess.Read)) {
const int FileBlockSize = 5120;
Byte[] abyBuffer = new Byte[FileBlockSize];
int icount;

while ((icount = TextFile.Read(abyBuffer, 0, FileBlockSize)) > 0)
{
StringBuilder buf = new StringBuilder();
buf.Append(Encoding.Unicode.GetString(abyBuffer));
TextOut.Text += buf;
};
}

Ray Adams >>Вот это и надо было, блин половину сперли у Delphi!

Никто ничего не спер. Их же один и тот же мужик ваял! :)

Ray Adams >>Как лучше настроить обмен данными между win32 dll и програмой на .NET?

Тебе должна помочь книжка Apress - COM and Interoperability - 2002. В нете где-то бесплатно раздавали (официально, естественно :)) Если не найдешь сообщи, напрягусь вспомню ссылку.

_________________
ruSpiegel.net - русское зеркало дотнета
Ваши любимые статьи и блоги, посвященные Microsoft .NET Framework, теперь и на русском языке.


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
eisernWolf писал(а):
Тебе должна помочь книжка Apress - COM and Interoperability

Попробую найти, но это отсноиться к .NET или вообще к COM? Так как мепня больше интересует именно .NET.
Неужели никто на NET никогда не работал с SharedMem ???


 

Member
Статус: Не в сети
Регистрация: 24.09.2004
Откуда: Belarus, Mensk
2 Ray Adams: Это относится именно к связке .NET & COM. Читай, там все есть :)

_________________
ruSpiegel.net - русское зеркало дотнета
Ваши любимые статьи и блоги, посвященные Microsoft .NET Framework, теперь и на русском языке.


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
eisernWolf А мне не это надо. Простой Win32 DLL + NET, прочти на прошлой странице , что я писал. Елси не понятно будет могу конкретнее описать, как это работает сейчас в Win32.


 

Member
Статус: Не в сети
Регистрация: 06.11.2003
Ray Adams google дал следующую ссылку
http://weblogs.asp.net/rosherove/archiv ... /6295.aspx
кажеться то что тебе нужно

Добавлено спустя 5 минут, 33 секунды:
Ray Adams судя по вопросам тебе нужно прочитать книгу по программированию на c#, там эти вещи описаны как базовые, и ещё познакомиться с описанием стандартных namespaces, это избавит от многих других вопросов


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
DenisMak писал(а):
судя по вопросам тебе нужно прочитать книгу по программированию на c#, там эти вещи описаны как базовы

Работа с SharedMem и связь с dll win32 это базовое в C#? :) Книгу я читал и читаю сейчас тоже, там сам C# и .NET, а узкие места там не описаны
Вот это http://weblogs.asp.net/rosherove/archiv ... /6295.aspx в принципе мне и надо было. Осталось лишь мелкие вещи проверить, особенно работу WaitForSingleObject


 

Member
Статус: Не в сети
Регистрация: 06.11.2003
Ray Adams я про вопросы перед этим


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
DenisMak писал(а):
я про вопросы перед этим

Это уже в прошлом :)


 

Member
Статус: Не в сети
Регистрация: 07.05.2003
Откуда: Москва
Да,господа, я очень рад,что моя ветка хоть немного
,но живет))
однако никто так и не поделился своими успехами в конструировании собственных контролов

_________________
Вы все еще жарите на AMD??? Тогда мы идем к Вам!
подпись: Intel & Ko -----------------------> (C) Smoke


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 481 • Страница 6 из 25<  1 ... 3  4  5  6  7  8  9 ... 25  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan