PDA

Просмотр полной версии : Вопросы - ответы C#, Java


Страницы : [1] 2 3

procedure
02.11.2008, 19:58
Ранее была такая тема, сейчас её нет. Вот создал))

И как раз хотелось бы задать вопрос. В visual studio C# express edition имеется такая трабла. В toolbox нету элемента Adapter для установления соединения к бд с проектом. Есть GridView но когда его подключаешь к форме, он создает свою таблицу которая мне не нужна. Я хочу привязать записи к своему TextBox'у. Как посоветуете это сделать?
т.е. объект DataSet создать можно, но как привязать DataSet к форме? Ранее для этого использовался элмент свойства DataBindings но сейчас он отсутствует не знаю что делать(((

W!z@rD
02.11.2008, 21:13
зачем тебе DataSet к форме привязывать!? оО

procedure
03.11.2008, 00:21
чтоб вывести данные в эту форму. А вобще чтоб работать можно было с ними. Сам факт заключаеться в том что я не могу их привязать.

procedure
08.11.2008, 19:29
В общем, прошлую проблему давно решил, забыл отписать. Только появился новый вопрос:

Вот допустим, я хочу использовать в своем проекте Excel таблицу. Которая допустим открывалась бы в моей программе и можно было редактировать некоторые данные. Или наоборо, допустим один из форматов экспорта из проекта был doc или exl.
Для этого я так понимаю, нужно подключать общедоступные модули, правильно?
Но где их можно найти в GAC я не нашел...(((

Или допустим не буду усложнять, к примеру хотяб нужно подключить WMPlayer чтоб управлять им можно было из моей программы. Где можно найти либу для wmp?
Да хотяб на примере простого блокнота объясните пожалуйста. ОЧЕНЬ СИЛЬНО ХОЧУ ПОНЯТЬ ЭТО!! Как взаимодействовать с другими программами.

nerezus
08.11.2008, 22:57
OLE

Kaas
09.11.2008, 12:27
OLE

не только ole. Есть и сторонние либы, и их не мало - и пользоваться ими иногда удобнее)

Kaas
11.11.2008, 01:04
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 и огромное спасибо. ;)

0x22b
11.11.2008, 22:17
Сборник статей World C# скачай, там про использование WinAPI точно есть, да и много еще всяких разных статей на различные темы.. возможно там найдешь ответы на все свои вопросы.

D1mka
11.11.2008, 23:05
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...

scrat
11.11.2008, 23:29
как лучше реализовывать drag&drop для своих объектов? C#

Algol
11.11.2008, 23:40
Вот допустим, я хочу использовать в своем проекте 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 тут на англ((

W!z@rD
12.11.2008, 17:55
3. Ну и еще конечно же интересует API в C#. Буду благодарен за лит-ру или элементарный пример.
http://www.intuit.ru/department/pl/plintro/18/3.html
вот на русском и расписано по самое нехочу =)
да и вообще нравится мне интуит сайт, хороший =)

procedure
12.11.2008, 18:12
Это разве API?)))

p.s. INTUIT мне тоже нравиться, но я бы так сказал, туда нужно идти. Перед первым реальным каким нибудь заказом. Для того чтобы пройти все тесты по курсу. т.к. сам материал на сайте несколько афористичен.

W!z@rD
12.11.2008, 21:00
мдееее, читай про атрибут [DllImport]
именно он позволяет подключать библиотеки, что мешает тебе подключить библиотеку winsock к примеру?
если я правильно понял, тебе нужно заюзать API в C# проекте, так вот, то что я дал и есть ответ на твой вопрос...
ппц =\

Kaas
15.11.2008, 00:58
мдееее, читай про атрибут [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.

scrat
15.11.2008, 12:43
как лучше реализовывать drag&drop для своих объектов? C#
реализовывать нужно самостоятельно,разве что потом перегрузить(не пробовал.потом может отпишу) DragDropAction(или типо того).


// наконец-то процитировал сам себя :)

WAYS
15.11.2008, 16:02
Как в С# работать с ini файлами. Мне нужно сделать что-то вроде:
SrvIP=10.10.200.1
Port=999
и так дальше.

Forcer
15.11.2008, 16:28
WAYS
Что мешает создать текстовый файл и обозвать его *.ini? И записывай что хочешь туда.

WAYS
15.11.2008, 17:28
WAYS
Что мешает создать текстовый файл и обозвать его

Я не знаю как потом считать или изменить только порт например.

Forcer
15.11.2008, 18:24
1. работай с XML файлом - лучший вариант, если тебе только не нужна структура вида key=value
2. c# не знаю, но в java есть класс Properties. Ему даешь файл( i/o stream ) и дальше дергаешь методы getProperty(key), setProperty(key, value), в зависимости от того что тебе нужно. В c#, мне кажется, должно быть что-либо подобное. Попробуй погуглить.
3. можно "вручную" парсить файл - но это бяка.... Но если ничего не найдешь более подходящего - то делай так - в любой книжке по шарпу есть работа с файлами.

scrat
15.11.2008, 19:28
гуглим господа (http://www.mentalis.org/soft/class.qpx?id=6)

W!z@rD
15.11.2008, 20:45
Я не знаю как потом считать или изменить только порт например.

Советую почитать про:
Сериализацию;
Properties

вот наглядный пример: http://www.sendspace.com/file/n9ykab

WAYS
16.11.2008, 03:20
W!z@rD
Forcer
Спасибо. Не уменю кидать плюсики :)

procedure
30.11.2008, 18:40
Допустим есть таблица в которой хранится информация в виде { ID, ФИО, Должность, Двоичные данные (картинка)}. Как можно сделать что то типа собственного GridView. т.е. я хочу чтобы все это было отформатировано не по стандартному. т.е. не простой таблицой, а допустим в некой собственной форме. ?

procedure
01.12.2008, 22:33
Прошлую проблему решил, появилась новая. Подскажите пожалуйста аналог библиотеки cURL в php для C#.

т.е. cURL применяется для моделирования действий в браузере, а в C# есть ли подобное?

Kaas
03.12.2008, 15:11
Прошлую проблему решил, появилась новая. Подскажите пожалуйста аналог библиотеки 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 ))
А как анализировать другую какую либо страницу, не было написано у меня в книге.... но думаю вскоре пойму..Нужно научиться хотяб авторизацию на каком нибудь сайте проходить)

rudvil
11.12.2008, 14:08
Добрый день.
У меня возникла загвоздка,а именно как на 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);
}

rudvil
11.12.2008, 15:23
Большое спасибо за потраченное время.
За просмотр конечно спасибо,но он не так важен(да и в гугле полно исходников чего не скажешь про запись),постараюсь интегрировать этот код к себе,позже отпишусь что-да как.)

rudvil
15.12.2008, 17:39
Возник вопрос,а именно 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; и радуешься =)

rudvil
15.12.2008, 19:23
если бы все так было просто =/
Прописан у меня System.Text и всеравно пишет ошибку =/

W!z@rD
15.12.2008, 19:52
1. Framework какой?
2. Мб переустановить фраемворки?

rudvil
15.12.2008, 21:50
фреймворк 3 или 3.5 точно не знаю.
З.Ы. сижу на висте.

rudvil
18.12.2008, 18:41
Проблема с exifom решена-нашел на с++ хорошую прогу)
Теперь возник другой вопрос,а именно.
Сейчас приведу пример:у меня есть ArrayList и в нем содержится скажем 200 записей,большинство из них будут повторяться.
Вот собственно и вопрос существуют ли в C# встроенные функции которые смогут:
определить общее количество повторяющихся элементов,и в дальнейшем записать их и также их количество в двумерный массив:
массив[элемент][кол.повторений]

З.Ы. в ручную написать смогу,просто интерестно есть ли такие встроенные функции в C#.

Kaas
20.12.2008, 01:00
Проблема с exifom решена-нашел на с++ хорошую прогу)
Теперь возник другой вопрос,а именно.
Сейчас приведу пример:у меня есть ArrayList и в нем содержится скажем 200 записей,большинство из них будут повторяться.
Вот собственно и вопрос существуют ли в C# встроенные функции которые смогут:
определить общее количество повторяющихся элементов,и в дальнейшем записать их и также их количество в двумерный массив:
массив[элемент][кол.повторений]

З.Ы. в ручную написать смогу,просто интерестно есть ли такие встроенные функции в C#.

нет, в core я такого не видел)

procedure
20.12.2008, 01:35
Это называется использование регулярных выражений и цикла for.
+там какие то еще интерфейсы были.

W!z@rD
20.12.2008, 05:43
for там не нужен.

procedure
20.12.2008, 07:13
Ну можешь и без for сделать, но с for будет удобней.

W!z@rD
20.12.2008, 07:27
LINQ к примеру можно использовать... (3.5 Framework)
либо регулярное выражение типа:
^(.*)(\r?\n\1)+$

в $1 будет находится 1 экземпляр совпадения. Т.е. у тебя 5 слов - "Yo", в $1 будет "Yo". при этом 4-ре других отбросятся

procedure
20.12.2008, 17:29
Каким образом ты будешь вести счет повторений?

rudvil
20.12.2008, 17:36
Каким образом ты будешь вести счет повторений?
Вот это мне тоже интерестно)

W!z@rD
20.12.2008, 19:40
.Matches().Count

rudvil
20.12.2008, 20:40
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,вообщем помогите найти где косяк.
Заранее большое спасибо!)

W!z@rD
20.12.2008, 22:15
меня это смущает:


if (Convert.ToString(hex_colors[l]) == Convert.ToString(hex_colors[k]))
{
cnt++;
}

rudvil
20.12.2008, 22:20
меня это смущает:
можно поподробнее, что именно? и как надо было-бы сделать.)

rudvil
20.12.2008, 23:50
Всем огромное спасибо за участие и помощ я смог сам разобраться-вот где надо поправить)

во первых тут
неправильно- 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;
}
}

horlyk
25.12.2008, 23:13
Народ, подскажите плз литературу по шарпу(2008студио) для создания собственных форм, т.е. чтоб я знал как нарисовать свое окно программы, свой компонент и т.д.

Заранее спасибо.

masbear
11.01.2009, 23:28
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, а вообще прежде чем что то делать, нужно выработать требования и составить архитектуру.

rudvil
15.01.2009, 20:58
Да,знаю я не первый кто задает этот вопрос,просто нигде так и не смог найти корректного решения этой проблемы...
Вот код и вопрос:

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);

masbear
16.01.2009, 17:27
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';
}

можно заблокировать в текстБоксе все кнопки клавы, кроме цифр, как тоже самое сделать в столбце ДатаГридВиева?

rudvil
17.01.2009, 14:15
Этот код разрешит вводить только цифры

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
какая тебе разница? на чем переменные? на красоту кода я не претендую, т.к. первая программа на Сшарпе

Chaak
26.01.2009, 19:46
Значит есть объект DataGridView:
По дефолту в нем только одна поле(строка), а остальное место пустует.

Можно ли его как-то заполнить по-дефолту, чтобы юзер не видел коричнегого бэкграунда, а только видел ячейки?

W!z@rD
26.01.2009, 21:47
Значит есть объект DataGridView:
По дефолту в нем только одна поле(строка), а остальное место пустует.

Можно ли его как-то заполнить по-дефолту, чтобы юзер не видел коричнегого бэкграунда, а только видел ячейки?

измени свойство - AllowUserToAddRow = false

p.s. если мне не изменяет память, то у объекта Cells[index] имеется метод устанавливающий цвет бэкраунда. Cells[index].BackColor = Color.Black

W!z@rD
26.01.2009, 21:51
или обьясните, как по другому удалить все записи из таблица

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

horlyk
01.02.2009, 16:29
Народ, подскажите пожалуйста, как в шарпе устроить проверку типов, тоесть я считываю с консоли строку, потом хочу преобразовать ее в целочисленный тип. Но если в строке находилась буква, а не цифра? как узнать об успешности или не успешности конвертирования?

я пробовал сделать так:
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

horlyk
01.02.2009, 16:55
Есть такие операторы как 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

Спасибо огромное!

horlyk
01.02.2009, 17:46
Может я немного не понял, но у еня чего-то не получается(

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", а не ошибка?

заранее спасибо!

horlyk
01.02.2009, 18:37
Думал я думал, напрягался я напрягался... и в итоге что-то да получил. Хотя работает не совсем идеально, но все же!

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.

Может кто подскажет вариант по эффективнее?

horlyk
01.02.2009, 18:46
Думал я думал, напрягался я напрягался... и в итоге что-то да получил. Хотя работает не совсем идеально, но все же!

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");
}

Думаю, это идеальный вариант)

W!z@rD
01.02.2009, 21:27
Народ, подскажите пожалуйста, как в шарпе устроить проверку типов, тоесть я считываю с консоли строку, потом хочу преобразовать ее в целочисленный тип. Но если в строке находилась буква, а не цифра? как узнать об успешности или не успешности конвертирования?

я пробовал сделать так:
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)))

Forcer
04.02.2009, 06:34
Тему видимо удалили, но я обещал выложить видео. Думаю, в этой теме оно будет в некоторой степени к месту. Вот собственно оно:


Создание окон произвольной формы на платформе 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. Всем спасибо, было интересно на самом деле пообщаться. Не знал что на форуме столько джавистов. Всем удачи на профессиональном поприще - и джавистам и дотнетчикам! :)

Вес большеватый, так бы глянул:(

horlyk
04.02.2009, 23:29
Как в Шарпе обходятся без глобальных объектов? Мне нужно, чтобы велась некая статистика, но я не знаю как сделать ее без глобальных объектов. Объект содержит 3 переменных. При каждом вызове одного метода(их 10), в параметры объекта вносятся коррективы - а именно увеличение на 1 определенных параметров, а других на 2. Как можно это реализовать, подскажите плз

horlyk
04.02.2009, 23:49
модификатор доступа public разве не катит?

Значения сбрасываются все на 0 после каждого вызова метода, вернее после окончания его работы

Chaak
05.02.2009, 00:02
Надеюсь ты к методам не через :: обращаешься? Если да, то переменные не будут сохраняться после действий... Так, что без объекта не обойтись.

YourClass obj = new YourClass();
obj.method();
Console.Write(obj.variable):

horlyk
05.02.2009, 00:57
Надеюсь ты к методам не через :: обращаешься? Если да, то переменные не будут сохраняться после действий... Так, что без объекта не обойтись.

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 - чтото вроде упрощенной для пользования реализации потоков. у него есть асинхронные вызовы. используй его. я думаю это решит твою проблему.

Algol
09.02.2009, 19:26
VOLAND']
Как мне дождаться завершения рабочего потока и только затем продолжить выполнение кода сновного потока, при этом чтобы во время ожидания GUI программы не зависал?



controlThread = new Thread(method);
controlThread.Start();

while (controlThread.ThreadState != System.Threading.ThreadState.Stopped)
Application.DoEvents();
.....

horlyk
13.02.2009, 00:12
В общем есть вопросик.
(С#, консоль)
1. Как узнать, какую клавишу нажал пользователь(допустим стрелку вниз и на консольке отобразился номер этой клавиши.) ?
мне нужно проверить так:
if(нажата стрелка вниз)
{сделать то}

Было бы очень интересно увидеть пример с коментами, если можно.
Заранее спасибо!

procedure
13.02.2009, 01:01
//Создаем экземпляр объекта, в который
//заносим инофрмацию о только что нажатой клавише
ConsoleKeyInfo keyInfo = Console.ReadKey(false);
//Выводим на экран информацию о клавише.
//Из этого же экземпляра (keyInfo) можно вытянуть и нужную тебе инфу
Console.WriteLine(keyInfo.Key);
так?

//Если нажали стрелку вниз, то ...
if (keyInfo == ConsoleKey.DownArrow)
{
//...
}

horlyk
13.02.2009, 21:58
так?

//Если нажали стрелку вниз, то ...
if (keyInfo == ConsoleKey.DownArrow)
{
//...
}


чуть - чуть поправлю:

if(keyInfo.Key == ConsoleKey.DownArrow)

Спасибо!

Chaak
14.02.2009, 00:04
Как покрасить ячейку и ряд в DataGridView?

ToniKapuchon
14.02.2009, 00:31
Как покрасить ячейку и ряд в DataGridView?

вот!!
this->dataGridView2->Rows[0]->DefaultCellStyle->BackColor=System::Drawing::Color::Red;

horlyk
14.02.2009, 15:34
С#
Подскажите пожалуйста, как сделать консольку полноэкранной по умолчанию? то есть чтобы она запускалась уже в полноэкранном режиме. Что изменить нужно в коде или каких-то свойствах?

procedure
14.02.2009, 15:45
horlyk а вот этого насколько я знаю, сделать нельзя.

horlyk
15.02.2009, 12:54
Рыл, рыл я в инете инфу... уже расстроился... в гугле, на какой-то там странице, мож 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);
}
}
}


Хоть я и мало что понимаю из этого кода, но работает все же) Если кто знает что об этом коде - растолкуйте плз.

Chaak
15.02.2009, 13:27
Тряси мануалы винапи и dllки в си шарпе

Вообщем идет импорт функций из стандартных библиотек Windows, потом их использование. Инфу о функциях(их больше 1000) смотри в msdn.

procedure
15.02.2009, 13:54
А ну средствами апи, можно хоть хоть, многое хоть что ;)


p.s. Спасибо, кстати. Мне тоже пригодится. Добавлю в шаблоны.

p.p.s. у меня что то не запустился на весь экран. У тебя запускается?

horlyk
15.02.2009, 14:01
А ну средствами апи, можно хоть хоть, многое хоть что ;)


p.s. Спасибо, кстати. Мне тоже пригодится. Добавлю в шаблоны.

p.p.s. у меня что то не запустился на весь экран. У тебя запускается?

Да, запускается. У меня 2005-я студия, С#. Там в той темке, что я линк давал, есть код, что можно еще сразу делать развернутый режим консоли.

procedure
15.02.2009, 14:30
У тебя виста? Если нет или да,
скинь билд ппробую, может на висте не прет.

Chaak
15.02.2009, 14:37
Как остановить background worker? Стандартным методом не хочет останавливать =(. Хочет, чтобы я переопределил метод. Как это сделать правильно?


P.S SetConsoleDisplayMode на висте при больших разрешениях экрана не отображает.

[x26]VOLAND
15.02.2009, 14:52
Как получить данные из опр. колонки опр. ряда компонента DataGridView?

Chaak
15.02.2009, 15:05
[x26]VOLAND, мы одно и тоже делаем))))?

tblGrid.Rows[pos].Cells[3].Value

horlyk
15.02.2009, 16:09
У тебя виста? Если нет или да,
скинь билд ппробую, может на висте не прет.

у меня XP, вот на всякий случай билд (http://www.dagoth.at.ua/ConsoleApplication1.exe). Там выскочит предуприждение о возможности скачки вируса - игнорируй его.

horlyk
15.02.2009, 16:13
О, и попутный вопрос, как убрать курсор мыши(квадратик тот вместо мышьки), чтобы его вообще небыло, то есть чтоб работа была исключительно с клавой и ни какого намека на мышь.

Chaak
15.02.2009, 16:20
Cursor.Hide();

Пространство имен: System.Windows.Forms

horlyk
15.02.2009, 16:22
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();
}
}

horlyk
15.02.2009, 17:24
Cursor.Hide();

Пространство имен: System.Windows.Forms
А для консоли в полноэкранном режиме?

nerezus
16.02.2009, 04:49
А для консоли в полноэкранном режиме? Консоли в полноэкранном не бывает =)

horlyk
16.02.2009, 22:21
Консоли в полноэкранном не бывает =)
Нажми Alt+Enter :) или скомпилируй код, что я выше писал, или скачай билд, что я ссылку давал - все выше)

procedure
17.02.2009, 16:59
horlyk хз, что у тебя. Но у меня на висте, ни в какую не хочет.

horlyk
17.02.2009, 21:53
horlyk хз, что у тебя. Но у меня на висте, ни в какую не хочет.
это скорее всего дело именно в висте. На ХР работает 100% - я скидывал нескольким людям для проверки. А мой екзешник у тебя тоже не пашет?

horlyk
21.02.2009, 18:49
Вопрос по шарпу.
Почему код
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);
}
работает отлично?
Как сделать так, чтобы при нажатии стрелки вправо делалось то-же самое, что и при нажатии мыши во втором фрагменте кода, то есть движение объекта по Х вправо?


Блин, все оказалось просто - сделал обработчик событий для формы и все заработало :/

.ATK
21.02.2009, 19:07
Вопрос по шарпу.
Почему код
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

horlyk
23.02.2009, 00:14
Народ, подскажите, как в шарпе можно из 2-й формы закрыть первую?
пример: у меня мини игра. После окончания игры, мне нужно чтобы выскакивало модальное окно 2-й формы с кнопкой начать новую игру(игра в первой форме). Та первая форма закрывается и запускается новый экземпляр первой формы с параметрами по умолчанию, то есть игра сначала.
Как закрыть первую форму из 2-й и запустить другой экземпляр первой формы со значениями по умолчанию, то есть новой игрой?


Блин, сижу и ломаю голову несколько часов, а как только на форуме напишу - спустя минут этак 10 и придумываю как сделать, ппц) мож это из-за того, что это совсем простые вопросы я задаю :)



Тогда другой вопрос, как на время работы 2-й формы скрыть первую, а после окончания работы 2-й формы активировать 1-ю? Я знаю что можно использовать this.Hide()
Форма скрывается, но как потом вернуть ее видимость?

rudvil
23.02.2009, 00:36
Народ, подскажите, как в шарпе можно из 2-й формы закрыть первую?
пример: у меня мини игра. После окончания игры, мне нужно чтобы выскакивало модальное окно 2-й формы с кнопкой начать новую игру(игра в первой форме). Та первая форма закрывается и запускается новый экземпляр первой формы с параметрами по умолчанию, то есть игра сначала.
Как закрыть первую форму из 2-й и запустить другой экземпляр первой формы со значениями по умолчанию, то есть новой игрой?


Блин, сижу и ломаю голову несколько часов, а как только на форуме напишу - спустя минут этак 10 и придумываю как сделать, ппц) мож это из-за того, что это совсем простые вопросы я задаю :)



Тогда другой вопрос, как на время работы 2-й формы скрыть первую, а после окончания работы 2-й формы активировать 1-ю? Я знаю что можно использовать this.Hide()
Форма скрывается, но как потом вернуть ее видимость?
не проще ли вывести MessageBox, а после нажатия кнопки обнулить все значения(т.е. начать новую игру)

horlyk
23.02.2009, 00:39
не проще ли вывести MessageBox, а после нажатия кнопки обнулить все значения(т.е. начать новую игру)
Меня интересует именно тот способ, что я написал.

rudvil
23.02.2009, 00:45
Меня интересует именно тот способ, что я написал.
Тогда как-то так:

Form.ActiveForm.Visible = false;
Form.ActiveForm.Visible = true;

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

rudvil
23.02.2009, 01:26
Вот, сделал!! в архиве(ifolder) (http://ifolder.ru/10694269) проект(пример) :)
З.Ы. удачи в создании игрушки)

horlyk
23.02.2009, 22:37
Вот, сделал!! в архиве(ifolder) (http://ifolder.ru/10694269) проект(пример) :)
З.Ы. удачи в создании игрушки)

Спасибо за пример, но есть одно НО. Процесс остается висеть в памяти компьютера после завершения работы программы. Посмотри в диспетчере задач :)

Chaak
25.03.2009, 21:47
Есть класс A и класс B(причем классов может быть неограниченное кол-во).
В контроллер приходит имя из InputBox'a - "A".
Мне требуется создать экземпляр класса по его имени(без if и switch).
Это реально как-то организовать в рантайме? Если да, то как?

nerezus
26.03.2009, 04:44
Это реально как-то организовать в рантайме? Если да, то как? Конечно.
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.

Forcer
26.03.2009, 10:13
https://forum.antichat.ru/showpost.php?p=1190575&postcount=2578

Это что интересно?

rushter
26.03.2009, 10:52
Мм. Если нужна помощь, то изложи вопрос нормальным языком. Лучше всего - покажи исходный текст задачи.

А то "Есть класс A и класс B(причем классов может быть неограниченное кол-во)" - какая-то палата ;6.
Всё вполне понятно.

MaDfUn
28.03.2009, 00:54
Пожалуйста растолкуйте понятным языком, что такое делегаты?зачем они нужны в реальных проектах?

[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));
быстрее и красивее )
красивее и быстрее - да, но читаемость кода ухудшается.

читаемость точно хуже :), в первый раз даже не заметил что нет ++!

.ATK
07.04.2009, 03:23
Киньте кто кусок рабочего кода работы 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, получить текстовую строку, содержащую все символы картинки. В текстовом виде. Для того чтобы отправить в запросе.

Algol
16.04.2009, 10:53
Столкнулся с проблемой, подскажите пожалуйста, как из объекта 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;
}

Feonor
22.04.2009, 12:53
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) и будешь в теме. :)

.ATK
04.05.2009, 00:57
Строка
=?utf-8?B?0KLQtdC80LA=?=
закадировано
Тема

Как получить эти русские буквы??? шарп!

4y4o
05.05.2009, 01:25
Установил 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.
ПАМАГИТЕ Люди добрые.

Forcer
05.05.2009, 09:32
потом выполняю java test.class
выдаёт ошибку

Расширение .class писать не нужно.
Правильно:
java test

http://java.sun.com/docs/books/tutorial/getStarted/cupojava/win32.html

Algol
05.05.2009, 11:13
Строка

закадировано


Как получить эти русские буквы??? шарп!

string[] parts = "=?utf-8?B?0KLQtdC80LA=?=".Split('?');
byte[] bytes = Convert.FromBase64String(parts[3]);
Console.WriteLine(Encoding.UTF8.GetString(bytes));

MaDfUn
05.05.2009, 18:39
Здравствуйте! Возник вопрос, как сменить имя проекта в Visual Studio 2008(C#) имеется ввиду чтобы изменилось все неймспейсы, имя папки с проектом и тд
зы
буду очень благодарен за помощь!

Feonor
05.05.2009, 23:58
Здравствуйте! Возник вопрос, как сменить имя проекта в Visual Studio 2008(C#) имеется ввиду чтобы изменилось все неймспейсы, имя папки с проектом и тд
зы
буду очень благодарен за помощь!
Выделяешь имя неймспейса, правый клик, оптимизация, переименовать... пишешь новое имя и ставишь галки во всех 3х пунктах. А имя проекта и решения меняешь правым кликом и переименовать. Имя папки не меняй. да это впринципе и не играет не на что... Если найду как имя папки менять напишу еще...

Torett0
12.05.2009, 15:55
Как сделать, чтобы программа работала в фоновом режиме(на подобии троя)? Желательно, чтобы софтина не отображалась в диспетчере задач...
зы
спасибо за любую оказанную помощь...
зы2
c# VS 2008

.ATK
12.05.2009, 16:33
program.cs закоменть три строки в static void Main() и пиши свой код ;)

Sharky
17.05.2009, 16:06
можно пример как сделать чтоб форма не висла при выполнении объёмной операции после нажатия баттона?

Algol
17.05.2009, 16:30
можно пример как сделать чтоб форма не висла при выполнении объёмной операции после нажатия баттона?
Объемную операцию нужно выполнять в отдельном потоке.

Sharky
17.05.2009, 17:13
Объемную операцию нужно выполнять в отдельном потоке.
про это я уже читал ... но в c# опыта маловато, поэтому и прошу пример показать

W!z@rD
17.05.2009, 18:46
про это я уже читал ... но в c# опыта маловато, поэтому и прошу пример показать

http://rsdn.ru/article/dotnet/multithrwinfrms.xml

инеблагодариатообижусь О_О

Sharky
19.05.2009, 22:59
Друзья это снова я :)

как получить заголовки от сервера через HttpWebResponse и отправить из в richTextBox ? оч прошу пример

W!z@rD
20.05.2009, 19:41
Друзья это снова я :)

как получить заголовки от сервера через 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();
}
}

Feonor
20.05.2009, 23:29
Друзья это снова я :)

как получить заголовки от сервера через HttpWebResponse и отправить из в richTextBox ? оч прошу пример
Специально для этого написал прогу на C#. Скачать можно в разделе полезные проги =)

nerezus
22.05.2009, 10:51
Можно пример работы HttpWebRequest через сокс?

Feonor
22.05.2009, 11:24
Можно пример работы HttpWebRequest через сокс?
Нельзя, нет там поддержки соксов. Аргумент - msdn. (http://social.msdn.microsoft.com/forums/en-US/netfxnetcom/thread/14cad2ab-f6a0-4d0f-be7e-3ae91cfb3990)

nerezus
22.05.2009, 13:56
Ну я это заметил, я бы не стал тогда вопроса задавать. Как обойти?)

.ATK
22.05.2009, 14:55
хм, не использовать класс HttpWebRequest) а писать на основе класса родителя TcpClient(), ну т.е. непосредственно сокеты...

А, или есчо написать свой соксификатор, который будет висеть на опр. портах, и слать на него http запросы))) ну это задроство!

nerezus
22.05.2009, 16:09
Обы способа - задротство. Должны быть нормальные.

.ATK
22.05.2009, 16:28
ага, нет фреймворк перекомпиль... вумный)

nerezus
23.05.2009, 15:22
Я спросил реального ответа вообще-то. Ну там думал, что опенер посоветуете добавить, как в питоне, к примеру ;)

rushter
24.05.2009, 19:46
C#
Как отделить ip,port в Ip:port ?
Как получить массив из строк файла ?

.ATK
24.05.2009, 19:57
string[] port_and_ip=str.Split(';'); или IndexOf() юзай!!

string[] massiv=str.Split('\n');

rushter
24.05.2009, 20:01
string[] port_and_ip=str.Split(';'); или IndexOf() юзай!!

string[] massiv=str.Split('\n');
спасибо,разбивку файла сделал подругому
string[] proxy = File.ReadAllLines(".txt"); ;)

rushter
24.05.2009, 23:16
Какой сушествует аналог функции strstr в c# ?

.ATK
25.05.2009, 00:17
int i=строка1.IndexOf("строка2");

rushter
26.05.2009, 20:41
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

Qwazar
27.05.2009, 20:40
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 и компилера под рукой нет, пишу на обум, могут быть очепятки.

rushter
31.05.2009, 21:06
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

kokcu
10.06.2009, 00:36
Здравствуйте, может кто подскажет где можно достать инфу? Подсчет входящего трафика и его скорость вычисляется на c# довольно просто, но хотелось бы получить статистику по каждому процессу, тоесть сколько процесс получил трафика с момента старта итд. Это вообще возможно?
Заранее спасибо.

Forcer
10.06.2009, 01:40
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 []) тоже получается что то не совсем то.

Подскажите как можно реализовать побайтовой считывание картинки и запись ее в переменную для дальшейшего использования в архивации...?

Forcer
10.06.2009, 22:50
Подскажите как можно реализовать побайтовой считывание картинки и запись ее в переменную для дальшейшего использования в архивации...?
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
Суть в общем понятна. Буду пробовать:) Огромное спасибо. С меня к репе...

caban
20.06.2009, 08:55
Народ, есть проблема пишу на 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();

}
}

desTiny
20.06.2009, 19:48
Можно пример работы HttpWebRequest через сокс?
сегодня наткнулся при поиске другого, внимательно не смотрел, но издалека похоже (правда сокеты):
http://www.example-code.com/vbdotnet/socket_socks_proxy.asp

Sharky
30.06.2009, 19:11
Огромная просьба... Кто может переписать на 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]; // Вот оно счастье...
}

W!z@rD
30.06.2009, 20:18
Огромная просьба... Кто может переписать на 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

TikTik
01.07.2009, 01:35
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

SVAROG
05.07.2009, 15:57
надо проверить хост на валидность, делаю функцией
DNS.GetHostAddresses("hostname.ru");
при удачном выполнении функция возвращает ИП, а если такого демена нету то вылетает ошибка программы. Охото что бы в программе определялось существует домен или нет типа если да то 1 если нет то 0.

Forcer
05.07.2009, 16:03
надо проверить хост на валидность, делаю функцией
DNS.GetHostAddresses("hostname.ru");
при удачном выполнении функция возвращает ИП, а если такого демена нету то вылетает ошибка программы. Охото что бы в программе определялось существует домен или нет типа если да то 1 если нет то 0.
перехватывай исключение и возвращай что нужно.

W!z@rD
07.07.2009, 21:01
надо проверить хост на валидность, делаю функцией
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();
}
}

-[БуШ]-
17.07.2009, 08:10
Вчера взял заказ на написание сетевой проги, узнав что писать нада на 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)

Forcer
19.07.2009, 13:57
A-Spt_N(o)
в exception'e все написано - что и на какой строчке.

bl00m
21.07.2009, 00:14
допустим на форме 10 кнопок, как сделать, чтобы по нажатию на первую кнопку изменился текст на случайной кнопке?

.ATK
21.07.2009, 00:24
первое что приходит в голову - загнать в массив все баттоны - рандомом выбирать один из массива - и свойству текст - присваивать текст!

W!z@rD
21.07.2009, 06:55
допустим на форме 10 кнопок, как сделать, чтобы по нажатию на первую кнопку изменился текст на случайной кнопке?


var arr = Controls.OfType<Button>().ToArray();
arr[new Random().Next(arr.Length)].Text = "test";


вот так проще некуда. .NET Framework 3.5 нужен. LINQ

SeNaP
23.07.2009, 23:15
Здрваствуйте, незнаю, втот ли я под форум попал, но у меня проблема такова.
Скачал 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 не получается...

Feonor
24.07.2009, 14:09
Здрваствуйте, незнаю, втот ли я под форум попал, но у меня проблема такова.
Скачал 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.
пэ.эс. приду домой напишу как это сделать

SeNaP
25.07.2009, 06:16
"windef.h" нету его в папке includs

ss88
02.08.2009, 11:47
Есть такая проблема:
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
С чем это может быть связано? Ведь я еще никаких запросов не делал, а сервер мне уже про синтаксис кричит...

ss88
02.08.2009, 15:22
Факинг-перефакинг, все здесь работает, если компилить и запускать вручную, исключение вылетает только если запускать на выполнение в eclipse.
Блин, до чего ненавижу такие баги :(

Странно то, что под Вендой Эклипс корректно запускает этот код... Хотя сервак один и тот же...

Antikvazar
07.08.2009, 13:22
привет всем вобщем я начинающий. мне посоветовали чтобы перехвативать сообщения\события в программах hook и dll inject. тк я новичек начал искать информацию в поисковиках. так вот либо ссылки на форумы где нужно регистрироватся либо написано не на C# либо пример есть но я его даже скомпилировать немогу ошибки какие нибудь все время. в гугле поискал но по английскому сломаю голову переводить никто не подскажет какуюнибудь КНИГУ или хороший ресурс где эти 2 темы НОРМАЛЬНО освещены с примерами или исходниками желательно по русски?

Forcer
07.08.2009, 13:33
привет всем вобщем я начинающий. мне посоветовали чтобы перехвативать сообщения\события в программах hook и dll inject. тк я новичек начал искать информацию в поисковиках. так вот либо ссылки на форумы где нужно регистрироватся либо написано не на C# либо пример есть но я его даже скомпилировать немогу ошибки какие нибудь все время. в гугле поискал но по английскому сломаю голову переводить никто не подскажет какуюнибудь КНИГУ или хороший ресурс где эти 2 темы НОРМАЛЬНО освещены с примерами или исходниками желательно по русски?
такое пишется не на c#.

Antikvazar
07.08.2009, 13:48
придется теперь учить что то другое. а на чем пишется?

Forcer
07.08.2009, 13:58
на с++. область c# - быстрая разработка десктопных приложений, крупных веб-приложений. на этом можно хорошо зарабатывать, в том числе и на фрилансе. то что ты написал наверное можно сделать на c# - смотреть надо в сторону работы с winapi - но лучше для этого использовать с++.

.ATK
07.08.2009, 14:01
hook и dll inject

Джеффри РИХТЕР "Создание эффективных WIN32-приложений с учетом специфики 64-разрядной версии Windows"

WAYS
07.08.2009, 20:11
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++;
}
}

Irdis
07.08.2009, 21:04
открывай 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++;
}
}

WAYS
07.08.2009, 21:23
Если можно, примерчик.

WAYS
14.08.2009, 10:42
Что никто не знает как можно управлять скоростью цикла?

W!z@rD
14.08.2009, 14:26
Что никто не знает как можно управлять скоростью цикла?

ты вообще сам понимаешь что говоришь?

Irdis из потока нельзя работать с контролами, если не ты родитель.

Feonor
14.08.2009, 22:17
Что никто не знает как можно управлять скоростью цикла?
Не понял тебя.. ..вообще можно сделать чтоб каждый второй проход по циклу был бы бесполезный для программы, ну это типа так "замедлить" можно.. хотя я не понимаю что ты хочешь.. :)

.ATK
14.08.2009, 22:37
Thread.Sleep(1000);- замедли свой поток))

WAYS
21.08.2009, 22:57
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;
}
}

WAYS
22.08.2009, 22:28
Ребята помогите с массивами.
Я после пхп не могу разобраться с массивами =)
Мне нужно загнать в массив 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 элементов

W!z@rD
23.08.2009, 09:17
юзай ArrayList

прочитай про коллекции в .NET
и generic так же

WAYS
23.08.2009, 11:05
Спасибо конешно, мне бы пример все же не помешал.

WAYS
25.08.2009, 23:00
Как вставить текст с ячейки TextBox в другую программу, например в аську? (Без буфера обмена)

W!z@rD
26.08.2009, 06:57
WinAPI:
1. FindWindow
2. FindWindowEx
3. SetWindowText

xaldey
28.08.2009, 16:39
есть буфер байт, некоторого, размера, если он не кратен 8, нужно добавить нужное количество байт до кратности.
=================
byte[] bytes;
byte[] byte1 ={20};
int a=bytes.length%8
while (a!=0)
{
bytes=bytes+byte1; <-------------------------------ERROR
a=bytes%8;
}

zindi
28.08.2009, 16:42
Как вставить текст с ячейки TextBox в другую программу, например в аську? (Без буфера обмена)
ищем окно куда будим писать и тянем с textbox.text

SVAROG
29.08.2009, 10:24
C#
хочу отобразить в WebBrowser конент из переменной, как это сделать?
можно конечно сохранить текст в файл , а потом указать в свойстве Url путь к этому файлу, но это же не дело.

WAYS
29.08.2009, 16:52
Как узнать количество элементов в 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"."

WAYS
29.08.2009, 17:02
Ступил, есть же элементарный способ
for(int i=0; i<listBox1.Items.Count; i++) {
value += listBox1.Items[i].ToString().Replace("=", "-")+"&";
}

ss88
03.09.2009, 20:59
Я, конечно, понимаю, что мой вопрос - это абсолютный оффтоп, но я не нашел, где его можно задать, поэтому, спрошу здесь.

У меня есть файл базы данных Interbase (немного корруптед) схавает ли его Firebird, если ему его подсунуть как БД или нет? Они ж вроде как братья родные....

UPD

Путем нескольких экспериментов было установлено, что базы подходят безо всяких проблем, во всяком случае базы от Interbase 6.5 к Firebird 2.
Через JDBC-драйвер вытянул все, что нужно было.

the-roggy
05.09.2009, 13:04
делетед

Вопрос решен

Antikvazar
05.09.2009, 20:27
все разобрался :D

ss88
08.09.2009, 23:34
Подскажите стороннюю библиотеку для JAVA.
Мне нужен визуальный компонент по типу DateChooser(или как-то так), который, желательно, будет в виде редактируемого комбобокса с выпадающим календарем...

Forcer
08.09.2009, 23:42
Подскажите стороннюю библиотеку для JAVA.
Мне нужен визуальный компонент по типу DateChooser(или как-то так), который, желательно, будет в виде редактируемого комбобокса с выпадающим календарем...
http://www.toedter.com/en/jcalendar/index.html
- первая ссылка в гугле по запросу "java date chooser"

ss88
09.09.2009, 00:02
Sorry, нашел доки, относительно нормальный компонент...
Заюзаю или его или Swing Date Selector

dr.Web
15.09.2009, 01:12
что нужно пожключить чтобы не было ошибки

Ошибка 1 Не удалось найти имя типа или пространства имен "HttpWebRequest" (пропущена директива using или ссылка на сборку?) C:\programming\***\***\***\Form2.cs

.ATK
15.09.2009, 01:39
using System.Net;

dr.Web
15.09.2009, 20:58
ещё вопрос.
имеется код


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)": не найден метод, пригодный для переопределения

Буду благодарен + за оперативный и исчерпывающий ответ.

dr.Web
15.09.2009, 21:09
попробуй так
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");

dr.Web
15.09.2009, 21:16
благодарю.

IWantBeautifulLife
15.09.2009, 21:16
попробуй так
using System;
using System.Drawing;

namespace My
{
class MyApp
{
public void DisplayLogo()
{
Bitmap companyLogo = new Bitmap("20", "20");
}
}
}
Ошибка та же, актуально.

scrat
15.09.2009, 21:29
В универе начали преподавать 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
Так? :)

scrat
15.09.2009, 21:36
1.Приложение Windows Forms
2.Не знаю, а точнее не понял вопроса.
у тебя в ошибке говорится про Form1. Где она?

dr.Web
15.09.2009, 21:37
как мне сделать чтобы в дебагере при ошибки коннекта к прокси прога не вылетала,а продолжала работу??

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();
}

scrat
15.09.2009, 21:42
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

dr.Web
15.09.2009, 21:51
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)": не найден метод, пригодный для переопределения

scrat
15.09.2009, 21:54
А, она открывается при создании нового проекта и выглядит как пустое окошко 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". Там уже создавай объекты своих классов и тд.

Это сейчас перейдёт в чятик, так что лучше пиши в аську.

dr.Web
15.09.2009, 22:26
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();
}

Ra$cal
15.09.2009, 23:07
try\catch ?

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 цифры, прога сразу же вылетает.

Поскажите, как решить этот вопрос?

Ra$cal
18.09.2009, 20:00
хочется и смеяться и плакать... серьезно комментить чтото не получается, а стебаться жалко. помогите кто нить...

ладно, попорбую наводящими подсказками помочь:
ты пробовал отлаживать программу? это решило бы и вопрос про вылет(если глаза уже настолько слепы, что не могут определить ошибку, разнесенную на две строки), и удивительное диво в виде "ОДНОВРЕМЕННОГО" вывода строк(понятие об одновременности приобрело в этом вопросе новый смысл для меня - оказывается задать два вопроса последовательно и ждать ответа - это уже одновременно...)

PS: Console.ReadLine(); - сферическое чтение в вакуум. Попробуй книжки чтоли почитать...

desTiny
18.09.2009, 20:10
>>начинаю программировато на C#, ...
запятую не там поставил :) казнить, нельзя помиловать

1. Если у тебя
writeLine();
writeLine();
то они и пишутся подряд. читать число надо посередине

2. k = 0;
d = r / k;
k прочитать не хочешь? а то на 0 делить плохо. там qNan'ы вылезают ))

jecka3000
18.09.2009, 20:13
desTiny,да К я хочу прочитать и на ноль делить понимаю что нельзя...но как прочитать это к? (Из а того что не наю,поэтому и написал ,что к=0,ибо пишет,что параметр к не определен))

desTiny
18.09.2009, 20:16
jecka3000, а как ты первое число читаешь? найди в своём коде строчку, за это отвечающую. а ещё лучше - напиши на русском языке алгоритм (в смысле последовательность действий, а не машину Тьюринга), и скинь сюда

#239 сообщение :) не удаляйте ничего до, а? ))

Ra$cal
18.09.2009, 20:18
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, я долго молчал, но сейчас.....вот скажи, какого **я ты ****ишь? Не хочешь помочь, хочешь постебаться и построить из себя великого программера? Ради Бога! Иди в болталку и корчь из себя крутого! Этот раздел и есть для вопросов(Может быть пока и тупых на твой взгляд)!

desTiny
18.09.2009, 20:37
продолжаем думать. что, по-твоему, значит строчка:
r=double.Parse(Console.ReadLine());

jecka3000
18.09.2009, 20:43
так как си шарп восприниает только символы(не цифры), приходится заставить си думать,что переменная r равна какому нибудь числу...по другому я объяснить не могу)

desTiny
18.09.2009, 20:48
не-не-не. я про семантику
Что делает эта строчка (по-твоему)?

Ra$cal
18.09.2009, 20:50
так как си шарп восприниает только символы(не цифры), приходится заставить си думать,что переменная r равна какому нибудь числу...по другому я объяснить не могу)
так почитай книжку, а не пиши программы методом тупого щелканья по клавиатуре. обожаю людей, которые готовы тратить часы на выяснение ошибки в форуме, когда это все описано на первых страницах любой книги или первого же гугла по запросу Console.ReadLine()

jecka3000
18.09.2009, 20:58
Преобразует строковое представление числа в эквивалентное ему какое либо число

desTiny
18.09.2009, 21:03
Короче:
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, блиин....всё ясно...)) спб за разъяснения,думаю,что больше таких вопросов не будет))

neru
21.09.2009, 06:54
C#
хочу отобразить в WebBrowser конент из переменной, как это сделать?
можно конечно сохранить текст в файл , а потом указать в свойстве Url путь к этому файлу, но это же не дело.

http://msdn.microsoft.com/ru-ru/library/system.windows.forms.webbrowser.documenttext.aspx