1. работай с XML файлом - лучший вариант, если тебе только не нужна структура вида Code: key=value 2. c# не знаю, но в java есть класс Properties. Ему даешь файл( i/o stream ) и дальше дергаешь методы getProperty(key), setProperty(key, value), в зависимости от того что тебе нужно. В c#, мне кажется, должно быть что-либо подобное. Попробуй погуглить. 3. можно "вручную" парсить файл - но это бяка.... Но если ничего не найдешь более подходящего - то делай так - в любой книжке по шарпу есть работа с файлами.
Советую почитать про: Сериализацию; Properties вот наглядный пример: http://www.sendspace.com/file/n9ykab
Допустим есть таблица в которой хранится информация в виде { ID, ФИО, Должность, Двоичные данные (картинка)}. Как можно сделать что то типа собственного GridView. т.е. я хочу чтобы все это было отформатировано не по стандартному. т.е. не простой таблицой, а допустим в некой собственной форме. ?
Прошлую проблему решил, появилась новая. Подскажите пожалуйста аналог библиотеки cURL в php для C#. т.е. cURL применяется для моделирования действий в браузере, а в C# есть ли подобное?
WebBrowser + mshtml эта связка позволяет неплохо работать с деревом объектов html документа (можно и без mshtml, но тогда возможностей меньше) из очевидных недостатков - просто так нельзя сделать консольное приложение (т.е. нужна форма с контролом WebBrowser, который играет роль интерфейса к ядру IE) ЛИбо, можно использовать HttpWebRequest/HttpWebResponse и либу HtmlAgilityPack - она позволяет несколько проще разбирать html'ки на объекты тэгов (плюс есть возможность юзать XPath) В этом случае форма не нужна, тк WebBrowser не используется
+1000 )))) Я об этом только вчера читал. А WebBrowser не знаю) В общем я читал, только как правильно обрабатывать отправляемые пакеты, или !Page.IsPostBack )) А как анализировать другую какую либо страницу, не было написано у меня в книге.... но думаю вскоре пойму..Нужно научиться хотяб авторизацию на каком нибудь сайте проходить)
Добрый день. У меня возникла загвоздка,а именно как на C# можно стереть все данные из картинки и записать туда свои,уточняю-нужно стереть все keywords из EXIF тега(его ID=0x9c9e) и записать туда свои которые например хранятся в массиве. Заранее большое спасибо.
Ну просматривать можно примерно так: Code: 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 можно так (код не мой): Code: 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); }
Большое спасибо за потраченное время. За просмотр конечно спасибо,но он не так важен(да и в гугле полно исходников чего не скажешь про запись),постараюсь интегрировать этот код к себе,позже отпишусь что-да как.)
Возник вопрос,а именно GetEncoderInfo для его использования нужны какие-либо дополнительные библиотеки?(Я использую Visual C# 2008 express). В поиске он мне коечто выдал насчет этой функции,но ничего полезного.
Проблема с exifom решена-нашел на с++ хорошую прогу) Теперь возник другой вопрос,а именно. Сейчас приведу пример:у меня есть ArrayList и в нем содержится скажем 200 записей,большинство из них будут повторяться. Вот собственно и вопрос существуют ли в C# встроенные функции которые смогут: определить общее количество повторяющихся элементов,и в дальнейшем записать их и также их количество в двумерный массив: Code: массив[элемент][кол.повторений] З.Ы. в ручную написать смогу,просто интерестно есть ли такие встроенные функции в C#.