| 
			| 
					
						| Dimka 
								ДеятельКоманда клуба    Offline 
								Пол:    | 
								|  | « Ответ #30 : 05-02-2008 09:21 »  |  | 
 
 Известные разные любопытные проекты, находящиеся в зачаточном состоянии. Типа: http://channel8.msdn.com/Posts/Cosmos-the-C-OS-that-you-can-play-with/ Если их доведут до ума, будет интересно. |  
						| 
								|  |  
								|  |  Записан | 
 
 Программировать - значит понимать (К. Нюгард)Невывернутое лучше, чем вправленное (М. Аврелий)
 Многие готовы скорее умереть, чем подумать (Б. Рассел)
 |  |  | 
	| 
			| 
					
						| jur 
								Помогающий    Offline | 
								|  | « Ответ #31 : 06-02-2008 08:57 »  |  | 
 
 Ну, это для меня очень уж круто! :-) Я ведь пока еще только в начальной стадии нахожусь... |  
						| 
								|  |  
								|  |  Записан | 
 
 MPEG-4 - в массы! |  |  | 
	| 
			| 
					
						| Ochkarik | 
								|  | « Ответ #32 : 06-02-2008 11:17 »  |  | 
 
 dimka, пардон про 512 действительно просмотрел) в общем... о чем я хотел сказать... в общем вы правы. по 512 байт пересылать - с такой частотой... не получится. однозначно. и боюсь не только в .NET но и в обычных Сях я бы не поручился.. однозначно сборку пакетов а драйвер. тока так.
 |  
						| 
								|  |  
								|  |  Записан | 
 
 RTFM уже хоть раз наконец!     :[ ну или хотя бы STFW ... |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #33 : 31-07-2009 07:55 »  |  | 
 
 чтоб новую тему не заводить...
 Как в шарповую функцию передать ссылку на структурный тип  ? Должно же быть такое, иначе я не понимяу причину существования этого языка
 |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| Dimka 
								ДеятельКоманда клуба    Offline 
								Пол:    | 
								|  | « Ответ #34 : 31-07-2009 08:29 »  |  | 
 
 Алексей1153++, ты должен передать в функцию указатель (.NET тип System.IntPtr - аналог void *). А дальше внутри .NET разыменовать этот указатель в структуру System.Runtime.InteropServices.Marshal.PtrToStructure.
 И смотри, что .NET не будет управлять памятью этой структуры, находящейся за указателем. Т.е. ты сам должен позаботиться об освобождении этой памяти.
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Программировать - значит понимать (К. Нюгард)Невывернутое лучше, чем вправленное (М. Аврелий)
 Многие готовы скорее умереть, чем подумать (Б. Рассел)
 |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #35 : 31-07-2009 08:34 »  |  | 
 
 Dimka, а штатных средств не предусмотрено что ли ? Это странно. Наверное меньше текста и заморочек будет, если обернуть в класс :DD
 
 |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #36 : 31-07-2009 08:58 »  |  | 
 
 а ещё вопросик предупреждение CS1690: Доступ к члену в "form_1.m_days" может вызвать исключение времени исполнения, поскольку он является полем класса, который упаковывается и передается по ссылке код такой //открываем на редактированиеform_1 dlg=new form_1();
 
 if(DialogResult.OK==dlg.ShowDialog())
 {
 int n=dlg.m_days; //m_days - это public int
 ...
 }
 
что за бред , ведь dlg не вышел из видимости ещё |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| Dimka 
								ДеятельКоманда клуба    Offline 
								Пол:    | 
								|  | « Ответ #37 : 31-07-2009 14:48 »  |  | 
 
 Dimka, а штатных средств не предусмотрено что ли ? Штатных средств для чего? Я тебе и написал штатные средства получения доступа к внешним структурам. CS1690 В MSDN же написано: To resolve the warning, copy the member into a local variable and call the method on that variable.  // CS1690.csusing System;
 
 class WarningCS1690: MarshalByRefObject
 {
 int i = 5;
 
 public static void Main()
 {
 WarningCS1690 e = new WarningCS1690();
 e.i.ToString();   // CS1690
 
 // OK
 int i = e.i;
 i.ToString();
 e.i = i;
 }
 }
Видимо, твой dlg собран так, что может быть как объектом в твоей программе, так и локальной заглушкой (stub) объекта в удалённом процессе (по аналогии с COM-объектами). А в .NET, как известно, типы данных различаются как "передаваемые по ссылке" и "передаваемые по значению". Твой int - тип, экземпляры которого передаются значением. Т.е. для операций с этим значением нужна локальная переменная, где это значение находится. А внутри твоего объекта, который может быть заглушкой, на самом деле этого значения не находится. Оно должно быть сначала получено с удалённого объекта и куда-то сохранено, и только потом с ним можно выполнять какие-нибудь действия. Если ты не заводишь локальную переменную, в которую сохраняешь значение 1 раз, то при разных операциях на самом деле могут идти многочисленные запросы к удалённому объекту, и не факт, что будет получаться одно и то же. В общем члены таких типов у объектов таких классов с точки зрения программирования чем-то похожи на переменные C++ с квалификатором volatile. int volatile x; Т.е. могут менять значения вне текущего потока управления. И компилятор указывает, что от греха подальше лучше их скопировать в локальную переменную, которая гарантированно не будет меняться нигде, кроме текущего кода. Хотя, если не хочется, то можно и не копировать, но warning останется   |  
						| 
								|  |  
								|  |  Записан | 
 
 Программировать - значит понимать (К. Нюгард)Невывернутое лучше, чем вправленное (М. Аврелий)
 Многие готовы скорее умереть, чем подумать (Б. Рассел)
 |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #38 : 31-07-2009 17:55 »  |  | 
 
 понятненько ) Я скопирую, а то окно вывода загадилось ))
 а ещё вопрос, не нашёл в настройках, если там вообще есть, как отучить редактор от вредной вещи: когда начинаю комментарий с /*  , то после перевода строки редактор ляпает символ "*". неудобно как-то
 |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #39 : 31-07-2009 18:03 »  |  | 
 
 почему не удаётся
 const string txt=... .ToString();
 
 или тут как-то по хитрому из неконстантного в константный тип преобразование делается ? Уфф
 |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| Dimka 
								ДеятельКоманда клуба    Offline 
								Пол:    | 
								|  | « Ответ #40 : 31-07-2009 19:11 »  |  | 
 
 Алексей1153++, ты вообще где видел, чтобы константа инициализировалась значением переменной? Const ведь обрабатывается компилятором. Справа должна быть либо константа, либо вычислимое на этапе компиляции выражение. |  
						| 
								|  |  
								|  |  Записан | 
 
 Программировать - значит понимать (К. Нюгард)Невывернутое лучше, чем вправленное (М. Аврелий)
 Многие готовы скорее умереть, чем подумать (Б. Рассел)
 |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #41 : 31-07-2009 19:20 »  |  | 
 
 видел и применял неоднократно. В С++ 
 int i=1;
 const int k=i;
 
 
 Тут же я хотел const, чтобы случайно не поменять значение локальной переменной, куда скопировал из диалога
 |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #42 : 04-08-2009 07:39 »  |  | 
 
 чтоб новую тему не заводить...
 Как в шарповую функцию передать ссылку на структурный тип  ? Должно же быть такое, иначе я не понимяу причину существования этого языка
 
 а есть проще возможность, оказывается 		void f(out int n){
 n=7;
 }
 
 int n=0;
 f(out n);
 //n==7
 
 |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #43 : 04-08-2009 08:07 »  |  | 
 
 пытаюсь сделать аналог atoi из C++ Почти получилось, не знаю только, как в регвыражении задать , что если в начале строки не цифра, то так же надо вернуть "" Сейчас @"[\+\-]{0,1}\d+" выбирает число верно, но не сначала строки (то есть "qqq123" тоже вернёт 123) 		public static int atoi(string text){
 
 try
 {
 //найти int число, начинающееся с +,- или цифры
 text=System.Text.RegularExpressions.Regex.Match(text,@"[\+\-]{0,1}\d+").ToString();
 //парсим в цифру
 return int.Parse(text);
 }
 catch(Exception)
 {
 }
 
 return 0;
 }
 
 |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| Dimka 
								ДеятельКоманда клуба    Offline 
								Пол:    | 
								|  | « Ответ #44 : 04-08-2009 10:23 »  |  | 
 
 пытаюсь сделать аналог atoi из C++ А зачем изобретать велосипед? Convert.ToInt32(<любой стандартный тип>). Затем int.Parse(<строка>) - это если в строке точно число, иначе исключение. int.TryParse - это без исключения. Аналогичные статические методы есть у других классов чисел. |  
						| 
								|  |  
								|  |  Записан | 
 
 Программировать - значит понимать (К. Нюгард)Невывернутое лучше, чем вправленное (М. Аврелий)
 Многие готовы скорее умереть, чем подумать (Б. Рассел)
 |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #45 : 04-08-2009 10:29 »  |  | 
 
 да, японачалу это использовал, оба способа пробовал, но у них один недостаток, которого нет у atoi :
 они кидают исключение в случаях, когда в строке не цифра. А частенько требуется достать циферку из строки вида
 
 12wdfdsfg
 
 а TryParse умеет кидать System.ArgumentException , кстати )
 |  
						| 
								|  |  
								| « Последнее редактирование: 04-08-2009 10:33 от Алексей1153++ » |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| Dimka 
								ДеятельКоманда клуба    Offline 
								Пол:    | 
								|  | « Ответ #46 : 04-08-2009 11:56 »  |  | 
 
 Алексей1153++, ну дак и достань "циферку" регулярным выражением, как все белые люди делают   а TryParse умеет кидать System.ArgumentException , кстати ) В MSDN про это ничего не сказано - все возможные входы и даже null не валят исключений, а возвращают false. Извращаться меньше надо   |  
						| 
								|  |  
								|  |  Записан | 
 
 Программировать - значит понимать (К. Нюгард)Невывернутое лучше, чем вправленное (М. Аврелий)
 Многие готовы скорее умереть, чем подумать (Б. Рассел)
 |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #47 :  04-08-2009 15:18 »   |  | 
 
 да, это я промах дал, это у перегруженной TryParce исключение 		// Исключения://   System.ArgumentException:
 //     Параметр style не содержит значения из перечисления System.Globalization.NumberStyles.
 //     -или- Параметр style не является сочетанием значений System.Globalization.NumberStyles.AllowHexSpecifier
 //     и System.Globalization.NumberStyles.HexNumber.
 public static bool TryParse(string s,NumberStyles style,IFormatProvider provider,out int result);
 }
 
- это не из мсдн, а из файла студии Алексей1153++, ну дак и достань "циферку" регулярным выражением, как все белые люди делают  а я чОрный людь ))) так я и достал )   Но как задать выражение, чтобы смотрелось только с начала строки ?  |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| Finch 
								СпокойныйАдминистратор    Offline 
								Пол:    
								Пролетал мимо
								
								
								
								
								
							 | 
								|  | « Ответ #48 : 04-08-2009 16:14 »  |  | 
 
 Ну в обычных регулярках, значек ^ обозначает начало строки и значек $ конец. Т.е. чтоб выташить цифру в твоем случае, я бы написал ^\([-+]\{0,1\}[0-9]\+\).*$ Но это по правилам sed. |  
						| 
								|  |  
								| « Последнее редактирование: 04-08-2009 16:26 от Finch » |  Записан | 
 
 Не будите спашяго дракона.              Джаффар (Коша) |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #49 : 05-08-2009 04:56 »  |  | 
 
 Финч, спасибо, ^ - самое то. 		//аналог atoi из C++public static int atoi(string text)
 {
 try
 {
 text=System.Text.RegularExpressions.Regex.Match(text,@"^[\+\-]{0,1}\d+").ToString();
 if(text=="")return 0;
 
 return int.Parse(text);
 }
 catch(Exception)
 {
 }
 
 return 0;
 }
 
 |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	|  |