[WT] [Архив] [Поиск] [Главная] [Управление]
[Совместно с IIchan.ru]

[Назад]
Ответ в нить

Имя
Адрес  [sage] [noko]
Animapcha image [?]
Тема   (reply to 2774)
Сообщение
Файл 
Пароль  (для удаления файлов и сообщений)
  • Прежде чем постить, ознакомьтесь с правилами.
  • Поддерживаемые типы файлов: 7Z, BZ, GIF, JPG, MO, MP3, OGG, PDF, PNG, PSD, RAR, SVG, SWF, TXT, XCF, ZIP
  • Максимально допустимый размер файлов: 10000 кБ.
  • Изображения, размер которых превышает 200 на 200 пикселей, будут уменьшены.
  • Ныне 1220 unique user posts. Посмотреть каталог
  • Радио:

Файл: 128733256487.jpg-(712.31KB, 1200x1120, 676731fa1ae05599b8840ab4acf4a00a.jpg)
2774 No. 2774 watch
Итак, это помоги быдлокодеру тред. Пишу я значит жалкое подобие ACDSee. И тут встает вопрос: Стив, как мне при клике на изображение в ListView получить его имя (или полный путь) для задания в PictureBox?
Развернуть все изображения
>> No. 2775
>>2774
Забыл сказать, это C# если кто не понял
>> No. 2776
Файл: 128734186050.jpg-(36.30KB, 426x479, 1286043094217.jpg)
2776
У каждого элемента listview наверняка есть свойство вроде userdata, для хранения указателя на любые данные. Туда при заполнении этого списка и записывай путь, а при клике получай обратно вместе с элементом.
>> No. 2779
>>2774
>>2776-кун прав.
public Object Tag { get; set; }

У объектов класса ListViewItem есть свойство Tag.

А как ты связал картинки на диске с итемами в LisView?

MSDN: The Tag property can be used to store any object that you want to associate with an item. Although you can store any item, the Tag property is typically used to store string information about the item, such as a unique identifier or the index position of the item's data in a database.
>> No. 2833
>>2779
listView1.Items.Clear();

foreach (DirectoryInfo dirInfo in diArray)
{
ListViewItem lvi = new ListViewItem(dirInfo.Name);
lvi.SubItems.Add("0");
lvi.SubItems.Add(dirInfo.LastWriteTime.ToString());
lvi.ImageIndex = 0;

listView1.Items.Add(lvi);
}


foreach (FileInfo fileInfo in fiArray)
{
ListViewItem lvi = new ListViewItem(fileInfo.Name);
lvi.SubItems.Add(fileInfo.Length.ToString());
lvi.SubItems.Add(fileInfo.LastWriteTime.ToString());

string filenameExtension =
Path.GetExtension(fileInfo.Name).ToLower();

switch (filenameExtension)
{
case ".bmp":
{
lvi.ImageIndex = 2;
break;
}
case ".jpg":
{
lvi.ImageIndex = 2;
break;
}
default:
{
lvi.ImageIndex = 1;
break;
}
}
Кусок кода относящийся к добавлению файлов в листвью. Теперь по проблеме, превьюшку я получаю, отмасштабировать изображение надо будет (это я сам справлюсь), а пока проблема в том что только 1 клик превью делает, на второй выдает ошибку. Код события:
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
string filename;
filename = listView1.SelectedItems[0].Text;
label1.Text = filename;
pictureBox1.ImageLocation = (fullPath + "/" + filename);
}
>> No. 2835
>>2833
1. Посмотри что в стэктрейсе в исключение
2. брякни после
>filename = listView1.SelectedItems[0].Text;
3. посмотри чему оно равно, проверь есть ли файл по пути fullPath + "/" + filename
4. Обнаруж, что в виндовс директории разделяются обратными чертами.
5.??????
5.ПРОФИТ
>> No. 2845
>>2835
Друг, если я вместо обратного поставлю прямой то СИ начнет считать его символом новой строки. И говорю же, в первый раз изображение выводится - то есть путь с обратным работает
>> No. 2846
>>2833
>а пока проблема в том что только 1 клик превью делает, на второй выдает ошибку.

Событие смени на OnClick
и
if (Listview.SelectedItems.Count > 0)
{
Код
}

>pictureBox1.ImageLocation = (fullPath + "/" + filename);
> "/"
Ведь в *win путь это так: /

А пути на шарпе:
pictureBox1.ImageLocation = "D:\Image\Cirno.jpg";
или
pictureBox1.ImageLocation = @"D:ImageCirno.jpg";
если лень слеши дублировать.
>> No. 2847
>>2833
>только 1 клик превью делает, на второй выдает ошибку.

>InvalidArgument=Value of '0' is not valid for 'index'.
>Parameter name: index

Если я ничего не путаю, то событие срабатывает ПОСЛЕ изменения выбора, но ДО выбора нового итема.

Т.е. SelectedItems изменилось, но новое выбранное еще не записано в него.
Ставь проверку, как я уже в >>2846 сказал:
> if (Listview.SelectedItems.Count > 0) { /Код/ }
И всё будет событие отработает без ошибки, и /Код/ будет выполнен.
>> No. 2848
Файл: 128808716871.png-(18.23KB, 663x227, Capture.png)
2848
>>2846
Сраный движок съел слеши. Прикладываю картинку
>> No. 2849
Надо администрацию потеребить, что бы подсветку синтаксиса прикрутили.
>> No. 2851
> Надо администрацию потеребить, что бы подсветку синтаксиса прикрутили.

Use Kotoba Mark, Luke.
>> No. 2923
Файл: 128854961563.png-(137.73KB, 400x487, cirno_by_pikiru-d2zaw4u.png)
2923
Спасибо что вы со мной. Все поправил, превьюшка работает как надо и даже масштабируется. Теперь мне надо получить неведомым образом разрешение экрана на котором работает программа (дабы слишком большие картинки ужимать для полноэкранного просмотра). И не могу няшно отцентрировать изображение как в простом просмотрщике винды (все время куда-то уползает, свойства dock и anchor не дают результата).
>> No. 2924
Файл: 12885531552.jpg-(226.14KB, 560x934, 1262793923128.jpg)
2924
>>2923

http://lmgtfy.com/?q=Get+Screen+resolution+C%23
баааака
>> No. 3381
Файл: 129449144911.jpg-(62.38KB, 560x423, gofu_1a4de78f368d5d9d55e377b124ed4877.jpg)
3381
Итак, есть вопрос. К некоему экзешнику добавлены байты некоторого другого файла. Как извлечь байты только этого файла, если я незнаю точного размера экзешника (потому что он еще пишется, черт побери)!
>> No. 3382
Файл: 129449358515.jpg-(112.64KB, 563x592, lol_wut_pear_chinese.jpg)
3382
>>3381
>> No. 3383
Файл: 129449373032.jpg-(110.90KB, 450x624, gofu_3f06d52592aadb633f7aa3ac1cb885e4.jpg)
3383
>>3382
Программа создают копию себя, берет выбранный в диалоге файл, дописывает его в свою копию. Копия при запуске должна из себя вытащить записанный файл.
>> No. 3384
>>3383
Ты пишешь вирусы?
>> No. 3385
Файл: 129449609320.jpg-(121.35KB, 450x625, gofu_2fd45745da9f56ed43eac758d04cbafd.jpg)
3385
>>3384
Нет, я пишу курсач :3. Собственно программа работает, но файл извлекается без расширения и копии всегда требуется путь к оригиналу.
>> No. 3386
>файл извлекается без расширения
Всмысле? Ты же извлекаешь набор байтов, следовательно называй как хочешь и сохраняй где хочешь. Можешь отдельно при сращивании 2х файлов дописывать инфу о расширении.
>копии всегда требуется путь к оригиналу
Не понятно зачем. А вообще приведи ка код (на pastebin.com). Просто поржать.
>> No. 3427
Файл: 129484189215.jpg-(66.54KB, 400x594, gofu_d78e7df887c0b5e029257137d555949c.jpg)
3427
>>3386
Все ок, оделал, автономность, расширение в наличии.
Теперь проблема, идет переполнение памяти при попытке считать большой файл.
http://pastebin.com/6yNrGtXi если интересно. Я понимаю что надо считывать байты не так как я:
byte[] mass = File.ReadAllBytes(openFileDialog1.FileName);
А надо циклом по несколько байтов. Несоображу как его лучше сделать.
>> No. 3428
Файл: 12948456932.jpg-(115.23KB, 450x623, gofu_0bbd343fecbdce5fc2eb37581d125d42.jpg)
3428
Организовал цикл. Но в большиъ файлах выдает ошибку в месте сообщения массиву размерности
byte[] mass = new byte [input.Length];
for (int i = 0; i < mass.Length; i++)
{
input.Read(mass, i, 1);
}
>> No. 3429
Нихуя не понимаю в этом вашем си-бемоле.
В больших файлах можно так: открыл первый файл, открыл второй файл, считал N байт из второго файла, записал в первый файл, закрыл оба файла. Далее снова повторяешь это дело, но данные из второго файла читаешь по смещению N. На третьей интерации по смещению 2N и т.д. пока весь второй файл не перепишешь в конец (или куда ты там пишешь) первого файла.
Это так, если абстрагироваться от языка.
Алсо с насколько большими файлами проблемы? (по несколько гигов?)
>> No. 3431
Ты что, данные ксоришь?
Нахуй тебе fullkey[] размноженный, если у тебя уже есть key[]?
А что будет, если расширение файла не три символа?
>byte[] final = new byte[exemass.Length + mass.Length+3];
Я вообще неебу где этот byte[] final выделяется, но если размеры 2х файлов по сотне метров, то пиздец скорее всего будет.
Алсо кривота..
>> No. 3432
Файл: 129485125557.jpg-(167.32KB, 450x547, gofu_0d2ad37beca1c697e382e55291a0892c.jpg)
3432
>>3431
Размножаю чтобы ксорить по всей длине. Знаю что можно и не далать фуллкей, так быстрее сообразилось. Пофиг мне на кривоту, сначала она должна заработать.
>> No. 3433
Файл: 129485232242.jpg-(74.94KB, 560x400, gofu_0ee342bec0f0ce02a1de72de1a7b5728.jpg)
3433
>>3429
С превышающими размер оперативки.
>>3431
byte[] final делается в конце, это объединенный массив из экзешника программы и зашифрованного файла. Его я записываю в новый файл, который будет самостоятельным экзешником для расшифровки.
>> No. 3434
>>3433
пиши в файл по частям. Забудь про этот массив
>> No. 3435
Вообще не делай в проге массивы, равные размеру файла. Массивы не нужны. Все вычисления, а также считывание и запись делай через временные переменные, скажем по 1024 байт, в цикле.
[Назад]


Удалить сообщение []
Пароль  
[Mod]