Вопросы по архивированию, шиврованию и иконкам в проекте

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Glyckmen
Обычный пользователь
Обычный пользователь
 
Сообщения: 72
Зарегистрирован: 30.04.2006 (Вс) 15:32
Откуда: Санкт-Петербург

Вопросы по архивированию, шиврованию и иконкам в проекте

Сообщение Glyckmen » 12.06.2007 (Вт) 22:48

Добрый вечер!
Есть несколько вопросов
1.Я знаю что в платформе NET есть методы и классы по работе с архивами ZIP. Знаю что это System.IO.Compression и там есть куча свойств методов и т.д. но вот примера я нигде не видел при использовании Basica (если можно пример на работу с одним файлом заархивировать и разархивировать)

2. Нет ли встроенных в NET методов для шифрования файлов, байтового или строкового массива? (Впринципе у меня есть свой класс для шиврования, но хотелось бы использовать встроенные методы если они есть)

3. При создании приложения в Visual Studio 2005 я к проекту добавляю иконку совместимую с Vista, но в проводнике отоброжается иконка только размером 32х32 или 16х16 (Вид->Обычные значки или Мелкие значки), при выставлении в проводнике большие или огромные значки моя иконка заменяется на стандартную системную иконку для исполняемых файлов, подскажите как сделать в моем проекте что-бы в проводнике отоброжалась моя иконка при любом виде значков.(Система Windows Vista Home Premium)

Вот пока и все. Буду благодарен за любую оказанную помощь.

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 13.06.2007 (Ср) 12:01

Почитайте, например, это: http://blogs.msdn.com/dotnetinterop/arc ... files.aspx
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

Glyckmen
Обычный пользователь
Обычный пользователь
 
Сообщения: 72
Зарегистрирован: 30.04.2006 (Вс) 15:32
Откуда: Санкт-Петербург

Сообщение Glyckmen » 13.06.2007 (Ср) 19:20

gaidar Спасибо!
Все бы хорошо но только я во вражем языке совсем ни бум бум, пробовал перевести страницу Промтом стало еще хуже, нашел пример на MSDN там вроде разобрался хотя еще много вопросов но это похоже решаемо, а что по поводу остальных вопросов?

Glyckmen
Обычный пользователь
Обычный пользователь
 
Сообщения: 72
Зарегистрирован: 30.04.2006 (Вс) 15:32
Откуда: Санкт-Петербург

Сообщение Glyckmen » 15.06.2007 (Пт) 8:03

Вот нашел пример класса реализующий сжатие файла, мне этот пример понравился. Я добавил пример работы с классом по архивированию (разархивацию не делал, но она делается анологично), работу класса проверял путем разорхивации WinRAR-ом, все работает.

Класс:
Код: Выделить всё

Imports System.IO  ' for Stream object
Imports System.IO.Compression  ' for DeflateStream and GZipStream

Public Enum eCompressMethod As Byte
    Deflate = 1
    Gzip = 2
End Enum

Public Class ZIPCompress
    Const CHUNKSIZE As Integer = 32768

    Public Shared Sub Compress(ByVal input As Stream, ByVal output As Stream, ByVal CompressMethod As eCompressMethod, ByVal progress As Object, ByVal maxprogress As Integer)
        Dim zipStream As Stream = Nothing 'The zip stream we will use for compression
        Try
            Select Case CompressMethod
                Case eCompressMethod.Deflate
                    zipStream = New DeflateStream(output, CompressionMode.Compress)
                Case eCompressMethod.Gzip
                    zipStream = New GZipStream(output, CompressionMode.Compress)
            End Select
            'Compress the original bytes array
            CopyStream(input, zipStream, progress, maxprogress)
        Catch ex As Exception
            Throw ex
        Finally
            If Not zipStream Is Nothing Then
                zipStream.Close()
                zipStream = Nothing
            End If
        End Try
    End Sub

    Public Shared Sub Decompress(ByVal input As Stream, ByVal output As Stream, ByVal CompressMethod As eCompressMethod, ByVal progress As Object, ByVal maxprogress As Integer)
        Dim zipStream As Stream = Nothing 'The zip stream we will use for decompression
        Try
            Select Case CompressMethod
                Case eCompressMethod.Deflate
                    zipStream = New DeflateStream(input, CompressionMode.Decompress)
                Case eCompressMethod.Gzip
                    zipStream = New GZipStream(input, CompressionMode.Decompress)
            End Select
            'DeCompress
            CopyStream(zipStream, output, progress, maxprogress)
        Catch ex As Exception
            Throw ex
        Finally
            If Not zipStream Is Nothing Then
                zipStream.Close()
                zipStream = Nothing
            End If
        End Try
    End Sub

    Private Shared Sub CopyStream(ByVal input As Stream, ByVal output As Stream, ByVal progress As Object, ByVal maxprogress As Integer)
        progress.maximum = maxprogress
        Dim bytes(CHUNKSIZE) As Byte
        Dim n As Integer
        While True
            n = input.Read(bytes, 0, bytes.Length)
            If n = 0 Then Exit Sub
            output.Write(bytes, 0, n)
            If progress.value + bytes.Length > maxprogress Then progress.value = maxprogress Else progress.value = progress.value + bytes.Length
        End While
    End Sub

End Class


Код формы: (на форме две кнопки, прогресс,Open диалог и два RadioButton для выбора метода)
Код: Выделить всё

    Public infile As String
    Public outfile As String

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
            Dim met As Byte

            infile = OpenFileDialog1.FileName
            If RadioButton1.Checked = True Then
                met = eCompressMethod.Gzip
                outfile = infile & ".gzip"
            else
                met = eCompressMethod.Deflate
                outfile = infile & ".def"
            End If

            Dim infs As New System.IO.FileStream(infile, IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.Read)
            Dim outfs As New System.IO.FileStream(outfile, IO.FileMode.Create, IO.FileAccess.Write, IO.FileShare.Write)
            ProgressBar1.Value = 0
            ZIPCompress.Compress(infs, outfs, met, ProgressBar1, infs.Length)
            outfs.Close()
            infs.Close()
        End If
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Me.Close()
    End Sub


Может кому-то пригодится.


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 106

    TopList