Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Вопросы - ответы C#, Java (https://forum.antichat.xyz/showthread.php?t=90173)

procedure 02.11.2008 19:58

Вопросы - ответы C#, Java
 
Ранее была такая тема, сейчас её нет. Вот создал))

И как раз хотелось бы задать вопрос. В 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

Цитата:

Сообщение от nerezus
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
Building COM Objects in C#
Using C# Classes as COM Objects
C# and API
english only...

scrat 11.11.2008 23:29

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

Algol 11.11.2008 23:40

Цитата:

Сообщение от procedure
Вот допустим, я хочу использовать в своем проекте 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

Цитата:

Сообщение от procedure
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

Цитата:

Сообщение от W!z@rD
мдееее, читай про атрибут [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

Цитата:

Сообщение от scrat
как лучше реализовывать 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

Цитата:

Сообщение от Forcer
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

гуглим господа

W!z@rD 15.11.2008 20:45

Цитата:

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

Советую почитать про:
Сериализацию;
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

Цитата:

Сообщение от procedure
Прошлую проблему решил, появилась новая. Подскажите пожалуйста аналог библиотеки 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(false);
            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.TransformRotate90);
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.TransformRotate270);
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

Цитата:

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

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

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


Время: 11:58