Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/1: Рейтинг темы: голосов - 1, средняя оценка - 5.00
1386 / 842 / 91
Регистрация: 08.02.2017
Сообщений: 3,579
Записей в блоге: 1

Работа с zip архивами

29.10.2024, 02:49. Показов 18178. Ответов 282
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Из всего, что попадалось по теме сжатия/распаковки ZIP наиболее интересные были примеры с использованием библиотеки Zlib. Оригинальная zlib использует cdecl экспорт функций, но есть реализация zlibwapi.dll, которую можно использовать в VB. Вот хороший пример использования. Там можно увидеть как сжть/распаковать массив байтов, но вот беда, очень сложно найти пример под VB с более обширным использованием, способной на большее, данной либы, которая не есть простая, там есть функции с использованием множества параметров констант и длинных структур, которые чтобы узнать наверное надо долго копатся в сишных заголочниках. Но HackerVlad в личной беседе говорил, что у него есть исходники с использованием данной библиотеки, поэтому любезно прошу его поделиться данной информацией.

Добавлено через 1 минуту
кстати словосочетание zip-архивами в названии форум блочит почему-то )

Добавлено через 6 минут
На одном форуме есть хороший пример испльзования функций zlib для извлечения/распаковки отдельных файлов, там
Кликните здесь для просмотра всего текста
обсуждался какой-то экзотический ЯП Clarion, но очень наглядно
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
! Источнег: https://forum.clarionlife.net/viewtopic.php?t=2389
! Для добавления в архив PwlZip ваш пароль
ZipHandle = zipOpen(NEW_ZIPPACK, 0)
If EncryptFlag = 1
Res# = zipOpenNewFileInZip3(ZipHandle, PATH_CURZIP, Zinfo, 0, 0, 0, 0, Comment, Z_DEFLATED, CompressionFlag,0,-15,8,0,PwlZip,0)
Else
Res# = zipOpenNewFileInZip(ZipHandle, PATH_CURZIP, Zinfo, 0, 0, 0, 0, Comment, Z_DEFLATED, CompressionFlag)
.
 
!Для чтения из архива
ZipHandle = unzOpen(PATH_INFILE_PACK)
LocRes1=UnzGoToFirstFile(ZipHandle)
If unzGetCurrentFileInfo(ZipHandle,FinFo,PATH_NAMEUPD_TMP,Size(PATH_NAMEUPD_TMP),0,0,Comment,Size(Comment)).
If FinFo.Flag = 3 !признак шифрованного zip по крайней мере так я понял после мыкания с архивами
LocRes2 = unzOpenCurrentFilePassword(ZipHandle,PwlZip)
Else
LocRes2 = UnzOpenCurrentFile(ZipHandle)

Здесь подробное описание функций, структур и констант, однако я не нашел там unzGetCurrentFileInfo и т.п.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.10.2024, 02:49
Ответы с готовыми решениями:

Работа с ZIP-архивами - распаковка файлов
Привет, уважаемый ALL! Подскажите, как можно работать с zip архивами из VBA? Стоит задача: 1) прочитать из архива...

Автоматизировать заполнение "Графика выполненных работ по месяцам"
Используя готовую рабочую книгу Blank1.xls, автоматизировать заполнение "Графика выполненных работ по месяцам". Из диапазона дат в...

Задания из лаб.работ
Надоедаю наверное уже всем...

282
1386 / 842 / 91
Регистрация: 08.02.2017
Сообщений: 3,579
Записей в блоге: 1
31.10.2024, 19:12  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от The trick Посмотреть сообщение
Вот я юзал для этих целей как раз код с zipfldr.dll тот что я прикрепил.
Также юзал ее для создания архива, но там есть ньюансы работы.
Вот эти нюансы и пугают, пособие идиота для познания com-архитектур еще невыпустили к сожалению. )) Я распаковал папку твоим кодом, но файлы в подпапках почему-то не распаковались. Zlib в этом плане, как-то поплоще и попроще )
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
31.10.2024, 20:32
Цитата Сообщение от testuser2 Посмотреть сообщение
Вот эти нюансы и пугают, пособие идиота для познания com-архитектур еще невыпустили к сожалению. )) Я распаковал папку твоим кодом, но файлы в подпапках почему-то не распаковались. Zlib в этом плане, как-то поплоще и попроще )
Так там все просто. Это же стандартные COM'овские понятия - IStream = файл, IStorage = папка. Получаем IStorage корневого узла, перечисляем все IStream - файлы и IStorage - подпапки. Про ньюансы я говорил в плане как раз упаковки. С распаковкой все элементарно. Вот из рабочего кода алгоритм:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
Public Function UnzipAll( _
                ByRef sFileName As String) As CZIPStreams
    Dim hr          As Long
    Dim cShExt      As IShellExtInit
    Dim cPFolder    As IPersistFolder2
    Dim cStreams    As CZIPStreams
    Dim lPidl       As Long
    Dim sFullPath   As String
    
    hr = CoCreateInstance(CLSID_CompressedFolder, Nothing, CLSCTX_INPROC_SERVER, IID_IShellExtInit, cShExt)
    If hr < 0 Then
        Err.Raise hr, , "CoCreateInstance failed"
    End If
    
    Set cPFolder = cShExt
    
    sFullPath = GetFullPath(sFileName)
    
    hr = SHParseDisplayName(StrPtr(sFullPath), Nothing, lPidl, 0, 0)
    If hr < 0 Then
        Err.Raise hr, , "SHParseDisplayName failed"
    End If
    
    cPFolder.Initialize lPidl
    
    ILFree lPidl
    
    Set cStreams = New CZIPStreams
    
    Set cStreams.Parent = Me
    
    AddToZipStreams cStreams, cPFolder, vbNullString
    
    Set m_cStreams = cStreams
    Set UnzipAll = cStreams
    
End Function
 
Private Sub AddToZipStreams( _
            ByVal cStreams As CZIPStreams, _
            ByVal cStg As IStorage, _
            ByRef sPath As String)
    Dim hr          As Long
    Dim cStm        As IStream
    Dim cEnum       As IEnumSTATSTG
    Dim cZIPStm     As CZIPStream
    Dim bData()     As Byte
    Dim bEmptyStm() As Byte
    Dim tStat       As STATSTG
    Dim tSize       As LARGE_INTEGER
    Dim sName       As String
    
    Set cEnum = cStg.EnumElements
    
    cEnum.Reset
    
    Do While cEnum.Next(1, tStat) = S_OK
        
        sName = SysAllocString(ByVal tStat.pwcsName)
        
        CoTaskMemFree tStat.pwcsName
        
        Select Case tStat.Type
        Case STGTY_STREAM
            
            Set cStm = cStg.OpenStream(sName, 0, STGM_READ Or STGM_SHARE_EXCLUSIVE)
            
            GetMem8 tStat.cbSize, tSize
            
            If tSize.hipart <> 0 Or tSize.lowpart < 0 Or tSize.lowpart > 300000000 Then
                Err.Raise 7
            End If
 
            If tSize.lowpart Then
                
                ReDim bData(tSize.lowpart - 1)
                
                cStm.Read bData(0), tSize.lowpart
                    
                Set cZIPStm = cStreams.Add(sPath & sName, bData)
            
            Else
                Set cZIPStm = cStreams.Add(sPath & sName, bEmptyStm)
            End If
            
            Set cStm = Nothing
            
        Case STGTY_STORAGE
            AddToZipStreams cStreams, cStg.OpenStorage(sName, 0, STGM_READ Or STGM_SHARE_EXCLUSIVE), sPath & sName & "\"
        End Select
        
    Loop
    
End Sub
Добавлено через 7 минут
С упаковкой там ньюансы как раз в том что она в отдельном потоке запускается и нет механизма (документированного) уведомления о завершении + отображается диалог с прогрессом при длительных операциях. Если почитать ту тему код из которой я приводил - там как раз и пытались решить проблему эту. Для Win10 и еще вроде каких-то я не помню подробностей уведомление можно получить разными способами, т.к. я реверсил эту вещь не на всех системах, но точно знаю что через Shell-notify можно на WIN10 это сделать. Вот кусок кода из проекта одного:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
Public Sub Zip( _
           ByRef sFileName As String, _
           ByVal cStreams As CZIPStreams)
    Dim sFiles()    As String
    Dim lPidl()     As Long
    Dim lIndex      As Long
    Dim sFilesList  As String
    Dim tFO         As SHFILEOPSTRUCT
    Dim hr          As Long
    Dim cDropTarget As IDropTarget
    Dim cDataObj    As IDataObject
    Dim cPFile      As IPersistFile
    Dim cSFolder    As IShellFolder
    Dim cInitItem   As IInitializeWithItem
    Dim cShellItem  As IShellItem
    Dim hwnd        As Long
    Dim lNotifyID   As Long
    Dim tEntry      As SHChangeNotifyEntry
    Dim lRet        As Long
    Dim tMSG        As MSG
    Dim sFullPath   As String
    Dim hEvent      As Long
    Dim lError      As Long
    
    sFullPath = GetFullPath(sFileName)
    
    CreateEmptyArchive sFullPath
    
    If cStreams.Count = 0 Then
        Exit Sub
    End If
    
    On Error GoTo error_handler
    
    tEntry.pidl = ILCreateFromPathW(StrPtr(sFullPath))
    
    hwnd = CreateZipNotifyWindow
    
    lNotifyID = SHChangeNotifyRegister(hwnd, SHCNRF_ShellLevel Or SHCNRF_NewDelivery, _
                                       SHCNE_UPDATEITEM, WM_ZIP_COMPLETED, 1, tEntry)
    
    If lNotifyID = 0 Then
        Err.Raise 7, , "SHChangeNotifyRegister failed"
    End If
    
    hr = CoCreateInstance(CLSID_CompressedFolder, Nothing, CLSCTX_INPROC_SERVER, IID_IShellFolder, cSFolder)
    
    If hr < 0 Then
        Err.Raise hr, , "CoCreateInstance failed"
    End If
    
    cSFolder.CreateViewObject hwnd, IID_IDropTarget, cDropTarget
    
    On Error Resume Next
    
    Set cPFile = cDropTarget
    
    lError = Err.Number
    
    On Error GoTo -1
    On Error GoTo error_handler
    
    If lError = 0 Then
        cPFile.Load sFullPath, STGM_READWRITE Or STGM_SHARE_EXCLUSIVE
    Else
        
        Set cInitItem = cDropTarget
        
        hr = SHCreateItemFromParsingName(StrPtr(sFullPath), Nothing, IID_IShellItem, cShellItem)
        
        If hr < 0 Then
            Err.Raise hr, , "SHCreateItemFromParsingName failed"
        End If
        
        cInitItem.Initialize cShellItem, STGM_READWRITE
        
    End If
 
    sFiles = CreateTemporaryFiles(cStreams)
    
    If (Not Not sFiles) = 0 Then
        Exit Sub
    End If
    
    ReDim lPidl(UBound(sFiles))
    
    For lIndex = 0 To UBound(sFiles)
        lPidl(lIndex) = ILCreateFromPathW(StrPtr(sFiles(lIndex)))
    Next
    
    hr = SHCreateFileDataObject(VarPtr(0&), UBound(lPidl) + 1, lPidl(0), ByVal 0&, cDataObj)
    
    If hr < 0 Then
        Err.Raise hr, , "SHCreateFileDataObject failed"
    End If
    
    cDropTarget.DragEnter cDataObj, MK_LBUTTON, 0&, 0&, DROPEFFECT_COPY
    cDropTarget.Drop cDataObj, MK_LBUTTON, 0&, 0&, DROPEFFECT_COPY
    
    hEvent = GetWindowLong(hwnd, 0)
    
    Do
        
        lRet = MsgWaitForMultipleObjects(1, hEvent, 0, -1, QS_ALLINPUT Or QS_ALLPOSTMESSAGE)
        
        If lRet = 0 Then
            Exit Do
        ElseIf lRet = 1 Then
        
            PeekMessage tMSG, 0, 0, 0, PM_REMOVE
            TranslateMessage tMSG
            DispatchMessage tMSG
            
        Else
            Exit Do
        End If
 
    Loop
    
error_handler:
    
    If Not Not lPidl Then
        For lIndex = 0 To UBound(lPidl)
            ILFree lPidl(lIndex)
        Next
    End If
    
    If Not Not sFiles Then
        
        sFilesList = Left$(sFiles(0), InStrRev(sFiles(0), "\") - 1) & vbNullChar
        
        With tFO
            .pFrom = StrPtr(sFilesList)
            .wFunc = FO_DELETE
            .fFlags = FOF_NOCONFIRMATION Or FOF_NOCONFIRMMKDIR Or FOF_NOERRORUI Or FOF_SILENT
        End With
        
        SHFileOperation tFO
 
    End If
    
    If lNotifyID Then
        SHChangeNotifyDeregister lNotifyID
    End If
    
    If hwnd Then
        If GetClassLong(hwnd, 0) <= 1 Then
            DestroyWindow hwnd
            UnregisterClass StrPtr(ZIP_NOTIFY_WND_CLASS), App.hInstance
        Else
            SetClassLong hwnd, 0, GetClassLong(hwnd, 0) - 1
            DestroyWindow hwnd
        End If
    End If
    
    If Err.Number Then
        Err.Raise Err.Number, Err.Source, Err.Description, Err.HelpFile, Err.HelpContext
    End If
        
End Sub
Добавлено через 23 минуты
Кстати на 10-ке у себя глянул, там вроде как можно через IContextMenu::InvokeCommand сделать без всяких костылей в основном потоке.
1
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
31.10.2024, 20:47
docx значит читаете? это тоже зип, да?
0
1386 / 842 / 91
Регистрация: 08.02.2017
Сообщений: 3,579
Записей в блоге: 1
01.11.2024, 02:04  [ТС]
The trick, спасибо, это отличное крутое дополнение темы, хоть и не очень понятное. Лимит количества ответов видимо заполнен для данной темы, хотя можно было бы поставить это также ответом.
Цитата Сообщение от HackerVlad Посмотреть сообщение
docx значит читаете? это тоже зип, да?
Конечно, документы офиса представляют из себя сжатые xml-файлы в формате utf-8, и есть нюансы с этим связанные. Файлы даже большие всегда считываются в память полностью при открытии. Хотя я не уверен полностью, как это в случе с документами ворда. Файлы эксель можно было бы загружать частями, посколку там отдельные листы - отдельные файлы. Но по моему там тупо все грузится сразу в любых файлах. Листы могут быть между собой связаны, но могут быть ине связаны. Допустим ты открыл книгу Excel Лист1 активный, Лист2 неактивный и не связанны с листом1, Лист2 можно было бы не загружать.. Но когда файл читаешь макросом, можно конечно загружать листы отдельно в любом случае. С бинарными файлами (xlsb) сложнее, там в зип-архиве единый бинарный файл, есть конечно спецификация по структуре бинарных файлам, но я не виде чтоб кто-то в ней шарил (кроме разработчиков софта)
Есть еще нюанс, когда документ сохраняешь, он на самом деле перезаписывается на новом месте, а старый удаляется. Если перед сохранением делать жесткую ссылку на файл перед сохранением, то можно сохранить старую версию файла.
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
01.11.2024, 04:46
Цитата Сообщение от testuser2 Посмотреть сообщение
хоть и не очень понятное
+++

Добавлено через 5 минут
Лучше бы The Trick скинул полностью рабочий проект, чтобы наглядно было видно, а то разрозненные куски кода мне тоже не понятны. Тем более его код не работал у меня когда я пытался.
0
1386 / 842 / 91
Регистрация: 08.02.2017
Сообщений: 3,579
Записей в блоге: 1
01.11.2024, 18:52  [ТС]
Цитата Сообщение от HackerVlad Посмотреть сообщение
Ещё он сделал вторую программу которая работает полностью на алгоритме zlibwapi.
Но он сделал только unzip, я надеялся что там будет запись в архивы. Вообще мне нужно перезапись файла внутри архива. Что интересно там многовато однотипных функций zipOpenNewFileInZip, zipOpenNewFileInZip2, zipOpenNewFileInZip3, zipOpenNewFileInZip4, чтож попробуем разобраться в их назначении

Добавлено через 32 минуты
Нашел примерчики

Добавлено через 4 часа 5 минут
Как я понял (из всего что я вычитал), zlib не поддерживает перезапись/удаление внутренних файлв. нужно полностью перезаписывать весь архив для модификации файлов.
1
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
01.11.2024, 18:58
Цитата Сообщение от testuser2 Посмотреть сообщение
нужно полностью перезаписывать весь архив для модификации файлов
Может быть и так, но зато я точно знаю что класс от wqweto это поддерживает.
1
1386 / 842 / 91
Регистрация: 08.02.2017
Сообщений: 3,579
Записей в блоге: 1
01.11.2024, 19:04  [ТС]
Зато у меня получилось, 2 файла с одинаковым именем запилить в зип-папку
Миниатюры
Работа с zip архивами  
0
Эксперт по электронике
6570 / 3197 / 335
Регистрация: 28.10.2011
Сообщений: 12,475
Записей в блоге: 7
01.11.2024, 19:06
Цитата Сообщение от testuser2 Посмотреть сообщение
Как я понял, zlib не поддерживает перезапись/удаление внутренних файлв. нужно полностью перезаписывать весь архив для модификации файлов.
Архиваторы (WinRAR, 7-Zip и др.) именно так и модифицируют архивы. То есть создают новый архив, переупаковывают файлы, а после заменяют оригинальный архив.
1
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
01.11.2024, 19:31
Цитата Сообщение от testuser2 Посмотреть сообщение
2 файла с одинаковым именем
Охренеть

Добавлено через 18 минут
В файловой системе же не может быть два одинаковых файла (это была бы ошибка файловой системы уже). А в архивах разве это возможно тоже?
0
1386 / 842 / 91
Регистрация: 08.02.2017
Сообщений: 3,579
Записей в блоге: 1
02.11.2024, 02:45  [ТС]
Цитата Сообщение от locm Посмотреть сообщение
Архиваторы (WinRAR, 7-Zip и др.) именно так и модифицируют архивы.
Спасибо, значит так можно действовать вполне легитимно, будем знать.
Цитата Сообщение от HackerVlad Посмотреть сообщение
А в архивах разве это возможно
Фокус-покус оказался не очень надежный, после пятого добавления, произощел "неожиданный конец" архива (хотя сама библиотека этого не "почувствовала" ))
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
02.11.2024, 03:04
Чисто теоритически должен быть способ как поменять файл внутри архива прямой перезаписью внутри файла ZIP находя нужный файл нужное смещение в байтах но фишка в том что там перезаписывать нужно ни только буфер но и описывающею структуру надо ли это вообще ещё и crc поменяется
0
1386 / 842 / 91
Регистрация: 08.02.2017
Сообщений: 3,579
Записей в блоге: 1
02.11.2024, 07:38  [ТС]
Сделал жесткую ссылку на zip-файл, добавил в него файл с помощью zlibwapi, жесткая ссылка не разъединилась с файлом. Затем скопиовал в этотархив файл с помощью проводника, ссылка, также осталась связана с файлом. Что говорит о том, что информация дописывалась в один и тот же файл. Одако кодга я в проводнике удалил один файл в архиве, то связь файла и ссылки пропала, что свидетельствует о том, что после удаления файл полностью перезаписывается в новое место, о чем говорил locm. Также происходит каждый раз, когда сохраняются изменения в файлах xlsx, docx и т.д., они полностью перезаписываются. Таковы издержки использования zip-сжатия, хотя фактически может быть как таковых издержек и нет, поскольку сжатая зип-папка можте весить меньше отдельных составляющих ее частей.
0
1386 / 842 / 91
Регистрация: 08.02.2017
Сообщений: 3,579
Записей в блоге: 1
03.11.2024, 15:27  [ТС]
Модуль автоустановки zlibwapi.dll в каталог программы, в случае ее отсутствия в системе. Очень капризный модуль, не полчилось использовать его в vba, документ отказался сохранятся в виду непредвиденных причин, и вот сейчас, он оказался слишком длинным, чтобы его запостить на форум. Наверное я очень крутой программист, раз такие длинные модули пишу
Вложения
Тип файла: zip AutoInstallZlibWapi.zip (94.8 Кб, 15 просмотров)
1
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
03.11.2024, 15:34
Цитата Сообщение от testuser2 Посмотреть сообщение
он оказался слишком длинным, чтобы его запостить на форум
У меня ни раз такое было.
0
1386 / 842 / 91
Регистрация: 08.02.2017
Сообщений: 3,579
Записей в блоге: 1
03.11.2024, 15:35  [ТС]
Использование: вызвать процедуру ZlibWapi_Check при загрузке формы или непосрдественно перед работой с архивами. Процедура проверяет наличие zlibwapi и в случае ошибки вызова функции zlibVersion() (возвращает указатель на строку текущей версии библиотеки) извлекает файл библиотеки из "ресурсов" в папку программы.
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
03.11.2024, 15:44
testuser2, как ты это сделал? как ты сделал строку B64?
И зачем поставил Return в конце процедуры ZlibWapi_1_2_8_Install?

Добавлено через 57 секунд
Цитата Сообщение от testuser2 Посмотреть сообщение
из "ресурсов"
Кстати если бы реально извлекать из ресурсов, без ковычек, то EXE так сильно бы не раздувался.

Добавлено через 26 секунд
EXE 278 Кб получился

Добавлено через 56 секунд
Но моя предыдущая технология ещё больше раздувала EXE где был описан каждый байт, для создания файла...

Добавлено через 18 секунд
Я ничего не знал про base64 если честно
0
1386 / 842 / 91
Регистрация: 08.02.2017
Сообщений: 3,579
Записей в блоге: 1
03.11.2024, 15:49  [ТС]
Цитата Сообщение от HackerVlad Посмотреть сообщение
И зачем поставил Return в конце процедур
Я оставил там загадки, специально )
Цитата Сообщение от HackerVlad Посмотреть сообщение
EXE 278 Кб получился
Видимо текст в exe содержится в виде юникода, надо проверить
Сам модуль 126 кб, он в Ansi.

Добавлено через 2 минуты
Да, действительно, открыл в листере в режиме utf-16 там этот текст. Может быть попробовать его загонят в константу..
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
03.11.2024, 15:53
testuser2, в VB6 создать строку в ANSI это не так просто!
1
1386 / 842 / 91
Регистрация: 08.02.2017
Сообщений: 3,579
Записей в блоге: 1
03.11.2024, 15:56  [ТС]
Не получится константой, там же надо собирать строку из частей, а загнать разом такую строку в переменную нельзя в коде..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.11.2024, 15:56
Помогаю со студенческими работами здесь

access и zip архив
Привет всем! Подскажите... если есть возможность сохранение файла в zip архив Dim FileHeder As String Dim filePath As String ...

Как распаковать ZIP-файл в 7z?
'При помощи VBA WinRAR распаковывает архив в папку … q = Адрес_сохранения_файла 'путь к каталогу, то есть к папке, в конце пути для...

ребята!завтра надо сдать работу,а без этих работ никак((
алгоритмы линейной структуры 1) СОСТАВИТЬ ПРОГРАММУ ВЫЧИСЛЕНИЯ СРЕДНЕГО ЗНАЧЕНИЯ ТРЕХ ВЕЛИЧИН 2) ПОДСЧИТАТЬ И ВЫВЕСТИ НА ЭКРАН СУММУ И...

Замена файла в zip архиве при совпадении имени
Есть несколько excel файлов. например, 1.xls, 2.xls, 3.xls Есть куча zip архивов. например, A (1.xls), B (1.xls,5.doc,3.doc), C (3.xls),...

Как сделать архив zip?
Как сделать архив zip? Какие нужны библиотеки и где их взять? заранее спасибо.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
80
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru