Member
Статус: Не в сети Регистрация: 18.02.2005 Откуда: Москва
Ray Adams
Ray Adams писал(а):
Кстати давай не будем начинать опять споры хорошо это или плохо и переходить на конкретности может/не может кто-то что-то
Да ради бога, давай не будем. Я как-то просто недопонял, извини. Я-то думал, что ты не знаешь, как что сделать, и спрашиваешь совета. Но, поскольку "Я не первый десяток лет пишу программы и уж что что , а искать я могу" и "Я очень даже все хорошо понимаю", а ответы на твои вопросы (например, последний: "теперь как мне присвоив к примеру вывод фунции к object, потом понять а что же в object было занесено?") находятся в документации примерно за 20-30 секунд, вывод единственный - тебе просто лень самому писать код, и ты хочешь, чтобы за тебя написали программу. Чтож, возможно какой-нибудь добрый самаритянин и будет тебе пооператорно писать в форуме, но мне неохота - я за написание программ деньги получаю. Разяснить что-то человеку, который не знает/не понимает - всегда пожалуйста, а работать забесплатно вместо лентяев - увольте
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
Ага, другое дело. Оказывается, "искать умею, но не могу понять найденного" Помимо 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.
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.
_________________ ФИЗТЕХ- рулез, ФАКИ - сила, Кванты тоже хорошо
Как лучше настроить обмен данными между 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.
Добавлено спустя 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
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения