Просмотр полной версии : Вопросы - ответы C#, Java
procedure
02.11.2008, 19:58
Ранее была такая тема, сейчас её нет. Вот создал))
И как раз хотелось бы задать вопрос. В visual studio C# express edition имеется такая трабла. В toolbox нету элемента Adapter для установления соединения к бд с проектом. Есть GridView но когда его подключаешь к форме, он создает свою таблицу которая мне не нужна. Я хочу привязать записи к своему TextBox'у. Как посоветуете это сделать?
т.е. объект DataSet создать можно, но как привязать DataSet к форме? Ранее для этого использовался элмент свойства DataBindings но сейчас он отсутствует не знаю что делать(((
зачем тебе DataSet к форме привязывать!? оО
procedure
03.11.2008, 00:21
чтоб вывести данные в эту форму. А вобще чтоб работать можно было с ними. Сам факт заключаеться в том что я не могу их привязать.
procedure
08.11.2008, 19:29
В общем, прошлую проблему давно решил, забыл отписать. Только появился новый вопрос:
Вот допустим, я хочу использовать в своем проекте Excel таблицу. Которая допустим открывалась бы в моей программе и можно было редактировать некоторые данные. Или наоборо, допустим один из форматов экспорта из проекта был doc или exl.
Для этого я так понимаю, нужно подключать общедоступные модули, правильно?
Но где их можно найти в GAC я не нашел...(((
Или допустим не буду усложнять, к примеру хотяб нужно подключить WMPlayer чтоб управлять им можно было из моей программы. Где можно найти либу для wmp?
Да хотяб на примере простого блокнота объясните пожалуйста. ОЧЕНЬ СИЛЬНО ХОЧУ ПОНЯТЬ ЭТО!! Как взаимодействовать с другими программами.
OLE
не только ole. Есть и сторонние либы, и их не мало - и пользоваться ими иногда удобнее)
http://www.completit.com/Products/DGVE/FAQs.aspx
Вот это то, что юзал я. Расширение стандартного DataGridView - со всеми необоходимыми фичами для работы с экселем, пользовать довольно удобно.
Что не понравилось - то что даже три строчки из грида сохраняет заметное количество времени, но вроде никакого api для отслеживания прогресса этого я там не наблюдал.
procedure
11.11.2008, 19:26
1. И все таки, нигде не нашел я информацию. По работе с OLE в C#. Если можно, киньте плиз, ссылку на какую нибудь литературу или хотя бы один пример элементарный.
2. Прочитал, немного о COM, вроде понял. Но не полностью, так как примеры были все на C++. Так же если найдется лит-ра или примеры использования COM на C# с мну +.
3. Ну и еще конечно же интересует API в C#. Буду благодарен за лит-ру или элементарный пример.
p.s. за каждый пункт, ставлю +5 и огромное спасибо. ;)
Сборник статей World C# скачай, там про использование WinAPI точно есть, да и много еще всяких разных статей на различные темы.. возможно там найдешь ответы на все свои вопросы.
OLE (http://www.codeproject.com/KB/edit/MyExtRichTextBox.aspx)
Building COM Objects in C# (http://www.csharphelp.com/archives/archive281.html)
Using C# Classes as COM Objects (http://www.csharphelp.com/archives/archive190.html)
C# and API (http://www.csharphelp.com/archives/archive79.html)
english only...
как лучше реализовывать drag&drop для своих объектов? C#
Вот допустим, я хочу использовать в своем проекте Excel таблицу. Которая допустим открывалась бы в моей программе и можно было редактировать некоторые данные.
Самое простое - кидаешь на форму WebBrowser, и затем
webBrowser1.Navigate("c:\\Книга1.xls");
procedure
12.11.2008, 06:58
Algol уже разобрался. Оказывается тут еще проще:
(идем в Add Reference -> COM -> WMP
private void button1_Click(object sender, EventArgs e)
{
WMPLib.WindowsMediaPlayerClass wmp = new WMPLib.WindowsMediaPlayerClass();
string Path = @"file://C:/_home/music/mattafix_-_things_have_changed.mp3";
wmp.openPlayer(Path);
}
D1mka && 0х22b тут на англ((
3. Ну и еще конечно же интересует API в C#. Буду благодарен за лит-ру или элементарный пример.
http://www.intuit.ru/department/pl/plintro/18/3.html
вот на русском и расписано по самое нехочу =)
да и вообще нравится мне интуит сайт, хороший =)
procedure
12.11.2008, 18:12
Это разве API?)))
p.s. INTUIT мне тоже нравиться, но я бы так сказал, туда нужно идти. Перед первым реальным каким нибудь заказом. Для того чтобы пройти все тесты по курсу. т.к. сам материал на сайте несколько афористичен.
мдееее, читай про атрибут [DllImport]
именно он позволяет подключать библиотеки, что мешает тебе подключить библиотеку winsock к примеру?
если я правильно понял, тебе нужно заюзать API в C# проекте, так вот, то что я дал и есть ответ на твой вопрос...
ппц =\
мдееее, читай про атрибут [DllImport]
именно он позволяет подключать библиотеки, что мешает тебе подключить библиотеку winsock к примеру?
если я правильно понял, тебе нужно заюзать API в C# проекте, так вот, то что я дал и есть ответ на твой вопрос...
ппц =\
еще полезно знать ресурс pinvoke.net - там доки по реализации апишных функций под .net
procedure
15.11.2008, 10:25
еще вопрос такой появился:
(зеркало с gotdotnet.ru даже там не могут ответить)
Здравствуйте, читаю старую книгу. Выполняя одно упражнение столкнулся с проблемой. Нужно модифицировать в файле Global.asax несколько методов и добавить using.
В проекте файла не оказалось. Я его подключил File -> New File. В первый раз с таким сталкиваюсь, но в файле помимо C# кода, идет xml внутри которого сам код. Модифицировать методы получилось, добавить глобальные переменные тоже (компиляция проходит успешно). Но обращаясь к этим методам из других скриптов C#, (которые находятся в проекте) они не находятся (или правильней - не определяются). И включить оператор using в Global.asax тоже не удалось.
Я буду вам очень благодарен, если поможете решить проблему. Я использую Visual Studio 2008 Team System.
как лучше реализовывать drag&drop для своих объектов? C#
реализовывать нужно самостоятельно,разве что потом перегрузить(не пробовал.потом может отпишу) DragDropAction(или типо того).
// наконец-то процитировал сам себя :)
Как в С# работать с ini файлами. Мне нужно сделать что-то вроде:
SrvIP=10.10.200.1
Port=999
и так дальше.
WAYS
Что мешает создать текстовый файл и обозвать его *.ini? И записывай что хочешь туда.
WAYS
Что мешает создать текстовый файл и обозвать его
Я не знаю как потом считать или изменить только порт например.
1. работай с XML файлом - лучший вариант, если тебе только не нужна структура вида key=value
2. c# не знаю, но в java есть класс Properties. Ему даешь файл( i/o stream ) и дальше дергаешь методы getProperty(key), setProperty(key, value), в зависимости от того что тебе нужно. В c#, мне кажется, должно быть что-либо подобное. Попробуй погуглить.
3. можно "вручную" парсить файл - но это бяка.... Но если ничего не найдешь более подходящего - то делай так - в любой книжке по шарпу есть работа с файлами.
гуглим господа (http://www.mentalis.org/soft/class.qpx?id=6)
Я не знаю как потом считать или изменить только порт например.
Советую почитать про:
Сериализацию;
Properties
вот наглядный пример: http://www.sendspace.com/file/n9ykab
W!z@rD
Forcer
Спасибо. Не уменю кидать плюсики :)
procedure
30.11.2008, 18:40
Допустим есть таблица в которой хранится информация в виде { ID, ФИО, Должность, Двоичные данные (картинка)}. Как можно сделать что то типа собственного GridView. т.е. я хочу чтобы все это было отформатировано не по стандартному. т.е. не простой таблицой, а допустим в некой собственной форме. ?
procedure
01.12.2008, 22:33
Прошлую проблему решил, появилась новая. Подскажите пожалуйста аналог библиотеки cURL в php для C#.
т.е. cURL применяется для моделирования действий в браузере, а в C# есть ли подобное?
Прошлую проблему решил, появилась новая. Подскажите пожалуйста аналог библиотеки cURL в php для C#.
т.е. cURL применяется для моделирования действий в браузере, а в C# есть ли подобное?
WebBrowser + mshtml
эта связка позволяет неплохо работать с деревом объектов html документа (можно и без mshtml, но тогда возможностей меньше)
из очевидных недостатков - просто так нельзя сделать консольное приложение (т.е. нужна форма с контролом WebBrowser, который играет роль интерфейса к ядру IE)
ЛИбо, можно использовать HttpWebRequest/HttpWebResponse и либу HtmlAgilityPack - она позволяет несколько проще разбирать html'ки на объекты тэгов (плюс есть возможность юзать XPath)
В этом случае форма не нужна, тк WebBrowser не используется
procedure
03.12.2008, 16:20
ЛИбо, можно использовать HttpWebRequest/HttpWebResponse и либу HtmlAgilityPack - она позволяет несколько проще разбирать html'ки на объекты тэгов (плюс есть возможность юзать XPath)
В этом случае форма не нужна, тк WebBrowser не используется
+1000 ))))
Я об этом только вчера читал. А WebBrowser не знаю) В общем я читал, только как правильно обрабатывать отправляемые пакеты, или !Page.IsPostBack ))
А как анализировать другую какую либо страницу, не было написано у меня в книге.... но думаю вскоре пойму..Нужно научиться хотяб авторизацию на каком нибудь сайте проходить)
Добрый день.
У меня возникла загвоздка,а именно как на C# можно стереть все данные из картинки и записать туда свои,уточняю-нужно стереть все keywords из EXIF тега(его ID=0x9c9e) и записать туда свои которые например хранятся в массиве.
Заранее большое спасибо.
procedure
11.12.2008, 15:02
Ну просматривать можно примерно так:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
namespace Image
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(fals e);
Application.Run(new Form1());
string filename = "";
Bitmap img = new Bitmap(filename);
foreach (PropertyItem imgItem in img.PropertyItems)
MessageBox.Show((Convert.ToString(img.Size)+ Convert.ToString(img.Tag)+
Convert.ToString(img.VerticalResolution)+ Convert.ToString(imgItem.Id)+
Convert.ToString(imgItem.Len)+ Convert.ToString(imgItem.Type)+
Convert.ToString(imgItem.Value)), "Свыше",
MessageBoxButtons.OK, MessageBoxIcon.Information);
//И еще много чего)))
}
}
}
Существует еще класс ImageCodecInfo.
А изменять EXIF можно так (код не мой):
private void WriteNewDescriptionInImage(string Filename,string NewDescription)
{
Image Pic;
PropertyItem[] PropertyItems;
byte[] bDescription=new Byte[NewDescription.Length];
int i;
string FilenameTemp;
Encoder Enc=Encoder.Transformation;
EncoderParameters EncParms=new EncoderParameters(1);
EncoderParameter EncParm;
ImageCodecInfo CodecInfo=GetEncoderInfo("image/jpeg");
// copy description into byte array
for (i=0;i<NewDescription.Length;i++) bDescription[i]=(byte)NewDescription[i];
// load the image to change
Pic=Image.FromFile(Filename);
// put the new description into the right property item
PropertyItems=Pic.PropertyItems;
PropertyItems[0].Id=0x010e; // 0x010e as specified in EXIF standard
PropertyItems[0].Type=2;
PropertyItems[0].Len=NewDescription.Length;
PropertyItems[0].Value=bDescription;
Pic.SetPropertyItem(PropertyItems[0]);
// we cannot store in the same image, so use a temporary image instead
FilenameTemp=Filename+".temp";
// for lossless rewriting must rotate the image by 90 degrees!
EncParm=new EncoderParameter(Enc,(long)EncoderValue.TransformR otate90);
EncParms.Param[0]=EncParm;
// now write the rotated image with new description
Pic.Save(FilenameTemp,CodecInfo,EncParms);
// for computers with low memory and large pictures: release memory now
Pic.Dispose();
Pic=null;
GC.Collect();
// delete the original file, will be replaced later
System.IO.File.Delete(Filename);
// now must rotate back the written picture
Pic=Image.FromFile(FilenameTemp);
EncParm=new EncoderParameter(Enc,(long)EncoderValue.TransformR otate270);
EncParms.Param[0]=EncParm;
Pic.Save(Filename,CodecInfo,EncParms);
// release memory now
Pic.Dispose();
Pic=null;
GC.Collect();
// delete the temporary picture
System.IO.File.Delete(FilenameTemp);
}
Большое спасибо за потраченное время.
За просмотр конечно спасибо,но он не так важен(да и в гугле полно исходников чего не скажешь про запись),постараюсь интегрировать этот код к себе,позже отпишусь что-да как.)
Возник вопрос,а именно GetEncoderInfo для его использования нужны какие-либо дополнительные библиотеки?(Я использую Visual C# 2008 express).
В поиске он мне коечто выдал насчет этой функции,но ничего полезного.
jawbreaker
15.12.2008, 19:11
Цитата из MSDN:
Obtains an encoder that converts a sequence of Unicode characters into an ASCII encoded sequence of bytes.
Namespace: System.Text
Assembly: mscorlib (in mscorlib.dll)
поэтому пишешь в своей проге using System.Text; и радуешься =)
если бы все так было просто =/
Прописан у меня System.Text и всеравно пишет ошибку =/
1. Framework какой?
2. Мб переустановить фраемворки?
фреймворк 3 или 3.5 точно не знаю.
З.Ы. сижу на висте.
Проблема с exifom решена-нашел на с++ хорошую прогу)
Теперь возник другой вопрос,а именно.
Сейчас приведу пример:у меня есть ArrayList и в нем содержится скажем 200 записей,большинство из них будут повторяться.
Вот собственно и вопрос существуют ли в C# встроенные функции которые смогут:
определить общее количество повторяющихся элементов,и в дальнейшем записать их и также их количество в двумерный массив:
массив[элемент][кол.повторений]
З.Ы. в ручную написать смогу,просто интерестно есть ли такие встроенные функции в C#.
Проблема с exifom решена-нашел на с++ хорошую прогу)
Теперь возник другой вопрос,а именно.
Сейчас приведу пример:у меня есть ArrayList и в нем содержится скажем 200 записей,большинство из них будут повторяться.
Вот собственно и вопрос существуют ли в C# встроенные функции которые смогут:
определить общее количество повторяющихся элементов,и в дальнейшем записать их и также их количество в двумерный массив:
массив[элемент][кол.повторений]
З.Ы. в ручную написать смогу,просто интерестно есть ли такие встроенные функции в C#.
нет, в core я такого не видел)
procedure
20.12.2008, 01:35
Это называется использование регулярных выражений и цикла for.
+там какие то еще интерфейсы были.
procedure
20.12.2008, 07:13
Ну можешь и без for сделать, но с for будет удобней.
LINQ к примеру можно использовать... (3.5 Framework)
либо регулярное выражение типа:
^(.*)(\r?\n\1)+$
в $1 будет находится 1 экземпляр совпадения. Т.е. у тебя 5 слов - "Yo", в $1 будет "Yo". при этом 4-ре других отбросятся
procedure
20.12.2008, 17:29
Каким образом ты будешь вести счет повторений?
Каким образом ты будешь вести счет повторений?
Вот это мне тоже интерестно)
W!z@rD,спасибо за помощ обязательно попробую)
З.Ы.
вот мой код,помогите найти где чего не хватает.
for (int k = 0; k < hex_colors.Count; k++ )//Начинаем проходить основной цикл...
{
bool status = false;
int cnt = 0;
for (int m = 0; m > list.Count; m++ )//далее проверяем,если из hex_colors ничего ли не совпало из list...
{
if (Convert.ToString(list[m]) == Convert.ToString(hex_colors[k]))//если совпало то делаем continue;,если нет то ничего не делаем...
{
status = true;
break;
}
}
if (status)
{
continue;
}
for (int l = k; l < hex_colors.Count; l++ )//в этом цикле начинаем подсчитывать совпадения
{
if (Convert.ToString(hex_colors[l]) == Convert.ToString(hex_colors[k]))
{
cnt++;
}
else//как только совпадения закончились записываем в list цвет и его количество ,далее делаем break; и начинаем основной цикл заного
{
list.Add(Convert.ToString(hex_colors[l-1]));
list.Add(cnt);
break;
}
}
}
for (int n = 0; n < list.Count; n++ )//пишем содержимое массива list в файл
{
tmpp += Convert.ToString(list[n]) + "\n";
}
TextWriter data = new StreamWriter("data.txt");
data.WriteLine(tmpp);
data.Close();
где hex_colors это отсортированный ArrayList с хтмл цветами внутри.
где list это пустой ArrayList в который буду позже добавлять повторяющиеся цвета.
И вот кодга я открываю файл посмотреть на его содержимое я вижу следующее...
#C02020
9
#C02020
8
#C02020
7
#C02020
6
#C02020
5
#C02020
4
#C02020
3
#C02020
2
#C02020
1
#C02040
133
#C02040
132
#C02040
131
#C02040
130
#C02040
129
#C02040
Да,отчасти это то что нужно но когда я получил цвет
#C02020 и его кол 9(это все верно) поидее сразу должен идти след цвет(#C02040 с количеством 133),а у меня почемуто его кол с каждым разом уменьшается на 1,вообщем помогите найти где косяк.
Заранее большое спасибо!)
меня это смущает:
if (Convert.ToString(hex_colors[l]) == Convert.ToString(hex_colors[k]))
{
cnt++;
}
меня это смущает:
можно поподробнее, что именно? и как надо было-бы сделать.)
Всем огромное спасибо за участие и помощ я смог сам разобраться-вот где надо поправить)
во первых тут
неправильно- for (int m = 0; m > list.Count; m++ )
правильно- for (int m = 0; m < list.Count; m++ )
лол на такой фигне подлететь)
и тут ещё
неправильно:
for (int l = k; l < hex_colors.Count; l++ )
{
if (Convert.ToString(hex_colors[l]) == Convert.ToString(hex_colors[k]))
{
cnt++;
}
else
{
list.Add(Convert.ToString(hex_colors[l-1]));
list.Add(cnt);
break;
}
}
правильно:
for (int l = k+1; l < hex_colors.Count; l++ )
{
if (Convert.ToString(hex_colors[l]) == Convert.ToString(hex_colors[k]))
{
cnt++;
}
else
{
list.Add(Convert.ToString(hex_colors[l-1]));
list.Add(cnt+1);
break;
}
}
Народ, подскажите плз литературу по шарпу(2008студио) для создания собственных форм, т.е. чтоб я знал как нарисовать свое окно программы, свой компонент и т.д.
Заранее спасибо.
horlyk,
C#. Разработка компонентов в MS Visual Studio 2005/2008
http://www.ozon.ru/context/detail/id/3963390/
procedure
15.01.2009, 18:00
.Matches().Count
Но ты же все равно пля, будешь юзать while!!!
horlyk -> WPF, Microsoft Expression Blend, а вообще прежде чем что то делать, нужно выработать требования и составить архитектуру.
Да,знаю я не первый кто задает этот вопрос,просто нигде так и не смог найти корректного решения этой проблемы...
Вот код и вопрос:
string filename = "test.txt";
File.CreateText(filename);
File.Delete(filename);
воть,пишет ошибку-нельзя удалить файл т.к. он используется другим процессом...
Вариант-перезапустить программу и затем без проблем удалить... но мне это не подходит.
Догадываюсь как-то можно намутить с FileStream или с чем то похожим, т.к. у него есть функция file.Close();.
Вот собственно и вопрос как все это устроить?
Заранее спасибо,с меня +.
Всё оказалось гораздо проще чем я думал,воть может комунить тоже интерестно будет как избавиться от этой проблемы
string filename = "test.txt";
FileStream fl = File.Create(filename);
fl.Close();
File.Delete(filename);
rudvil, молодец что решил проблему сам ;)
tarakannn
17.01.2009, 11:08
возник новый вопрос:
с помощью:
private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
{
if (tabControl1.SelectedIndex==1)
if (e.KeyChar < '0' || e.KeyChar > '9')
e.KeyChar = '\0';
}
можно заблокировать в текстБоксе все кнопки клавы, кроме цифр, как тоже самое сделать в столбце ДатаГридВиева?
Этот код разрешит вводить только цифры
private void textbox_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue > 47 && e.KeyValue < 58)
{
}
else
{
e.SuppressKeyPress = true;
}
}
tarakannn
18.01.2009, 10:44
http://xmages.net/out.php/i90878_4.JPG (http://xmages.net)
чего не хватает? что за ошибка?
tarakannn
18.01.2009, 11:59
или обьясните, как по другому удалить все записи из таблица
tarakannn
18.01.2009, 12:17
какая тебе разница? на чем переменные? на красоту кода я не претендую, т.к. первая программа на Сшарпе
Значит есть объект DataGridView:
По дефолту в нем только одна поле(строка), а остальное место пустует.
Можно ли его как-то заполнить по-дефолту, чтобы юзер не видел коричнегого бэкграунда, а только видел ячейки?
Значит есть объект DataGridView:
По дефолту в нем только одна поле(строка), а остальное место пустует.
Можно ли его как-то заполнить по-дефолту, чтобы юзер не видел коричнегого бэкграунда, а только видел ячейки?
измени свойство - AllowUserToAddRow = false
p.s. если мне не изменяет память, то у объекта Cells[index] имеется метод устанавливающий цвет бэкраунда. Cells[index].BackColor = Color.Black
или обьясните, как по другому удалить все записи из таблица
using(var sqlCon = new SqlConnection(ConStr))
{
using(var cmd = new SqlCommand("Truncate Table <TableNameHere>", sqlCon)
{
sqlCon.Open();
cmd.ExecuteNonQuery();
}
}
если я ничего не забыл. вобщем просто Truncate table делаешь и все
подробнее о Truncate Table - http://msdn.microsoft.com/ru-ru/library/ms177570.aspx
Народ, подскажите пожалуйста, как в шарпе устроить проверку типов, тоесть я считываю с консоли строку, потом хочу преобразовать ее в целочисленный тип. Но если в строке находилась буква, а не цифра? как узнать об успешности или не успешности конвертирования?
я пробовал сделать так:
if ((Пункт_Меню = int.Parse(пункт_меню)) == 0)
где Пункт_Меню - целочисленный тип int, а пункт_меню - строковый string
Но у меня не вышло( хелп плз :rolleyes:
procedure
01.02.2009, 16:45
Есть такие операторы как is и as.
is возвращает true если, тот тип который нужен. as возвращает объект, если можно привести к типу.
Смотри допустим:
if (15 is int)
Console.Write("true");
else
Console.WriteLine("false");
вернет true
if ("sdfs" is int)
Console.Write("true");
else
Console.WriteLine("false");
вернет false
Есть такие операторы как is и as.
is возвращает true если, тот тип который нужен. as возвращает объект, если можно привести к объекту.
Смотри допустим:
if (15 is int)
Console.Write("true");
else
Console.WriteLine("false");
вернет true
if ("sdfs" is int)
Console.Write("true");
else
Console.WriteLine("false");
вернет false
Спасибо огромное!
Может я немного не понял, но у еня чего-то не получается(
class Program
{
static public void Main()
{
int a;
string c;
c = Console.ReadLine();
a = int.Parse(c);
if (a is int)
Console.Write("true");
else
Console.Write("false");
}
Если ввести в консоли число - все нормально, но если букву - вылезает ошибка с отчетом виндовс( Что сделать, чтобы при вводи с консоли буквы появлялось "false", а не ошибка?
заранее спасибо!
Думал я думал, напрягался я напрягался... и в итоге что-то да получил. Хотя работает не совсем идеально, но все же!
while (true)
{
int a = -1;
string c;
c = Console.ReadLine();
int.TryParse(c, out a);
if (a != 0)
Console.Write("true");
else
Console.Write("false");
}
Но есть и 1 минус - это то, что значение 0 оно не воспринимает как число. int.TryParse(c, out a); в случае не правильности ввода возвращает в переменную а значение 0. А в случае правильности - уже целочисленное значение переменной с. Потому и пришлось убрать 0.
Может кто подскажет вариант по эффективнее?
Думал я думал, напрягался я напрягался... и в итоге что-то да получил. Хотя работает не совсем идеально, но все же!
while (true)
{
int a = -1;
string c;
c = Console.ReadLine();
int.TryParse(c, out a);
if (a != 0)
Console.Write("true");
else
Console.Write("false");
}
Но есть и 1 минус - это то, что значение 0 оно не воспринимает как число. int.TryParse(c, out a); в случае не правильности ввода возвращает в переменную а значение 0. А в случае правильности - уже целочисленное значение переменной с. Потому и пришлось убрать 0.
Может кто подскажет вариант по эффективнее?
Додумал до идеала!
while (true)
{
int atemp;
string c;
c = Console.ReadLine();
if ((int.TryParse(c, out atemp)) == true)
Console.WriteLine("true");
else
Console.Write("false");
}
фух, ну и напрягся) если кто знает еще способы - напишите плз)
А вот еще проще, без использования дополнительной переменной!
int atemp;
while (true)
{
if ((int.TryParse(Console.ReadLine(), out atemp)) == true)
Console.WriteLine("true");
else
Console.WriteLine("false");
}
Думаю, это идеальный вариант)
Народ, подскажите пожалуйста, как в шарпе устроить проверку типов, тоесть я считываю с консоли строку, потом хочу преобразовать ее в целочисленный тип. Но если в строке находилась буква, а не цифра? как узнать об успешности или не успешности конвертирования?
я пробовал сделать так:
if ((Пункт_Меню = int.Parse(пункт_меню)) == 0)
где Пункт_Меню - целочисленный тип int, а пункт_меню - строковый string
Но у меня не вышло( хелп плз :rolleyes:
try
{
var i = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("true");
}
catch
{
Console.WriteLine("false");
}
имхо...
P.S. конструкция if() всегда подразумевает что условие возращает true;
т.е.
не
if ((int.TryParse(Console.ReadLine(), out atemp)) == true)
а
if ((int.TryParse(Console.ReadLine(), out atemp)))
Тему видимо удалили, но я обещал выложить видео. Думаю, в этой теме оно будет в некоторой степени к месту. Вот собственно оно:
Создание окон произвольной формы на платформе Java с применением технологии JavaFX:
http://ifolder.ru/10374109
http://www.filefactory.com/file/afgfeea/n/video_rar
Не буду продолжать холиварить и разводить демагогию что лучше а что хуже. Скажу лишь, что не нужно недооценивать и принижать достоинства Java. А так - каждый волен выбирать что ему по вкусу. *peace* ;)
P.S. Всем спасибо, было интересно на самом деле пообщаться. Не знал что на форуме столько джавистов. Всем удачи на профессиональном поприще - и джавистам и дотнетчикам! :)
De-visible
04.02.2009, 06:52
Тему видимо удалили, но я обещал выложить видео. Думаю, в этой теме оно будет в некоторой степени к месту. Вот собственно оно:
Создание окон произвольной формы на платформе Java с применением технологии JavaFX:
http://ifolder.ru/10374109
http://www.filefactory.com/file/afgfeea/n/video_rar
Не буду продолжать холиварить и разводить демагогию что лучше а что хуже. Скажу лишь, что не нужно недооценивать и принижать достоинства Java. А так - каждый волен выбирать что ему по вкусу. *peace* ;)
P.S. Всем спасибо, было интересно на самом деле пообщаться. Не знал что на форуме столько джавистов. Всем удачи на профессиональном поприще - и джавистам и дотнетчикам! :)
Вес большеватый, так бы глянул:(
Как в Шарпе обходятся без глобальных объектов? Мне нужно, чтобы велась некая статистика, но я не знаю как сделать ее без глобальных объектов. Объект содержит 3 переменных. При каждом вызове одного метода(их 10), в параметры объекта вносятся коррективы - а именно увеличение на 1 определенных параметров, а других на 2. Как можно это реализовать, подскажите плз
модификатор доступа public разве не катит?
Значения сбрасываются все на 0 после каждого вызова метода, вернее после окончания его работы
Надеюсь ты к методам не через :: обращаешься? Если да, то переменные не будут сохраняться после действий... Так, что без объекта не обойтись.
YourClass obj = new YourClass();
obj.method();
Console.Write(obj.variable):
Надеюсь ты к методам не через :: обращаешься? Если да, то переменные не будут сохраняться после действий... Так, что без объекта не обойтись.
YourClass obj = new YourClass();
obj.method();
Console.Write(obj.variable):
Спасибо! Конечно все не совсем так, а с точностью наоборот! Я вызывал тот метод для объекта собственного класса! теперь все работает! Спасибо за идею! С меня+++++
[x26]VOLAND
08.02.2009, 09:38
Такой вопрос (C#).
Есть основной поток программы. Из него запускаю другой (рабочий) поток методом thread.Start().
Но как известно, код после thread.Start() выполняется сразу, не дожидаясь завершения рабочего потока.
Как мне дождаться завершения рабочего потока и только затем продолжить выполнение кода сновного потока, при этом чтобы во время ожидания GUI программы не зависал?
Пробовал AutoResetEvent :
thread.Start(); //Запускаем рабочий поток
autoEvent.WaitOne(); // лочится основной поток
< some_code >; // код, который нам надо выполнить по завершению рабочего потока
В конце рабочего потока прописан сигнальный вызов autoEvent.Set().
Но данный метод естественно не прокатил, ибо ожидающий (он же основной) поток начисто блокируется (то есть gui виснет)
Какие есть пути решения?
geezer.code
08.02.2009, 09:50
VOLAND']Такой вопрос (C#).
Есть основной поток программы. Из него запускаю другой (рабочий) поток методом thread.Start().
Но как известно, код после thread.Start() выполняется сразу, не дожидаясь завершения рабочего потока.
Как мне дождаться завершения рабочего потока и только затем продолжить выполнение кода сновного потока, при этом чтобы во время ожидания GUI программы не зависал?
Пробовал AutoResetEvent :
thread.Start(); //Запускаем рабочий поток
autoEvent.WaitOne(); // лочится основной поток
< some_code >; // код, который нам надо выполнить по завершению рабочего потока
В конце рабочего потока прописан сигнальный вызов autoEvent.Set().
Но данный метод естественно не прокатил, ибо ожидающий (он же основной) поток начисто блокируется (то есть gui виснет)
Какие есть пути решения?
в .NET framework начиная с 2.0 есть такая штука как BackgroundWorker - чтото вроде упрощенной для пользования реализации потоков. у него есть асинхронные вызовы. используй его. я думаю это решит твою проблему.
VOLAND']
Как мне дождаться завершения рабочего потока и только затем продолжить выполнение кода сновного потока, при этом чтобы во время ожидания GUI программы не зависал?
controlThread = new Thread(method);
controlThread.Start();
while (controlThread.ThreadState != System.Threading.ThreadState.Stopped)
Application.DoEvents();
.....
В общем есть вопросик.
(С#, консоль)
1. Как узнать, какую клавишу нажал пользователь(допустим стрелку вниз и на консольке отобразился номер этой клавиши.) ?
мне нужно проверить так:
if(нажата стрелка вниз)
{сделать то}
Было бы очень интересно увидеть пример с коментами, если можно.
Заранее спасибо!
procedure
13.02.2009, 01:01
//Создаем экземпляр объекта, в который
//заносим инофрмацию о только что нажатой клавише
ConsoleKeyInfo keyInfo = Console.ReadKey(false);
//Выводим на экран информацию о клавише.
//Из этого же экземпляра (keyInfo) можно вытянуть и нужную тебе инфу
Console.WriteLine(keyInfo.Key);
так?
//Если нажали стрелку вниз, то ...
if (keyInfo == ConsoleKey.DownArrow)
{
//...
}
так?
//Если нажали стрелку вниз, то ...
if (keyInfo == ConsoleKey.DownArrow)
{
//...
}
чуть - чуть поправлю:
if(keyInfo.Key == ConsoleKey.DownArrow)
Спасибо!
Как покрасить ячейку и ряд в DataGridView?
ToniKapuchon
14.02.2009, 00:31
Как покрасить ячейку и ряд в DataGridView?
вот!!
this->dataGridView2->Rows[0]->DefaultCellStyle->BackColor=System::Drawing::Color::Red;
С#
Подскажите пожалуйста, как сделать консольку полноэкранной по умолчанию? то есть чтобы она запускалась уже в полноэкранном режиме. Что изменить нужно в коде или каких-то свойствах?
procedure
14.02.2009, 15:45
horlyk а вот этого насколько я знаю, сделать нельзя.
Рыл, рыл я в инете инфу... уже расстроился... в гугле, на какой-то там странице, мож 10-й по счету, нашел интересную темку (http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/0b374f73-5604-48ee-a720-53bb5b19467b/)
Прочитал ее хорошенько, потестив, извлек из нее этот код:
using System;
using System.Runtime.InteropServices;
namespace ConsoleApplication1
{
class Program
{
[DllImport("kernel32.dll")]
private static extern IntPtr GetStdHandle(int handle);
[DllImport("kernel32.dll")]
private static extern bool SetConsoleDisplayMode(IntPtr hConsole, int mode);
static public void Main()
{
IntPtr hConsole = GetStdHandle(-11);
SetConsoleDisplayMode(hConsole, 1);
}
}
}
Хоть я и мало что понимаю из этого кода, но работает все же) Если кто знает что об этом коде - растолкуйте плз.
Тряси мануалы винапи и dllки в си шарпе
Вообщем идет импорт функций из стандартных библиотек Windows, потом их использование. Инфу о функциях(их больше 1000) смотри в msdn.
procedure
15.02.2009, 13:54
А ну средствами апи, можно хоть хоть, многое хоть что ;)
p.s. Спасибо, кстати. Мне тоже пригодится. Добавлю в шаблоны.
p.p.s. у меня что то не запустился на весь экран. У тебя запускается?
А ну средствами апи, можно хоть хоть, многое хоть что ;)
p.s. Спасибо, кстати. Мне тоже пригодится. Добавлю в шаблоны.
p.p.s. у меня что то не запустился на весь экран. У тебя запускается?
Да, запускается. У меня 2005-я студия, С#. Там в той темке, что я линк давал, есть код, что можно еще сразу делать развернутый режим консоли.
procedure
15.02.2009, 14:30
У тебя виста? Если нет или да,
скинь билд ппробую, может на висте не прет.
Как остановить background worker? Стандартным методом не хочет останавливать =(. Хочет, чтобы я переопределил метод. Как это сделать правильно?
P.S SetConsoleDisplayMode на висте при больших разрешениях экрана не отображает.
[x26]VOLAND
15.02.2009, 14:52
Как получить данные из опр. колонки опр. ряда компонента DataGridView?
[x26]VOLAND, мы одно и тоже делаем))))?
tblGrid.Rows[pos].Cells[3].Value
У тебя виста? Если нет или да,
скинь билд ппробую, может на висте не прет.
у меня XP, вот на всякий случай билд (http://www.dagoth.at.ua/ConsoleApplication1.exe). Там выскочит предуприждение о возможности скачки вируса - игнорируй его.
О, и попутный вопрос, как убрать курсор мыши(квадратик тот вместо мышьки), чтобы его вообще небыло, то есть чтоб работа была исключительно с клавой и ни какого намека на мышь.
Cursor.Hide();
Пространство имен: System.Windows.Forms
Cursor.Hide();
Что подключить нужно, чтоб это работало?
[x26]VOLAND
15.02.2009, 16:24
Как остановить background worker? Стандартным методом не хочет останавливать =(. Хочет, чтобы я переопределил метод. Как это сделать правильно?
P.S SetConsoleDisplayMode на висте при больших разрешениях экрана не отображает.
метод CancelAsync() запрашивает остановку а не производит её. То есть фактически этот метод устанавливает поле CancellationPending равным true.
Чтобы остановить поток, нужно в рабочем потоке прописать следующее:
(bgWorker - статическая инстанция BackgroundWorker())
private void bgWorker_Work(object sender, DoWorkEventArgs e) // Событие DoWork
{
if (bgWorker.CancellationPending) {
e.Cancel = true;
} else {
// ресурсоёмкая операция
}
}
Зачем из любого метода (например, обработчика события нажатия кнопки Отмена) запрашиваем отмену:
if (bgWorker != null) {
if (bgWorker.IsBusy == true) {
bgWorker.CancelAsync();
}
}
Cursor.Hide();
Пространство имен: System.Windows.Forms
А для консоли в полноэкранном режиме?
А для консоли в полноэкранном режиме? Консоли в полноэкранном не бывает =)
Консоли в полноэкранном не бывает =)
Нажми Alt+Enter :) или скомпилируй код, что я выше писал, или скачай билд, что я ссылку давал - все выше)
procedure
17.02.2009, 16:59
horlyk хз, что у тебя. Но у меня на висте, ни в какую не хочет.
horlyk хз, что у тебя. Но у меня на висте, ни в какую не хочет.
это скорее всего дело именно в висте. На ХР работает 100% - я скидывал нескольким людям для проверки. А мой екзешник у тебя тоже не пашет?
Вопрос по шарпу.
Почему код
private void Box_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
if (e.KeyCode == Keys.Right)
{
this.Box.Location = new System.Drawing.Point((Box.Location.X + 5), Box.Location.Y);
}
}
не работает, а
private void Box_Click(object sender, EventArgs e)
{
this.Box.Location = new System.Drawing.Point((Box.Location.X + 5), Box.Location.Y);
}
работает отлично?
Как сделать так, чтобы при нажатии стрелки вправо делалось то-же самое, что и при нажатии мыши во втором фрагменте кода, то есть движение объекта по Х вправо?
Блин, все оказалось просто - сделал обработчик событий для формы и все заработало :/
Вопрос по шарпу.
Почему код
private void Box_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
if (e.KeyCode == Keys.Right)
{
this.Box.Location = new System.Drawing.Point((Box.Location.X + 5), Box.Location.Y);
}
}
не работает, а
private void Box_Click(object sender, EventArgs e)
{
this.Box.Location = new System.Drawing.Point((Box.Location.X + 5), Box.Location.Y);
}
работает отлично?
Как сделать так, чтобы при нажатии стрелки вправо делалось то-же самое, что и при нажатии мыши во втором фрагменте кода, то есть движение объекта по Х вправо?
поставь точку остановки по событию KeyPress нажми на стрелку вправо.... посмотри ей код.... и if() сравнивай.... уверен, что всё будет good
Народ, подскажите, как в шарпе можно из 2-й формы закрыть первую?
пример: у меня мини игра. После окончания игры, мне нужно чтобы выскакивало модальное окно 2-й формы с кнопкой начать новую игру(игра в первой форме). Та первая форма закрывается и запускается новый экземпляр первой формы с параметрами по умолчанию, то есть игра сначала.
Как закрыть первую форму из 2-й и запустить другой экземпляр первой формы со значениями по умолчанию, то есть новой игрой?
Блин, сижу и ломаю голову несколько часов, а как только на форуме напишу - спустя минут этак 10 и придумываю как сделать, ппц) мож это из-за того, что это совсем простые вопросы я задаю :)
Тогда другой вопрос, как на время работы 2-й формы скрыть первую, а после окончания работы 2-й формы активировать 1-ю? Я знаю что можно использовать this.Hide()
Форма скрывается, но как потом вернуть ее видимость?
Народ, подскажите, как в шарпе можно из 2-й формы закрыть первую?
пример: у меня мини игра. После окончания игры, мне нужно чтобы выскакивало модальное окно 2-й формы с кнопкой начать новую игру(игра в первой форме). Та первая форма закрывается и запускается новый экземпляр первой формы с параметрами по умолчанию, то есть игра сначала.
Как закрыть первую форму из 2-й и запустить другой экземпляр первой формы со значениями по умолчанию, то есть новой игрой?
Блин, сижу и ломаю голову несколько часов, а как только на форуме напишу - спустя минут этак 10 и придумываю как сделать, ппц) мож это из-за того, что это совсем простые вопросы я задаю :)
Тогда другой вопрос, как на время работы 2-й формы скрыть первую, а после окончания работы 2-й формы активировать 1-ю? Я знаю что можно использовать this.Hide()
Форма скрывается, но как потом вернуть ее видимость?
не проще ли вывести MessageBox, а после нажатия кнопки обнулить все значения(т.е. начать новую игру)
не проще ли вывести MessageBox, а после нажатия кнопки обнулить все значения(т.е. начать новую игру)
Меня интересует именно тот способ, что я написал.
Меня интересует именно тот способ, что я написал.
Тогда как-то так:
Form.ActiveForm.Visible = false;
Form.ActiveForm.Visible = true;
исправил, думаю так должо сработать.
Чуть позже сам покопаю посмотрю что-да как.
Вот, сделал!! в архиве(ifolder) (http://ifolder.ru/10694269) проект(пример) :)
З.Ы. удачи в создании игрушки)
Вот, сделал!! в архиве(ifolder) (http://ifolder.ru/10694269) проект(пример) :)
З.Ы. удачи в создании игрушки)
Спасибо за пример, но есть одно НО. Процесс остается висеть в памяти компьютера после завершения работы программы. Посмотри в диспетчере задач :)
Есть класс A и класс B(причем классов может быть неограниченное кол-во).
В контроллер приходит имя из InputBox'a - "A".
Мне требуется создать экземпляр класса по его имени(без if и switch).
Это реально как-то организовать в рантайме? Если да, то как?
Это реально как-то организовать в рантайме? Если да, то как? Конечно.
Type.GetType("ConsoleApplication1.Test").GetConstructor(System.Type.EmptyTypes).Invoke(nu ll);
KaZ@NoVa
26.03.2009, 05:47
Есть класс A и класс B(причем классов может быть неограниченное кол-во).
В контроллер приходит имя из InputBox'a - "A".
Мне требуется создать экземпляр класса по его имени(без if и switch).
Это реально как-то организовать в рантайме? Если да, то как?
Мм. Если нужна помощь, то изложи вопрос нормальным языком. Лучше всего - покажи исходный текст задачи.
А то "Есть класс A и класс B(причем классов может быть неограниченное кол-во)" - какая-то палата ;6.
https://forum.antichat.ru/showpost.php?p=1190575&postcount=2578
Это что интересно?
Мм. Если нужна помощь, то изложи вопрос нормальным языком. Лучше всего - покажи исходный текст задачи.
А то "Есть класс A и класс B(причем классов может быть неограниченное кол-во)" - какая-то палата ;6.
Всё вполне понятно.
Пожалуйста растолкуйте понятным языком, что такое делегаты?зачем они нужны в реальных проектах?
[x26]VOLAND
30.03.2009, 15:43
Делегат - это попросту говоря ссылка на метод, но в тоже время он ведёт себя как тип (сразу скажу, что без понимания ООП понять суть делегатов будет сложно).
Делегаты - основа событий в C#. Без них не обходится ни одна нормальная программа.
допустим, имеется метод:
public void MethodToCall(Type1 agr1, Type2 arg2) { }
И, когда ты пишешь
someObj.SomeAction += new SomeDelegateType(MethodToCall)
ты говоришь компилятору, что при событии SomeAction должен выполниться метод MethodToCall().
Как я говорил, делегат - прежде всего тип, который мы обязаны объявить:
public delegate void SomeDelegateType(Type1 agr1, Type2 arg2);
При этом набор аргументов и их типов является неким подобием интерфейса (то есть наш метод MethodToCall должен принимать такие же аргументы). Отсюда следует вывод, что перегруженные методы не могут ссылаться на делегат одного и того же типа.
Также делегаты можно вызывать из разных потоков, что очень помогает при разработке многопоточных программ. но об это позже...
procedure
01.04.2009, 15:05
Немного дополню:
Делегат содержит 2 поля:
1. Ссылка на объект.
2. указатель на метод.
Если 1ое поле равно null, метод должен быть статистичеким.
Постараюсь ответить на вопрос MaDfUn зачем они нужны в реальных проектах?
Если ты проектируешь спамер или флудер для школьников, то впринципе делегаты тебе не нужны. А если ты проектируешь opensource прилолжение, выполняешь важный заказ или просто хочешь чтобы твой код смотрелся красиво нужно использовать делегаты и события. Хотя с .net 2.0 есть еще анонимные методы, а с 3его уже можно использовать лямбда выражения, которые еще больше упрощают процесс понимания сего и проектирования.
Повторю слова Трэй Нэша "В хорошо спроектированной системе, узер интерфейс отделен от логики управления посредством четкой абстрации - обычно реализуемой через шаблон Мост".
Вообще видов делегатов бывают много (обобщеный делегат, делегат закрытого экземпляра, открытого экземпляра, статический делегат, цепочка делегатов).
Вкратце о каждом:
1. Делегат закрытого экземпляра:
using System;
namespace test
{
//создаем делегат
// public - модификатор доступа
// delegate - делагат )
// int - возвращаемое значение
// RaiseReputation - тип делегата
// int - параметры принимающие методом
public delegate double RaiseReputation(double reputation);
public class AntichatUser
{
//Конструктор объекта
public AntichatUser(double reputation)
{
this.reputation = reputation;
}
/// <summary>
/// поднять на %
/// </summary>
/// <param name="percent"></param>
/// <returns></returns>
public double ApplyRaiseOf(double percent)
{
reputation = reputation * (1 + percent);
Console.WriteLine("reputation: {0}", reputation);
return reputation;
}
// Репутация
private double reputation;
}
public class EntryPoint
{
static void Main()
{
// Создаем экземпляры классов
AntichatUser user1 = new AntichatUser(180);
AntichatUser user2 = new AntichatUser(600);
AntichatUser user3 = new AntichatUser(920);
// создаем экземпляры делегата!!!
RaiseReputation thisDelegate1 = new RaiseReputation(user1.ApplyRaiseOf);
RaiseReputation thisDelegate2 = new RaiseReputation(user2.ApplyRaiseOf);
RaiseReputation thisDelegate3 = new RaiseReputation(user3.ApplyRaiseOf);
//Увеличиваем значение свойства объекта на 80% и выводим результат на консоль
Console.WriteLine(thisDelegate1(0.8));
Console.WriteLine(thisDelegate1(0.8));
// а этому на 60% #-)
Console.WriteLine(thisDelegate1(0.6));
//ожидаем активности пользователя
Console.ReadKey();
}
}
}
В самом начале тут, мы создаем делегат, в комментариях описано думаю подробно. Далее мы создаем класс и метод в классе с которым будут работать экземпляры делегатов. Далее все в Main() думаю подробно описано. Единтсвенное что можно добавить это то что мы инициируем вызов метода, методом thisDelegate1(0.8), который в свою очередь принимает параметры точно такого же типа или типа не явно конвертирующегося в тип принимаемый методом ApplyRaiseOf(). Точно так же, экземпляр делегата после этого возвращает нам параметры.
Почему закрытого? Потому что каждый раз делегат выполняется только для экземпляра того класса, который мы указали в параметрах при вызове методы RaiseReputation.
Главное запомнить, что когда мы используем делегат вызывающий метод экземпляра объекта, мы передаем ему так же и текущий экземпляр объекта. Об этом позже, чтоб не вводить тебя в заблуждения.
2. делегат открытого экземпляра
А что если у нас не 3 объекта по отдельности, а 10 в коллекции?
Именно для таких нужд и созданы делегаты открытого типа.
using System;
namespace test
{
//создаем делегат
// public - модификатор доступа
// delegate - делагат )
// int - возвращаемое значение
// RaiseReputation - тип делегата
// int - параметры принимающие методом
public delegate double RaiseReputation(AntichatUser user, double reputation);
public class AntichatUser
{
//Конструктор объекта
public AntichatUser(double reputation)
{
this.reputation = reputation;
}
/// <summary>
/// поднять на %
/// </summary>
/// <param name="percent"></param>
/// <returns></returns>
public double ApplyRaiseOf(double percent)
{
reputation *= (1 + percent);
Console.WriteLine("reputation: {0}", reputation);
return reputation;
}
// Репутация
private double reputation;
}
public class EntryPoint
{
static void Main()
{
// Создаем коллекцию и помещаем туда экземпляры
System.Collections.Generic.List<AntichatUser> users =
new System.Collections.Generic.List<AntichatUser>();
users.Add(new AntichatUser(100));
users.Add(new AntichatUser(590));
users.Add(new AntichatUser(980));
// Итак, тут немного дуаю будет сложно разобратся, - помогу.
// Мы создаем экземпляр MethodInfo
// далее мы безопасно получаем тип класса AntichatUser
// (то же что и Type type = new Type(тра ля ля);
// Далее вызываем метод GetMethod() первым параметром
// которого является название метода, вторым это
// прявязки так называемые. На основе которых будет подбираться метод
// Public и Instance в данном случае значит что все pulic члены так же должны быть включены.
System.Reflection.MethodInfo info =
typeof(AntichatUser).GetMethod("ApplyRaiseOf",
System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);
// Тут создание экземпляра делегата, мы доверяем методу CreateDelegate()
RaiseReputation iAmDelegate =
(RaiseReputation)Delegate.CreateDelegate(typeof(Ra iseReputation), info);
//Повышаем всем на 80% репутацию.
foreach (AntichatUser user in users)
iAmDelegate(user, 0.8);
//ожидаем активности пользователя
Console.ReadKey();
}
}
}
В комментариях все подробно описано.
3. Статически делегат.
Тоже самое что делегат закрытого типа. Только метод который стоит в указателе делагата на объект, является статистическим. т.е. 1ое поле у него null, а второе ссылка на *статистический* метод.
4. Обобщенный делегат, в точности такой же как делегат закрытого типа. За исключением того что он работает с обобщенными типами <T>.
пример:
public delegate double RaiseReputation<T>(<T> reputation);
Если мы не хотим поймать экскепшн, мы должны в нашем методе это предусмотреть.
Думаю такая логика идиоту понятна, поэтому демонстрировать не буду)
------
Но я бы тебе пососветовал не останавливатся на делегатах и взглянуть на события.
[x26]VOLAND
02.04.2009, 02:00
foreach (AntichatUser user in users)
iAmDelegate(user, 0.8);
Помоему вот так:
for (int i = 0; i < users.Count; iAmDelegate(users[i], 0.8));
быстрее и красивее )
geezer.code
02.04.2009, 14:17
VOLAND']Помоему вот так:
for (int i = 0; i < users.Count; iAmDelegate(users[i], 0.8));
быстрее и красивее )
красивее и быстрее - да, но читаемость кода ухудшается.
читаемость точно хуже :), в первый раз даже не заметил что нет ++!
Киньте кто кусок рабочего кода работы System.Net.Mail.SmtpClient! А то при отправке (.Send()) выдаёт ошибку!
geezer.code
07.04.2009, 12:55
Киньте кто кусок рабочего кода работы System.Net.Mail.SmtpClient! А то при отправке (.Send()) выдаёт ошибку!
заглянем в мсдн, а там.... ух ты! готовый код!
using System;
using System.Net;
using System.Net.Mail;
using System.Net.Mime;
using System.Threading;
using System.ComponentModel;
namespace Examples.SmptExamples.Async
{
public class SimpleAsynchronousExample
{
static bool mailSent = false;
private static void SendCompletedCallback(object sender, AsyncCompletedEventArgs e)
{
// Get the unique identifier for this asynchronous operation.
String token = (string) e.UserState;
if (e.Cancelled)
{
Console.WriteLine("[{0}] Send canceled.", token);
}
if (e.Error != null)
{
Console.WriteLine("[{0}] {1}", token, e.Error.ToString());
} else
{
Console.WriteLine("Message sent.");
}
mailSent = true;
}
public static void Main(string[] args)
{
// Command line argument must the the SMTP host.
SmtpClient client = new SmtpClient(args[0]);
// Specify the e-mail sender.
// Create a mailing address that includes a UTF8 character
// in the display name.
MailAddress from = new MailAddress("jane@contoso.com",
"Jane " + (char)0xD8+ " Clayton",
System.Text.Encoding.UTF8);
// Set destinations for the e-mail message.
MailAddress to = new MailAddress("ben@contoso.com");
// Specify the message content.
MailMessage message = new MailMessage(from, to);
message.Body = "This is a test e-mail message sent by an application. ";
// Include some non-ASCII characters in body and subject.
string someArrows = new string(new char[] {'\u2190', '\u2191', '\u2192', '\u2193'});
message.Body += Environment.NewLine + someArrows;
message.BodyEncoding = System.Text.Encoding.UTF8;
message.Subject = "test message 1" + someArrows;
message.SubjectEncoding = System.Text.Encoding.UTF8;
// Set the method that is called back when the send operation ends.
client.SendCompleted += new
SendCompletedEventHandler(SendCompletedCallback);
// The userState can be any object that allows your callback
// method to identify this send operation.
// For this example, the userToken is a string constant.
string userState = "test message1";
client.SendAsync(message, userState);
Console.WriteLine("Sending message... press c to cancel mail. Press any other key to exit.");
string answer = Console.ReadLine();
// If the user canceled the send, and mail hasn't been sent yet,
// then cancel the pending operation.
if (answer.StartsWith("c") && mailSent == false)
{
client.SendAsyncCancel();
}
// Clean up.
message.Dispose();
Console.WriteLine("Goodbye.");
}
}
}
ps вообще неплохо было бы выложить текст ошибки.
pps для тех кто не в курсе как отправляется почта клиент отправляет письмо посредством smtp сервера. возможно смтп сервер будет требовать авторизацию
пример приведен для сервера с открытым релеингом(имя передается в args[0]).
если сервер требует авторизации , ТО также нужно передать credentials
примерно так.
client.Credentials = new NetworkCredential("myemail", "mypassword");
зззы - работайте головой.
KaMiKadZe
11.04.2009, 22:44
Visual C# 2008 при создание проекта выдает ошибку Requested registry access is not allowed. (Стоит Windows 7) как исправить?
procedure
16.04.2009, 07:53
Столкнулся с проблемой, подскажите пожалуйста, как из объекта Image, получить текстовую строку, содержащую все символы картинки. В текстовом виде. Для того чтобы отправить в запросе.
Столкнулся с проблемой, подскажите пожалуйста, как из объекта Image, получить текстовую строку, содержащую все символы картинки. В текстовом виде. Для того чтобы отправить в запросе.
image.ToString() :D :D
procedure
16.04.2009, 11:22
Если бы так все легко...))
#10:21 original returned: System.Drawing.Bitmap
geezer.code
16.04.2009, 12:27
Столкнулся с проблемой, подскажите пожалуйста, как из объекта Image, получить текстовую строку, содержащую все символы картинки. В текстовом виде. Для того чтобы отправить в запросе.
http://www.codeproject.com/KB/recipes/ImageConverter.aspx
ну а byteArray я думаю сам справишься. :)
public byte[] imageToByteArray(System.Drawing.Image imageIn)
{
MemoryStream ms = new MemoryStream();
imageIn.Save(ms,System.Drawing.Imaging.ImageFormat .Gif);
return ms.ToArray();
}
public Image byteArrayToImage(byte[] byteArrayIn)
{
MemoryStream ms = new MemoryStream(byteArrayIn);
Image returnImage = Image.FromStream(ms);
return returnImage;
}
Visual C# 2008 при создание проекта выдает ошибку Requested registry access is not allowed. (Стоит Windows 7) как исправить?
Эта проблема возникает потому, что учетная запись пользователя, которую вы использовали для входа в систему, не имеют достаточных полномочий. Или если по простому, войди как одмин ;)
Происходит это потому что Visual пытается писать в реестр, а в Вин 7 песать туда могут не все проги. И еще в 7ке с правами доступа намудрили, если тут писать начну, то это на весь день))) лучше прочитай руководство для разработчиков на Windows 7 (на русском языке) (http://blogs.msdn.com/rudevnews/archive/2009/03/30/windows-7.aspx) и будешь в теме. :)
Строка
=?utf-8?B?0KLQtdC80LA=?=
закадировано
Тема
Как получить эти русские буквы??? шарп!
Установил jdk. Прописал переменные среды. Компилю простой пример
class test
{
public static void main(String args[])
{
System.out.println("Hello");
}
}
javac test.java
всё ок.
потом выполняю java test.class
выдаёт ошибку
C:\Documents and Settings\Admin>java "C:\Documents and Settings\Admin\Рабочий ст
ол\test.class"
Exception in thread "main" java.lang.NoClassDefFoundError: C:\Documents and Sett
ings\Admin\╨рсюўшщ ёЄюы\test/class
Caused by: java.lang.ClassNotFoundException: C:\Documents and Settings\Admin\╨рс
юўшщ ёЄюы\test.class
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Could not find the main class: C:\Documents and Settings\Admin\╨а╨░╨▒╨╛╤З╨╕╨╣ ╤Б
╤В╨╛╨╗\test.class. Program will exit.
ПАМАГИТЕ Люди добрые.
потом выполняю java test.class
выдаёт ошибку
Расширение .class писать не нужно.
Правильно:
java test
http://java.sun.com/docs/books/tutorial/getStarted/cupojava/win32.html
Строка
закадировано
Как получить эти русские буквы??? шарп!
string[] parts = "=?utf-8?B?0KLQtdC80LA=?=".Split('?');
byte[] bytes = Convert.FromBase64String(parts[3]);
Console.WriteLine(Encoding.UTF8.GetString(bytes));
Здравствуйте! Возник вопрос, как сменить имя проекта в Visual Studio 2008(C#) имеется ввиду чтобы изменилось все неймспейсы, имя папки с проектом и тд
зы
буду очень благодарен за помощь!
Здравствуйте! Возник вопрос, как сменить имя проекта в Visual Studio 2008(C#) имеется ввиду чтобы изменилось все неймспейсы, имя папки с проектом и тд
зы
буду очень благодарен за помощь!
Выделяешь имя неймспейса, правый клик, оптимизация, переименовать... пишешь новое имя и ставишь галки во всех 3х пунктах. А имя проекта и решения меняешь правым кликом и переименовать. Имя папки не меняй. да это впринципе и не играет не на что... Если найду как имя папки менять напишу еще...
Как сделать, чтобы программа работала в фоновом режиме(на подобии троя)? Желательно, чтобы софтина не отображалась в диспетчере задач...
зы
спасибо за любую оказанную помощь...
зы2
c# VS 2008
program.cs закоменть три строки в static void Main() и пиши свой код ;)
можно пример как сделать чтоб форма не висла при выполнении объёмной операции после нажатия баттона?
можно пример как сделать чтоб форма не висла при выполнении объёмной операции после нажатия баттона?
Объемную операцию нужно выполнять в отдельном потоке.
Объемную операцию нужно выполнять в отдельном потоке.
про это я уже читал ... но в c# опыта маловато, поэтому и прошу пример показать
про это я уже читал ... но в c# опыта маловато, поэтому и прошу пример показать
http://rsdn.ru/article/dotnet/multithrwinfrms.xml
инеблагодариатообижусь О_О
Друзья это снова я :)
как получить заголовки от сервера через HttpWebResponse и отправить из в richTextBox ? оч прошу пример
Друзья это снова я :)
как получить заголовки от сервера через HttpWebResponse и отправить из в richTextBox ? оч прошу пример
using System;
using System.Net;
public class Test
{
public static void Main()
{
var url = Console.ReadLine();
var httpWReq = (HttpWebRequest)WebRequest.Create(url);
httpWReq.Method = "HEAD";
httpWReq.KeepAlive = true;
HttpWebResponse httpWResp;
try
{
using (httpWResp = (HttpWebResponse)httpWReq.GetResponse())
{
var headers = httpWResp.Headers;
string s = "";
foreach (var h in headers)
{
s += h + "\r\n";
}
Console.WriteLine(s);
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
Console.ReadLine();
}
}
Друзья это снова я :)
как получить заголовки от сервера через HttpWebResponse и отправить из в richTextBox ? оч прошу пример
Специально для этого написал прогу на C#. Скачать можно в разделе полезные проги =)
Можно пример работы HttpWebRequest через сокс?
Можно пример работы HttpWebRequest через сокс?
Нельзя, нет там поддержки соксов. Аргумент - msdn. (http://social.msdn.microsoft.com/forums/en-US/netfxnetcom/thread/14cad2ab-f6a0-4d0f-be7e-3ae91cfb3990)
Ну я это заметил, я бы не стал тогда вопроса задавать. Как обойти?)
хм, не использовать класс HttpWebRequest) а писать на основе класса родителя TcpClient(), ну т.е. непосредственно сокеты...
А, или есчо написать свой соксификатор, который будет висеть на опр. портах, и слать на него http запросы))) ну это задроство!
Обы способа - задротство. Должны быть нормальные.
ага, нет фреймворк перекомпиль... вумный)
Я спросил реального ответа вообще-то. Ну там думал, что опенер посоветуете добавить, как в питоне, к примеру ;)
C#
Как отделить ip,port в Ip:port ?
Как получить массив из строк файла ?
string[] port_and_ip=str.Split(';'); или IndexOf() юзай!!
string[] massiv=str.Split('\n');
string[] port_and_ip=str.Split(';'); или IndexOf() юзай!!
string[] massiv=str.Split('\n');
спасибо,разбивку файла сделал подругому
string[] proxy = File.ReadAllLines(".txt"); ;)
Какой сушествует аналог функции strstr в c# ?
int i=строка1.IndexOf("строка2");
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://my.mail.ru/cgi-bin/auth");
req.Method = "POST";
req.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.7)";
// req.Headers.Add("Accept-Language", "ru");
req.ContentType = "application/x-www-form-urlencoded";
req.Accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*";
req.AllowAutoRedirect = false;
string SQuery = "page=http://my.mail.ru/&Login=" + slogin + "&Domain=" + sdom + "&Password=" + spasswd;
byte[] ByteArr = System.Text.Encoding.GetEncoding(1251).GetBytes(SQ uery);
req.ContentLength = ByteArr.Length;
req.GetRequestStream().Write(ByteArr, 0, ByteArr.Length);
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
sCookies = res.Headers["Set-Cookie"];
if ((new StreamReader(res.GetResponseStream(), Encoding.GetEncoding(1251)).ReadToEnd().IndexOf("Проверьте правильность") > 0))
richTextBox1.Text = accs+" BAD";
else {
req = (HttpWebRequest)HttpWebRequest.Create("http://my.mail.ru/mail/" + slogin + "/friends/?popup_list=1");
req.AllowAutoRedirect = true;
req.Method = "GET";
req.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.7)";
req.Headers.Add("Accept-Language", "ru");
req.Referer = "http://my.mail.ru/cgi-bin/auth";
req.ContentType = "application/x-www-form-urlencoded";
req.Accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*";
req.ContentType = "text/plain";
req.Headers.Add(HttpRequestHeader.Cookie, sCookies);
res = (HttpWebResponse)req.GetResponse();
StreamReader strr = new StreamReader(res.GetResponseStream(), Encoding.GetEncoding(0));
Что я делаю не так ? Пытаюсь авторизироваться на my.mail.ru,авторизация проходит,куки получаю.Пытаюсь перейти на другую страницу с этими куками, не выходит...
Ded MustD!e
27.05.2009, 19:55
За Java никогда не брался, но вот пришлось, нужно сделать простую вещь: создать класс, внутри этого класса есть метод, который возвращает в переменную в основной программе число 5, собственно нужно тело основной программы, предполагаю, что файл с классом будет выглядеть примерно так:
public class C {
int m1() {
return 5;
}
}
P.S. пишу в NetBeans IDE
Ded MustD!e, я вопрос не понял. В чём сложность?
З.Ы.
Или ты не знаешь куда мейн зафигарить?
public class C {
public static void main(String args[]) {
int res = m1(); // Собсна тут твоя цифра 5
}
private int m1() {
return 5;
}
}
Файл надо назвать C.java
P.P.S.
IDE и компилера под рукой нет, пишу на обум, могут быть очепятки.
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://my.mail.ru/cgi-bin/auth");
req.Method = "POST";
req.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.7)";
// req.Headers.Add("Accept-Language", "ru");
req.ContentType = "application/x-www-form-urlencoded";
req.Accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*";
req.AllowAutoRedirect = false;
string SQuery = "page=http://my.mail.ru/&Login=" + slogin + "&Domain=" + sdom + "&Password=" + spasswd;
byte[] ByteArr = System.Text.Encoding.GetEncoding(1251).GetBytes(SQ uery);
req.ContentLength = ByteArr.Length;
req.GetRequestStream().Write(ByteArr, 0, ByteArr.Length);
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
sCookies = res.Headers["Set-Cookie"];
if ((new StreamReader(res.GetResponseStream(), Encoding.GetEncoding(1251)).ReadToEnd().IndexOf("Проверьте правильность") > 0))
richTextBox1.Text = accs+" BAD";
else {
req = (HttpWebRequest)HttpWebRequest.Create("http://my.mail.ru/mail/" + slogin + "/friends/?popup_list=1");
req.AllowAutoRedirect = true;
req.Method = "GET";
req.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.7)";
req.Headers.Add("Accept-Language", "ru");
req.Referer = "http://my.mail.ru/cgi-bin/auth";
req.ContentType = "application/x-www-form-urlencoded";
req.Accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*";
req.ContentType = "text/plain";
req.Headers.Add(HttpRequestHeader.Cookie, sCookies);
res = (HttpWebResponse)req.GetResponse();
StreamReader strr = new StreamReader(res.GetResponseStream(), Encoding.GetEncoding(0));
Что я делаю не так ? Пытаюсь авторизироваться на my.mail.ru,авторизация проходит,куки получаю.Пытаюсь перейти на другую страницу с этими куками, не выходит...
up
Здравствуйте, может кто подскажет где можно достать инфу? Подсчет входящего трафика и его скорость вычисляется на c# довольно просто, но хотелось бы получить статистику по каждому процессу, тоесть сколько процесс получил трафика с момента старта итд. Это вообще возможно?
Заранее спасибо.
Ded MustD!e, я вопрос не понял. В чём сложность?
З.Ы.
Или ты не знаешь куда мейн зафигарить?
public class C {
public static void main(String args[]) {
int res = m1(); // Собсна тут твоя цифра 5
}
private int m1() {
return 5;
}
}
Файл надо назвать C.java
P.P.S.
IDE и компилера под рукой нет, пишу на обум, могут быть очепятки.
объект неинстанциирован ;)
A-Spt_N(o)
10.06.2009, 21:49
Народ нуна помощь:) пишу курсовую по Java. Задание - написать архиватор. Выбрал метод Run Length Encoding - RLE.
Суть в следующем: Суть методов данного подхода состоит в замене цепочек или серий повторяющихся байтов или их последовательностей на один кодирующий байт и счетчик числа их повторений.
Например:
44 44 44 11 11 11 11 11 01 33 FF 22 22 - исходная последовательность
03 44 04 11 00 03 01 03 FF 02 22 - сжатая последовательность
Первый байт указывает сколько раз нужно повторить следующий байт
Если первый байт равен 00, то затем идет счетчик, показывающий сколько за ним следует неповторяющихся данных.
В основном метод используется для картинок. Считываю данный с помощью метода Read. Ничего кроме бредовых символов не выводиться. Пробовал read(byte b []) тоже получается что то не совсем то.
Подскажите как можно реализовать побайтовой считывание картинки и запись ее в переменную для дальшейшего использования в архивации...?
Подскажите как можно реализовать побайтовой считывание картинки и запись ее в переменную для дальшейшего использования в архивации...?
BufferedImage image = ImageIO.read("file.png");
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ImageIO.write(image, "png", outputStream);
byte[] data = outputStream.toByteArray();
A-Spt_N(o)
10.06.2009, 22:56
Суть в общем понятна. Буду пробовать:) Огромное спасибо. С меня к репе...
Народ, есть проблема пишу на C# программу которая отправляет, ICMP Redirect Host сообещние, делаю машину шлюзом, отправляю с неё сообщение на узел, ноль рекации, маршрут не меняется, и arp запросы к новому шлюзу тоже не идут, хотя снифер, говорит что сообщение отправленно, может я что-то в протоколе не понимаю, но rfc прочитал.
в чем трабл?
public class my_icmp
{
public byte Type;
public byte Code;
public UInt16 Checksum;
// public byte[] gateway = new byte[4];
public int MessageSize;
public byte[] Message = new byte[1024];
public my_icmp()
{
}
public my_icmp(byte[] data, int size)
{
Type = data[20];
Code = data[21];
Checksum = BitConverter.ToUInt16(data, 22);
MessageSize = size - 24;
Buffer.BlockCopy(data, 24, Message, 0, MessageSize);
}
public byte[] getBytes()
{
byte[] data = new byte[MessageSize + 9];
Buffer.BlockCopy(BitConverter.GetBytes(Type), 0, data, 0, 1);
Buffer.BlockCopy(BitConverter.GetBytes(Code), 0, data, 1, 1);
Buffer.BlockCopy(BitConverter.GetBytes(Checksum), 0, data, 2, 2);
Buffer.BlockCopy(Message, 0, data, 4, MessageSize);
return data;
}
public UInt16 getChecksum()
{
UInt32 chcksm = 0;
byte[] data = getBytes();
int packetsize = MessageSize + 8;
int index = 0;
while (index < packetsize)
{
chcksm += Convert.ToUInt32(BitConverter.ToUInt16(data, index));
index += 2;
}
chcksm = (chcksm >> 16) + (chcksm & 0xffff);
chcksm += (chcksm >> 16);
return (UInt16)(~chcksm);
}
}
private void main_button_Click(object sender, EventArgs e)
{
byte[] data = new byte[1024];
int recv;
Socket icmp_mess = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Icmp);
IPEndPoint iep = new IPEndPoint(IPAddress.Parse(IP_txtbox.Text), 0);
EndPoint ep = (EndPoint)iep;
my_icmp packet = new my_icmp();
packet.Type = 0x05;
packet.Code = 0x01;
packet.Checksum = 0;
/* packet.gateway[0] = 0x0A;
packet.gateway[1] = 0x0A;
packet.gateway[2] = 0x10;
packet.gateway[3] = 0x97;*/
Buffer.BlockCopy(
BitConverter.GetBytes((short)1), 0, packet.Message, 0, 2);
Buffer.BlockCopy(
BitConverter.GetBytes((short)1), 0, packet.Message, 2, 2);
data = Encoding.ASCII.GetBytes(Data_TxtBox.Text);
Buffer.BlockCopy(data, 0, packet.Message, 4, data.Length);
packet.Message[0] = 0x0A;
packet.Message[1] = 0x0A;
packet.Message[2] = 0x10;
packet.Message[3] = 0x99;
packet.MessageSize = data.Length + 4;
int packetsize = packet.MessageSize +4;
UInt16 chcksum = packet.getChecksum();
packet.Checksum = chcksum;
icmp_mess.SetSocketOption(SocketOptionLevel.Socket ,
SocketOptionName.ReceiveTimeout, 3000);
icmp_mess.SendTo(packet.getBytes(), packetsize, SocketFlags.None, iep);
//icmp_mess.
try
{
data = new byte[1024];
recv = icmp_mess.ReceiveFrom(data, ref ep);
}
catch (SocketException)
{
// Console.WriteLine("No response from remote host");
Output_edit.Text += "No response from remote host";
return;
}
my_icmp response = new my_icmp(data, recv);
Output_edit.Text += ep.ToString();
Output_edit.Text += response.Type;
Output_edit.Text += response.Code;
int Identifier = BitConverter.ToInt16(response.Message, 0);
int Sequence = BitConverter.ToInt16(response.Message, 2);
Output_edit.Text += Identifier;
Output_edit.Text += Sequence;
string stringData = Encoding.ASCII.GetString(response.Message,
4, response.MessageSize - 4);
Output_edit.Text += stringData;
icmp_mess.Close();
}
}
Можно пример работы HttpWebRequest через сокс?
сегодня наткнулся при поиске другого, внимательно не смотрел, но издалека похоже (правда сокеты):
http://www.example-code.com/vbdotnet/socket_socks_proxy.asp
Огромная просьба... Кто может переписать на c# ?
function getCI($url)
{
$url = str_replace("www.", "", $url);
$ci_url = "http://bar-navig.yandex.ru/u?ver=2&show=32&url=http://www.".$url."/";
$ci_data = implode("", file("$ci_url"));
preg_match("/value=\"(.\d*)\"/", $ci_data, $ci);
if ($ci[1] == "")
return 0; // Если не смогли определить ТИЦ...
else
return $ci[1]; // Вот оно счастье...
}
Огромная просьба... Кто может переписать на c# ?
function getCI($url)
{
$url = str_replace("www.", "", $url);
$ci_url = "http://bar-navig.yandex.ru/u?ver=2&show=32&url=http://www.".$url."/";
$ci_data = implode("", file("$ci_url"));
preg_match("/value=\"(.\d*)\"/", $ci_data, $ci);
if ($ci[1] == "")
return 0; // Если не смогли определить ТИЦ...
else
return $ci[1]; // Вот оно счастье...
}
готово - https://forum.antichat.ru/showpost.php?p=1361989&postcount=30
http://4italka.okis.ru/file/4italka/1378846414.gif
http://4italka.okis.ru/
Классный сайт практически только хорошие книги сам прочел большую часть
книги по программированию на языках Assembler,Delphi,Pascal.DirectX 9.OpenGL,C++,C#,Cи,Java,Visual Basic,Visual Studio.NET,Perl, Хакинг,Win32api
надо проверить хост на валидность, делаю функцией
DNS.GetHostAddresses("hostname.ru");
при удачном выполнении функция возвращает ИП, а если такого демена нету то вылетает ошибка программы. Охото что бы в программе определялось существует домен или нет типа если да то 1 если нет то 0.
надо проверить хост на валидность, делаю функцией
DNS.GetHostAddresses("hostname.ru");
при удачном выполнении функция возвращает ИП, а если такого демена нету то вылетает ошибка программы. Охото что бы в программе определялось существует домен или нет типа если да то 1 если нет то 0.
перехватывай исключение и возвращай что нужно.
надо проверить хост на валидность, делаю функцией
DNS.GetHostAddresses("hostname.ru");
при удачном выполнении функция возвращает ИП, а если такого демена нету то вылетает ошибка программы. Охото что бы в программе определялось существует домен или нет типа если да то 1 если нет то 0.
using System;
using System.Net;
using System.Net.Sockets;
class temp
{
private static bool CheckDNS(string host)
{
try
{
Dns.GetHostAddresses(host);
}
catch (SocketException ex)
{
return false;
}
return true;
}
static void Main()
{
Console.WriteLine(CheckDNS("sdaasda"));
Console.WriteLine(CheckDNS("ya.ru"));
Console.ReadLine();
}
}
Вчера взял заказ на написание сетевой проги, узнав что писать нада на Indy - обрадовался, и без замедления принял заказ. Но когда углубился в ТЗ и увидел что использоваться должны компоненты с Indy 10 - подофигел! Стандартные работы с Инди9 тут не подходят - меня это сильно обеспокоило! Прозьба к шарящим людям - помочь!!!
вот старый сорц работы с Инди9
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
begin
if AThread.Connection.ReadLn=('Msg') then
ShowMessage('Hello Luser');
AThread.Connection.Disconnect;
end;
код не мой, и на паскале. вопрос вот в чём! Куда пропало AThread: TIdPeerThread и вообще ReadLn и WriteLn ??? Мож кто продемонстрирует как идёт отправка сообщения на Инди10 ?
A-Spt_N(o)
19.07.2009, 13:47
Народ помогите пожалуйста найти ошибочку в коде... (Java)
Кину код функции которая должна архивировать данные...
public static void packing(){//File path, String fileName){
try{
BufferedImage image = ImageIO.read(new File("X:/workspace/Java project/K-RLEArhivator/test/avatar77547.gif"));
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ImageIO.write(image, "jpg", outputStream);
byte[] data = outputStream.toByteArray();
System.out.println(outputStream.size());
FileOutputStream out = new FileOutputStream("file.dat");
int temp = 0;
for(int i = 0; i < data.length; i++){
temp = i;
while(data[i] != data[i+1])
{
packingData[index] = 00;
count++;
i++;
}
packingData[++index] = (byte) count;
for(int index_c = 0; index_c <= count; index_c++){
packingData[++index] = data[temp++];
}
count = 0;
temp = i;
while(data[i] == data [i+1]){
count2++;
i++;
}
packingData[index] = (byte) ++count2;
packingData[++index] = data[temp];
count2 = 0;
i++;
temp = i;
while(data[i] == data[i+1]){
count2++;
i++;
loop = true;
}
if(loop){
packingData[++index] = (byte) count2;
packingData[++index] = data[temp];
count2 = 0;
loop = false;
}
index++;
}
for(int b = 0; b < packingData.length; b++)
{
out.write(packingData[b]);
}
}
catch(IOException ioe){
ioe.printStackTrace();
}
Размерность аватарки - 19,725.
1)Проблема в том что когда я загружаю побайтово данные в массив data получаю размерность массива 3,523.
2)После запуска программы получаю сл ошибку:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3523
at Archiver.packing(Class_Main.java:49)
at Class_Main.main(Class_Main.java:16)
A-Spt_N(o)
в exception'e все написано - что и на какой строчке.
допустим на форме 10 кнопок, как сделать, чтобы по нажатию на первую кнопку изменился текст на случайной кнопке?
первое что приходит в голову - загнать в массив все баттоны - рандомом выбирать один из массива - и свойству текст - присваивать текст!
допустим на форме 10 кнопок, как сделать, чтобы по нажатию на первую кнопку изменился текст на случайной кнопке?
var arr = Controls.OfType<Button>().ToArray();
arr[new Random().Next(arr.Length)].Text = "test";
вот так проще некуда. .NET Framework 3.5 нужен. LINQ
Здрваствуйте, незнаю, втот ли я под форум попал, но у меня проблема такова.
Скачал Microsoft Visual Studio 8, когда я компилирую исходник, то мне пишет это
1>C:\Program Files\Microsoft Visual Studio 8\VC\include\windows.h(30) : warning C4068: unknown pragma
1>C:\Program Files\Microsoft Visual Studio 8\VC\include\windows.h(190) : fatal error C1083: Cannot open include file: 'windef.h': No such file or directory
1>Build log was saved at "file://c:\Documents and Settings\senap\Рабочий стол\programma\Release\BuildLog.htm"
И exe не получается...
Здрваствуйте, незнаю, втот ли я под форум попал, но у меня проблема такова.
Скачал Microsoft Visual Studio 8, когда я компилирую исходник, то мне пишет это
1>C:\Program Files\Microsoft Visual Studio 8\VC\include\windows.h(30) : warning C4068: unknown pragma
1>C:\Program Files\Microsoft Visual Studio 8\VC\include\windows.h(190) : fatal error C1083: Cannot open include file: 'windef.h': No such file or directory
1>Build log was saved at "file://c:\Documents and Settings\senap\Рабочий стол\programma\Release\BuildLog.htm"
И exe не получается...
>>Не удается открыть файл : "windef.h ': Нет такого файла или директории
Найди его самостоятельно, и подружи с компилятором. И будет тебе exe.
пэ.эс. приду домой напишу как это сделать
"windef.h" нету его в папке includs
Есть такая проблема:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Tester {
/**
* @param args
*/
public static void main(String[] args) {
try {
// The newInstance() call is a work around for some
// broken Java implementations
Class.forName("com.mysql.jdbc.Driver").newInstance();
} catch (Exception ex) {
// handle the error
System.out.println("No class: " + ex.getMessage());
}
Connection conn = null;
try {
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test","ss88","");
conn.close();
} catch (SQLException ex) {
// handle any errors
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
}
}
}
Пытаюсь подключиться к серверу МуСкула и получаю вылетающее исключение
SQLException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '????????????????????????????????' at line 1
SQLState: 42000
VendorError: 1064
С чем это может быть связано? Ведь я еще никаких запросов не делал, а сервер мне уже про синтаксис кричит...
Факинг-перефакинг, все здесь работает, если компилить и запускать вручную, исключение вылетает только если запускать на выполнение в eclipse.
Блин, до чего ненавижу такие баги :(
Странно то, что под Вендой Эклипс корректно запускает этот код... Хотя сервак один и тот же...
Antikvazar
07.08.2009, 13:22
привет всем вобщем я начинающий. мне посоветовали чтобы перехвативать сообщения\события в программах hook и dll inject. тк я новичек начал искать информацию в поисковиках. так вот либо ссылки на форумы где нужно регистрироватся либо написано не на C# либо пример есть но я его даже скомпилировать немогу ошибки какие нибудь все время. в гугле поискал но по английскому сломаю голову переводить никто не подскажет какуюнибудь КНИГУ или хороший ресурс где эти 2 темы НОРМАЛЬНО освещены с примерами или исходниками желательно по русски?
привет всем вобщем я начинающий. мне посоветовали чтобы перехвативать сообщения\события в программах hook и dll inject. тк я новичек начал искать информацию в поисковиках. так вот либо ссылки на форумы где нужно регистрироватся либо написано не на C# либо пример есть но я его даже скомпилировать немогу ошибки какие нибудь все время. в гугле поискал но по английскому сломаю голову переводить никто не подскажет какуюнибудь КНИГУ или хороший ресурс где эти 2 темы НОРМАЛЬНО освещены с примерами или исходниками желательно по русски?
такое пишется не на c#.
Antikvazar
07.08.2009, 13:48
придется теперь учить что то другое. а на чем пишется?
на с++. область c# - быстрая разработка десктопных приложений, крупных веб-приложений. на этом можно хорошо зарабатывать, в том числе и на фрилансе. то что ты написал наверное можно сделать на c# - смотреть надо в сторону работы с winapi - но лучше для этого использовать с++.
hook и dll inject
Джеффри РИХТЕР "Создание эффективных WIN32-приложений с учетом специфики 64-разрядной версии Windows"
C# - я новичек
Помогите реализовать процес. Есть машина, ее скорость Указывается в реальном времени в ячейку, так же есть кнопка стоп. Необходимо создать спидометр, который будет показывать километраж :)
Я думал так, но не работает
private void button1_Click(object sender, EventArgs e)
{
auto(true); //Поехали
}
private void button2_Click(object sender, EventArgs e)
{
auto(false); //Стоим
}
private void auto(bool mode)
{
int i = 0;
while (mode)
{
this.textBox1.Text = i.ToString();
Thread.Sleep(200); //Скорость, чем меньше тем быстрее
i++;
}
}
открывай 2 потока + статическая переменная.
Или 2 потока + ивент
public static bool mode;
private void button1_Click(object sender, EventArgs e)
{
mode = true;
Thread t = new Thread(new ThreadStart(auto)); //Поехали
t.Start();
}
private void button2_Click(object sender, EventArgs e)
{
mode = false; //Стоим
}
private void auto()
{
int i = 0;
while (mode)
{
this.textBox1.Text = i.ToString();
Thread.Sleep(200); //Скорость, чем меньше тем быстрее
i++;
}
}
Что никто не знает как можно управлять скоростью цикла?
Что никто не знает как можно управлять скоростью цикла?
ты вообще сам понимаешь что говоришь?
Irdis из потока нельзя работать с контролами, если не ты родитель.
Что никто не знает как можно управлять скоростью цикла?
Не понял тебя.. ..вообще можно сделать чтоб каждый второй проход по циклу был бы бесполезный для программы, ну это типа так "замедлить" можно.. хотя я не понимаю что ты хочешь.. :)
Thread.Sleep(1000);- замедли свой поток))
Thread.Sleep(1000);- замедли свой поток))
Не понял тебя.. ..вообще можно сделать чтоб каждый второй проход по циклу был бы бесполезный для программы, ну это типа так "замедлить" можно.. хотя я не понимаю что ты хочешь.. :)
ты вообще сам понимаешь что говоришь?
Irdis из потока нельзя работать с контролами, если не ты родитель.
Ребята, вы вообще читаете тему или вам лижбы что-то написать? Мб посмотрите пару постов выше.
Вот решение.
public partial class Form1 : Form
{
public Form1 ()
{
InitializeComponent ();
}
// Переменные
int a = 2000;
int b = 1;
bool mode = true;
private void button1_Click (object sender, EventArgs e)
{
int i = 0;
while (mode)
{
textBox1.Text = i.ToString ();
textBox1.Update ();
Application.DoEvents ();
Thread.Sleep (a/b);
i++;
}
}
private void numericUpDown1_ValueChanged (object sender, EventArgs e)
{
b = (int) numericUpDown1.Value;
}
private void button2_Click (object sender, EventArgs e)
{
mode = false;
}
}
Ребята помогите с массивами.
Я после пхп не могу разобраться с массивами =)
Мне нужно загнать в массив n количество строк, общим видом это типа
while (reader.Read() && reader.Name == "category")
{
element[i] = ("id" => reader.GetAttribute("id"), "parent"=>reader.GetAttribute("parent"), "color" => reader.GetAttribute("color"), "nam"= reader.GetAttribute("nam"));
i++;
}
Но конечно такой шары не будет :) Предложите как закинуть все элементы в массив и что важно, так как я не разобрался, объявить массив как динамический а не new string[10] где обязательно 10 элементов
юзай ArrayList
прочитай про коллекции в .NET
и generic так же
Спасибо конешно, мне бы пример все же не помешал.
Как вставить текст с ячейки TextBox в другую программу, например в аську? (Без буфера обмена)
WinAPI:
1. FindWindow
2. FindWindowEx
3. SetWindowText
есть буфер байт, некоторого, размера, если он не кратен 8, нужно добавить нужное количество байт до кратности.
=================
byte[] bytes;
byte[] byte1 ={20};
int a=bytes.length%8
while (a!=0)
{
bytes=bytes+byte1; <-------------------------------ERROR
a=bytes%8;
}
Как вставить текст с ячейки TextBox в другую программу, например в аську? (Без буфера обмена)
ищем окно куда будим писать и тянем с textbox.text
C#
хочу отобразить в WebBrowser конент из переменной, как это сделать?
можно конечно сохранить текст в файл , а потом указать в свойстве Url путь к этому файлу, но это же не дело.
Как узнать количество элементов в itemlist?
Пробую так:
string value = null;
int h = 0;
while (true)
{
if(listBox1.Items[h].ToString().Length == 0) {
break;
} else {
value += listBox1.Items[h].ToString().Replace("=", "-")+"&";
}
h++;
}
Не катит, пишет "InvalidArgument=Значение "3 (это кол-во значений)" недопустимо для "index"."
Ступил, есть же элементарный способ
for(int i=0; i<listBox1.Items.Count; i++) {
value += listBox1.Items[i].ToString().Replace("=", "-")+"&";
}
Я, конечно, понимаю, что мой вопрос - это абсолютный оффтоп, но я не нашел, где его можно задать, поэтому, спрошу здесь.
У меня есть файл базы данных Interbase (немного корруптед) схавает ли его Firebird, если ему его подсунуть как БД или нет? Они ж вроде как братья родные....
UPD
Путем нескольких экспериментов было установлено, что базы подходят безо всяких проблем, во всяком случае базы от Interbase 6.5 к Firebird 2.
Через JDBC-драйвер вытянул все, что нужно было.
the-roggy
05.09.2009, 13:04
делетед
Вопрос решен
Antikvazar
05.09.2009, 20:27
все разобрался :D
Подскажите стороннюю библиотеку для JAVA.
Мне нужен визуальный компонент по типу DateChooser(или как-то так), который, желательно, будет в виде редактируемого комбобокса с выпадающим календарем...
Подскажите стороннюю библиотеку для JAVA.
Мне нужен визуальный компонент по типу DateChooser(или как-то так), который, желательно, будет в виде редактируемого комбобокса с выпадающим календарем...
http://www.toedter.com/en/jcalendar/index.html
- первая ссылка в гугле по запросу "java date chooser"
Sorry, нашел доки, относительно нормальный компонент...
Заюзаю или его или Swing Date Selector
что нужно пожключить чтобы не было ошибки
Ошибка 1 Не удалось найти имя типа или пространства имен "HttpWebRequest" (пропущена директива using или ссылка на сборку?) C:\programming\***\***\***\Form2.cs
ещё вопрос.
имеется код
HttpWebRequest myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create("http://2ip.ru");
myHttpWebRequest.Proxy = new WebProxy(exploded[0], exploded[1]);
HttpWebResponse myHttpWebResponse =(HttpWebResponse)myHttpWebRequest.GetResponse();
StreamReader myStreamReader =
new StreamReader(myHttpWebResponse.GetResponseStream() ,
Encoding.GetEncoding(1251));
richTextBox2.Text+= myStreamReader.ReadToEnd();
exploded[0] и exploded[1] это данные прочитанные из файла.возникает ошибка когда определяем порт.там нужно int а exploded[1] string.что делать?
IWantBeautifulLife
15.09.2009, 21:05
В универе начали преподавать C#.Интересно, но редко, препод объясняет доходчиво, но мало и каждому, можно сказать, индивидуально.Добрая половина группы если не больше тупит ( и я в том числе), решил подучить дома, и вот первая неудача.
Источник :
Троелсен. Язык программирования С# 2005 и платформа .NET.
Код:
using System;
using System.Drawing;
namespace My
{
class MyApp
{
public void DisplayLogo()
{
Bitmap companyLogo = new Bitmap(20, 20);
}
}
}
При попытке запустить дебагер выдает ошибку:
Ошибка 1
"WindowsFormsApplication1.Form1.Dispose(bool)": не найден метод, пригодный для переопределения
Буду благодарен + за оперативный и исчерпывающий ответ.
попробуй так
using System;
using System.Drawing;
namespace My
{
class MyApp
{
public void DisplayLogo()
{
Bitmap companyLogo = new Bitmap("20", "20");
}
}
}
geezer.code
15.09.2009, 21:09
dr.Web
Convert.ToInt32("123");
IWantBeautifulLife
15.09.2009, 21:16
попробуй так
using System;
using System.Drawing;
namespace My
{
class MyApp
{
public void DisplayLogo()
{
Bitmap companyLogo = new Bitmap("20", "20");
}
}
}
Ошибка та же, актуально.
В универе начали преподавать C#.Интересно, но редко, препод объясняет доходчиво, но мало и каждому, можно сказать, индивидуально.Добрая половина группы если не больше тупит ( и я в том числе), решил подучить дома, и вот первая неудача.
Источник :
Троелсен. Язык программирования С# 2005 и платформа .NET.
Код:
using System;
using System.Drawing;
namespace My
{
class MyApp
{
public void DisplayLogo()
{
Bitmap companyLogo = new Bitmap(20, 20);
}
}
}
При попытке запустить дебагер выдает ошибку:
Ошибка 1
"WindowsFormsApplication1.Form1.Dispose(bool)": не найден метод, пригодный для переопределения
Буду благодарен + за оперативный и исчерпывающий ответ.
1. какой тип приложения?
2. где описание формы Form1?
3. выложи весь проект.
IWantBeautifulLife
15.09.2009, 21:30
1. какой тип приложения?
2. где описание формы Form1?
1.Приложение Windows Forms
2.Не знаю, а точнее не понял вопроса.
3.http://www.sendspace.com/file/sf8zxl
Так? :)
1.Приложение Windows Forms
2.Не знаю, а точнее не понял вопроса.
у тебя в ошибке говорится про Form1. Где она?
как мне сделать чтобы в дебагере при ошибки коннекта к прокси прога не вылетала,а продолжала работу??
HttpWebRequest myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create("http://2ip.ru");
myHttpWebRequest.Proxy = new WebProxy(exploded[0], port);
HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
if (myHttpWebResponse.StatusCode == HttpStatusCode.OK)
{
StreamReader myStreamReader =
new StreamReader(myHttpWebResponse.GetResponseStream() , Encoding.GetEncoding(1251));
richTextBox2.Text += myStreamReader.ReadToEnd();
}
1.Приложение Windows Forms
2.Не знаю, а точнее не понял вопроса.
3.http://www.sendspace.com/file/sf8zxl
Так? :)
у тебя там нету вообще определения класса Form1, ты что-то перемудрил.
IWantBeautifulLife
15.09.2009, 21:45
Цитата:
Сообщение от IWantBeautifulLife
1.Приложение Windows Forms
2.Не знаю, а точнее не понял вопроса.
у тебя в ошибке говорится про Form1. Где она?
А, она открывается при создании нового проекта и выглядит как пустое окошко windows.Я сразу нажимаю правой кнопкой и "перейти к коду", пишу код, нажимаю обратно на форму (она в закладке) и пишет вот такое:
Показать конструктор для этого файла невозможно, так как невозможно сконструировать ни один из входящих в него классов. Конструктор проверил следующие классы в этом файле: MyApp --- Невозможно создать базовый класс 'System.Object'. Form1 --- Невозможно создать базовый класс 'System.Object'.
Наверное мне надо указать пространство имен System.Object?
у тебя там нету вообще определения класса Form1, ты что-то перемудрил.
Да не мудрил вроде, скачал Microsoft Visual C# 2008 Express Edition, заинсталил и вперед "Создать проект" и тд...(хотя в книге написано Microsoft Visual C# 2005 Express Edition
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
IWantBeautifulLife
15.09.2009, 21:54
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
Если ссылаться на все эти пространства имен ( а нужны мне всего пару ), ошибка будет немного другая, но суть думаю не меняется:
Ошибка 1 "My.Form1.Dispose(bool)": не найден метод, пригодный для переопределения
А, она открывается при создании нового проекта и выглядит как пустое окошко windows.Я сразу нажимаю правой кнопкой и "перейти к коду", пишу код, нажимаю обратно на форму (она в закладке) и пишет вот такое:
Показать конструктор для этого файла невозможно, так как невозможно сконструировать ни один из входящих в него классов. Конструктор проверил следующие классы в этом файле: MyApp --- Невозможно создать базовый класс 'System.Object'. Form1 --- Невозможно создать базовый класс 'System.Object'.
Наверное мне надо указать пространство имен System.Object?
Да не мудрил вроде, скачал Microsoft Visual C# 2008 Express Edition, заинсталил и вперед "Создать проект" и тд...(хотя в книге написано Microsoft Visual C# 2005 Express Edition
1. ну ты если создаёшь .net 2.0 проект в 2008-ой студии,то всё должно быть ок. Иначе могут быть проблемы со всякими XAML и WPF
2. "Я сразу нажимаю правой кнопкой и "перейти к коду", пишу код, нажимаю обратно на форму (она в закладке) и пишет вот такое:" - в корне неправильный подход. Нужно добавить обработчики событий, и в них уже работать. Самое простое что я тебе могу предложить - дабл клик по форме, сгенерируется событие, вызываемое при загрузке формы "Form1_Load". Там уже создавай объекты своих классов и тд.
Это сейчас перейдёт в чятик, так что лучше пиши в аську.
scrat,мне помоги
как мне сделать чтобы в дебагере при ошибки коннекта к прокси прога не вылетала,а продолжала работу??
HttpWebRequest myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create("http://2ip.ru");
myHttpWebRequest.Proxy = new WebProxy(exploded[0], port);
HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
if (myHttpWebResponse.StatusCode == HttpStatusCode.OK)
{
StreamReader myStreamReader =
new StreamReader(myHttpWebResponse.GetResponseStream() , Encoding.GetEncoding(1251));
richTextBox2.Text += myStreamReader.ReadToEnd();
}
jecka3000
18.09.2009, 19:43
начинаю программировато на C#, вот возник вопрос одной из моих первых программ:
Задача: написать прогнрамму-конвертор из рублей в доллары. То есть сколько я получу долларов,зная курс, и сумму в рублях. Вот мой код:
double r, d, k; //r-рубли;d-доллары;k-курс
Console.WriteLine("Введите сумму в рублях:");
Сonsole.ReadLine();
Console.WriteLine("Введите курс доллара:");
r=double.Parse(Console.ReadLine());
k = 0;
d = r / k;
Console.WriteLine();
Console.ReadLine();
Итог:
После того как ввожу 2 цифры, прога сразу же вылетает.
Поскажите, как решить этот вопрос?
хочется и смеяться и плакать... серьезно комментить чтото не получается, а стебаться жалко. помогите кто нить...
ладно, попорбую наводящими подсказками помочь:
ты пробовал отлаживать программу? это решило бы и вопрос про вылет(если глаза уже настолько слепы, что не могут определить ошибку, разнесенную на две строки), и удивительное диво в виде "ОДНОВРЕМЕННОГО" вывода строк(понятие об одновременности приобрело в этом вопросе новый смысл для меня - оказывается задать два вопроса последовательно и ждать ответа - это уже одновременно...)
PS: Console.ReadLine(); - сферическое чтение в вакуум. Попробуй книжки чтоли почитать...
>>начинаю программировато на C#, ...
запятую не там поставил :) казнить, нельзя помиловать
1. Если у тебя
writeLine();
writeLine();
то они и пишутся подряд. читать число надо посередине
2. k = 0;
d = r / k;
k прочитать не хочешь? а то на 0 делить плохо. там qNan'ы вылезают ))
jecka3000
18.09.2009, 20:13
desTiny,да К я хочу прочитать и на ноль делить понимаю что нельзя...но как прочитать это к? (Из а того что не наю,поэтому и написал ,что к=0,ибо пишет,что параметр к не определен))
jecka3000, а как ты первое число читаешь? найди в своём коде строчку, за это отвечающую. а ещё лучше - напиши на русском языке алгоритм (в смысле последовательность действий, а не машину Тьюринга), и скинь сюда
#239 сообщение :) не удаляйте ничего до, а? ))
desTiny,да К я хочу прочитать и на ноль делить понимаю что нельзя...но как прочитать это к? (Из а того что не наю,поэтому и написал ,что к=0,ибо пишет,что параметр к не определен))
поставить курсор на ReadLine и нажми F1, погроммист. Учись пользоваться доками, а не с каждым затыком форум смешить.
jecka3000
18.09.2009, 20:34
1.задаю переменные
2.Заставляю машину вывести на экран : "Введите сумму в рублях:"
3. Считывается информация того, что я написал, после наживаю Enter (Console.ReadLine() - это первая проблема, которыую мы решили)))
4.Заставляю машину вывести на экран : "Введите сумму в рублях:"
5.(?) По идеи нужно написать Console.ReadLine() как в п. номер 4....(Попробовал,но результата нет)
6. Решил сделать так:
r=double.Parse(Console.ReadLine());
k = double.Parse(Console.ReadLine());
Конвертирую две переменные в число и заставляю их оставаться на экране.
7.d=r/k; //Основная формула, на ней построена вся задача перевода.
Console.WriteLine();\\
Console.ReadLine();// заставляю вывести результат и оставлять его на экране до тех пор пока не нажму Enter.
Вроде все правильно, но свою ошибку,где я не задаю параметр к так и не понял((
jecka3000
18.09.2009, 20:37
Ra$cal, я долго молчал, но сейчас.....вот скажи, какого **я ты ****ишь? Не хочешь помочь, хочешь постебаться и построить из себя великого программера? Ради Бога! Иди в болталку и корчь из себя крутого! Этот раздел и есть для вопросов(Может быть пока и тупых на твой взгляд)!
продолжаем думать. что, по-твоему, значит строчка:
r=double.Parse(Console.ReadLine());
jecka3000
18.09.2009, 20:43
так как си шарп восприниает только символы(не цифры), приходится заставить си думать,что переменная r равна какому нибудь числу...по другому я объяснить не могу)
не-не-не. я про семантику
Что делает эта строчка (по-твоему)?
так как си шарп восприниает только символы(не цифры), приходится заставить си думать,что переменная r равна какому нибудь числу...по другому я объяснить не могу)
так почитай книжку, а не пиши программы методом тупого щелканья по клавиатуре. обожаю людей, которые готовы тратить часы на выяснение ошибки в форуме, когда это все описано на первых страницах любой книги или первого же гугла по запросу Console.ReadLine()
jecka3000
18.09.2009, 20:58
Преобразует строковое представление числа в эквивалентное ему какое либо число
Короче:
r=double.Parse(Console.ReadLine());
Console.ReadLine() - читает строчку из консоли (то, что ты ввёл)
double.Parse(Console.ReadLine()) таким образом, возвращает число, полученное переводом к типу double прочитанной строки.
r=double.Parse(Console.ReadLine()); - читает строчку, переводит в double и записывает в r.
Понял свою ошибку?
jecka3000
18.09.2009, 21:05
desTiny, блиин....всё ясно...)) спб за разъяснения,думаю,что больше таких вопросов не будет))
C#
хочу отобразить в WebBrowser конент из переменной, как это сделать?
можно конечно сохранить текст в файл , а потом указать в свойстве Url путь к этому файлу, но это же не дело.
http://msdn.microsoft.com/ru-ru/library/system.windows.forms.webbrowser.documenttext.aspx
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot