powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / [vb6.0 ]отрезаем фрагмент файла
73 сообщений из 73, показаны все 3 страниц
[vb6.0 ]отрезаем фрагмент файла
    #37166676
kalamfur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер.

требуется программно вырезать 5 первых символов из файла (чтоб он стал нечитаем)

но, чтобы процесс был обратим. т.е. чтоб можно было "воткнуть" символы обратно, и снова получить нормальный файл.
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37166692
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что было сделано, что не получается?
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37166866
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Открыть с прямым доступом. Поксорить нужные байты. Закрыть.
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37167220
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это ответ на вторую часть вопроса, а на первую?
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37167626
kalamfur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так можно живой пример, как отрезать кусок, сохранить его рядом, скажем в файл key.inf, а затем слить воедино? Сейчас не могу привести свой, код, не дома. пробовал разделять так DOC файл. потерпел неудачу.
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37168183
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача сама себе противоречит.
Если надо ОТРЕЗАТЬ кусок - то этот кусок тоже надо сохранить, чтобы потом знать что приляпывать. А, значит, в результате получится не один, а два файла.
Предложеный мной вариант не отрезает, а модифицирует файл. Причём обратимо.
Возможны и иные варианты - скажем действительно отрезаем сколько-то (хорошо, 5 байт) от начала, и прикрепляем их к концу (или в строго определённое место в середине). Размер файла также не изменится, и модификация по-прежнему обратима.

Если при разделении потерпел неудачу - вероятнее всего, не в том режиме открывал... DOC-файлы нельзя открывать и читать как текстовый файлы, они от этого грустят и портятся.
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37168236
kalamfur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так как же их открыть то, если не как текстовые?смысл такой что кусок должен лежать на сервере, и подтягиваться, в случае нормальной авторизации.
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37168502
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
open ... for binary ...
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37168906
kalamfur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А в моём конкретном случае, как это будет выглядеть?

т.е. насколько я понимаю так:

Код: plaintext
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.
Private Sub cmdReadValues_Click()
Dim file_name As String
Dim file_length As Long
Dim fnum As Integer
Dim bytes() As Byte
Dim txt As String
Dim key As String
Dim i As Integer

    file_name = txtFile.Text
    file_length = FileLen(file_name)

    fnum = FreeFile
    ReDim bytes( 1  To file_length)

    Open file_name For Binary As #fnum
    Get #fnum,  1 , bytes
    Close fnum

    ' ключ
    For i =  1  To  5 
        key = key & Format$(bytes(i)) & vbCrLf
    Next i

    For i =  5  To file_length
        txt = txt & Format$(bytes(i)) & vbCrLf
    Next i

    txtValues.Text = txt
End Sub

??
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37168917
kalamfur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
косяк какой-то. пробую с файлом в 30 метров, выдаёт ошибку
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37171114
kalamfur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Никто не знает?
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37171163
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно нет. Ты же не написал какую и где.
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37171196
kalamfur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
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.
Dim fnum As Integer
Dim bytes() As Byte
Dim txt As String
Dim key As String
Dim i As Integer

    file_name = "c:/test.doc"
    file_length = FileLen(file_name)

    fnum = FreeFile
    ReDim bytes( 1  To file_length)

    Open file_name For Binary As #fnum
    Get #fnum,  1 , bytes
    Close fnum

    ' key
    For i =  1  To  5 
        key = key & Format$(bytes(i)) & vbCrLf
    Next i

    ' text
    For i =  5  To file_length ' <--- Вот тут у меня выпадает ошибка (file_length = 42342912)
        txt = txt & Format$(bytes(i)) & vbCrLf
    Next i
    
    Text1.Text = txt
    Text2.Text = key
End Sub
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37171220
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
For i =  5  To file_length ' <--- Вот тут у меня выпадает ошибка (file_length = 42342912)

смотрим выше:
Код: plaintext
Dim i As Integer

Читаем сообщение об ошибке: Overflow, что непонятно?
далее смотрим хелп, какое максимальное число можно засунуть в Integer и делаем выводы.
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37171270
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kalamfur,
try it
Код: plaintext
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.
' **********************************
Function cutfile$(sFN$)
Dim f%, i%, skey$
Dim b As Byte, b0 As Byte
f = FreeFile
Open sFN For Binary As #f
For i =  1  To  5 
    Get f, i, b
    skey = skey & Hex(b)
    Put f, i, b0
Next i
Close #f
cutfile = skey
Debug.Print skey
End Function

' **********************************
Sub restorefile(sFN$, skey$)
Dim f%, i%
Dim b As Byte
f = FreeFile
Open sFN For Binary As #f
For i =  1  To  5 
    b = CByte("&H" & Mid(skey,  2  * i -  1 ,  2 ))
    Put f, i, b
Next i
Close f
End Sub

...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37173191
kalamfur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот так спасибо!)) то что нужно, скучающий гость )

Всем спасибо, друзья, здорово мне помогли.
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37173280
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kalamfur, можно за Вас порадоваться, раз Вам сдорово помогли!!!!
Читал топик так и не понял о чём речь
>требуется программно вырезать 5 первых символов из файла (чтоб он стал нечитаем) но, чтобы процесс был обратим. т.е. чтоб >можно было "воткнуть" символы обратно, и снова получить нормальный файл
В принципе это интересно и решение есть
Подскажите о каких файлах идёт речь, Ворд?? если да то спрошу ещё, интересно - вырезать 5 первых символов из файла, то есть из содержимго файла??? и что вырезаешь и его нельзя прочитать??? Заранее спасибо
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37173416
kalamfur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Ципихович Эндрю

авторПодскажите о каких файлах идёт речь, Ворд??
если да то спрошу ещё, интересно - вырезать 5 первых символов из файла, то есть из содержимго файла???
и что вырезаешь и его нельзя прочитать??? Заранее спасибо

Речь о любом файле, структуру которого можно таким образом повредить. (Обратимо)
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37173492
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kalamfur, очень хорошо, интерисует
Скрипт от Скукотищи от вчера, 02:23 как использовать??
Есть процедура restorefile(sFN$, skey$) то ей надо давать под переменными sFN$, skey$???
Есть функция cutfile$(sFN$), но нет намёка из процедуры когда пойдёт в эту функцию???
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37173551
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эндрю. Вы код читали, или опять просите всё разжевать?
CutFile() изменит первые пять байт и вернёт последовательность, которую вы затем можете использовать в RestoreFile() в качестве ключа...
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37173570
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM, что ж семь бед один ответ ...
надо разжевать, но не сильно ...
Как мне этот код выполнить пошагово? остальное должен понять, начинать с чего?
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37174116
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну есть у меня файл, например "C:\Documents and Settings\user1\Рабочий стол\1.doc" как с ним проделать - обратимо его повредить и восстановить в дальнейшем??
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37174134
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ципихович Эндрю,
пошагово
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
0) сделать копию файла C:\Documents and Settings\user1\Рабочий стол\1.doc
1) создать новый/открыть существующий файл Word (не C:\Documents and Settings\user1\Рабочий стол\1.doc !)
2) перейти в редактор VBA
3) в любой модуль скопировать код  отсюда  
4) в Immediate набрать:
?cutfile("C:\Documents and Settings\user1\Рабочий стол\1.doc")
нажать [Enter]
5) скопировать в безопасное место вывод функции cutfile (строка длиной десять символов)
6) попробовать открыть в Word файл C:\Documents and Settings\user1\Рабочий стол\1.doc
7) закрыть C:\Documents and Settings\user1\Рабочий стол\1.doc
8) вернуться в редактор VBA файла открытого/созданного на первом шаге
9) в Immediate набрать:
restorefile "C:\Documents and Settings\user1\Рабочий стол\1.doc", "<"ключ", сохраненный на пятом шаге>"
нажать [Enter]
10) попробовать открыть в Word файл C:\Documents and Settings\user1\Рабочий стол\1.doc
11) если файл C:\Documents and Settings\user1\Рабочий стол\1.doc не отрывается, - восстановить его из копии, созданной на нулевом шаге
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37174141
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скукотища, ничего себе сколько операций, попробуюююююююю, спасибо
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37174245
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всё ОК, спасибо!!!!!, чуть не удачно пункт 9 расписан у Вас, надо
restorefile "C:\Documents and Settings\user1\Рабочий стол\1.doc", "D0CF11E0A1" где "D0CF11E0A1" это ключ
меня смущает, что два раза пробовал с одним файлом, один и тот же ключ выдавал, не пробовал, а если он всем файлам один и тот же ключ выдаёт, странно что ключи в столбик два штуки подряд одинаковые, Ваден-Баден??? но это мелочи
Главное, никакой автоматизации как этим пользоваться без этой интермедии, то есть есть файл - макрос испортить файл, макрос испорченный файл исправить?? Заранее спасибо
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37174281
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ципихович Эндрю,Ципихович Эндрюстранно что ключи в столбик два штуки подряд одинаковые, Ваден-Баден???Если так напрягает, то закомментируйте строку
Код: plaintext
Debug.Print skey

Ципихович ЭндрюГлавное, никакой автоматизации как этим пользоваться без этой интермедии, то есть есть файл - макрос испортить файл, макрос испорченный файл исправить??Хчешь быть счастливым, - будь им.(с)Козьма Прутков
Надо макрос "испортить файл/испорченный файл исправить", - напишите. Кто ж не даёт?
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37174317
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скукотищаХ о чешь быть счастливым, - будь им.(с)Козьма Прутков
Надо макрос "испортить файл/испорченный файл исправить", - напишите. Кто ж не даёт?

Тряхнул стариной :

Код: plaintext
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.
Sub Испортить_файл()

'испортить можно только не открытый файл
Dim sFN$
'место расположения и имя требуемого испортить файла
sFN$ = "C:\Documents and Settings\user1\Рабочий стол\1.doc"

Dim f%
Dim i%
'ключ
Dim skey$
Dim b As Byte
Dim b0 As Byte

f = FreeFile
Open sFN For Binary As #f
For i =  1  To  5 
    Get f, i, b
    skey = skey & Hex(b)
    Put f, i, b0
Next i
Close #f

Debug.Print skey

End Sub

Sub Исправить_испорченный_файл()

Dim f%
Dim i%
Dim b As Byte

Dim sFN$
'место расположения и имя требуемого исправить ранее испорченого файла
sFN$ = "C:\Documents and Settings\user1\Рабочий стол\1.doc"
'ключ, который был получен, перед тем как испортить файл
Dim skey$
skey$ = "D0CF11E0A1"

f = FreeFile
Open sFN For Binary As #f
For i =  1  To  5 
    b = CByte("&H" & Mid(skey,  2  * i -  1 ,  2 ))
    Put f, i, b
Next i
Close f

End Sub

Вопрос назрел, перед испорчением можно его, код сохранить там внутри, наподобии
ActiveDocument.Variables.Add "Код", сам код
А затем его перед восстановлением взять оттуда и восстановить
2 Какова вероятность, что код кто то подберёт???
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37174326
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ципихович Эндрю,
сохранить можно запросто, а вот "взять оттуда перед восстановлением" уже будет несколько проблематично. Т.к. чтобы добраться до ActiveDocument.Variables надо этот "ActiveDocument" открыть в Word.
По поводу того, что "кто то код подберет" вразумительного ответа дать не могу, т.к. не знаю, что хранится в первых пяти байтах вордовского документа.
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37174385
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скукотища, понял, спасибо, так и не понял, можно файлы портить устанавливая свой код для дальнейшего восстановления???
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37174390
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ципихович Эндрю,
можно, конечно.
Но это будет уже другая история(с).

Найдте в себе силы, разберитесь, ЧТО ИМЕННО делают функция cutfile и процедура restorefile. Бездумное копирование ничего Вам не даст...
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37174402
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скукотища, ОК, начинаю разбираться, если что спрошу
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37174412
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я конечно подддаюсь обучению, но не до такой же степени, первый тычёк
подскажите пожалуйста строка f = FreeFile
что делает, что такое "FreeFile", её проходишь f = 1 ???????
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37174498
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ципихович Эндрю,
встроенная справка - великая силаFreeFile Function

Returns an Integer representing the next file number available for use by the Open statement.

Syntax

FreeFile[(rangenumber)]

The optional rangenumber argument is a Variant that specifies the range from which the next free file number is to be returned. Specify a 0 (default) to return a file number in the range 1 – 255, inclusive. Specify a 1 to return a file number in the range 256 – 511.

Remarks

Use FreeFile to supply a file number that is not already in use.
ЗЫ: знание, хотя бы зачаточное, английского - обязательно.
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37174639
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скукотища,

гугл выручает:
Функция FreeFile
Возвращает целое число, представляющее следующий номер файла доступны для использования в заявлении "Открыть".
Синтаксис
FreeFile [(rangenumber)]
Дополнительный аргумент rangenumber является вариант, который определяет диапазон, из которого следующий свободный номер файла должен быть возвращен. Укажите 0 (по умолчанию), чтобы вернуть файл число в диапазоне 1 - 255, включительно. Укажите 1, чтобы вернуться номер файла в диапазоне 256 - 511.
Замечания
Используйте FreeFile на поставку номер файла, который уже не используется.

Сейчас буду разбираться

Что придумал, после закрытия файла - автоматом портим его, а по открытию автоматом вызываем форму, ту которая появляется если файл был бы запаролен. Юзер увидел форму, побежал к знакомому, мол узнай код файла. Тот в недоумении нет кода. Класс?? Вопрос как Вам эта мысль??? Понятно, что в зависимости от квалификации друга у юзера он может понять, как поймёт???, как отличит???
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37176115
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нмного прояснилось, подскажите пожалуйста, не пойму откуда в сроке: Get f, i, b
берётся b??
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37176136
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю,

скукотищаЦипихович Эндрю,
встроенная справка - великая сила

GetGet Statement

Reads data from an open disk file into a variable.

Syntax

Get [#]filenumber, [recnumber], varname

The Get statement syntax has these parts:

Part Description
filenumber Required. Any valid file number.
recnumber Optional. Variant (Long). Record number (Random mode files) or byte number (Binary mode files) at which reading begins.
varname Required. Valid variable name into which data is read.

Remarks

Data read with Get is usually written to a file with Put.

The first record or byte in a file is at position 1, the second record or byte is at position 2, and so on. If you omit recnumber, the next record or byte following the last Get or Put statement (or pointed to by the last Seek function) is read. You must include delimiting commas, for example:

Get #4,,FileBuffer

Если что и непонятно - то только ваш вопрос. Поскольку "переменной b" там "браться откуда-то" незачем.
GET - это процедура, которая (в вашем случае) помещает увквзанный байт из файла в эту переменную ...
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37176200
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM, да уж справка великая сила, итак GET, гугл тут как тут:
Получить Заявление
Читает данные из открытого файла на диске в переменную.
Синтаксис
Получить [#] НомерФайла, [recnumber], VarName
Получить заявление синтаксис этих частей:
Часть Описание
Номер_файла обязательно. Любой допустимый номер файла.
recnumber Факультативного. Variant (Long). Рекордное число (Случайные файлы режиме) или номер байта (двоичные файлы режиме), при которой начинается чтение.
VarName обязательно. Допустимое имя переменной, в которой данные считываются.
Замечания
Данные, считываемые с Получите, обычно записываются в файл с нанесенными.
Первая запись или байт в файле находится в позиции 1, вторая запись или байт в положение 2, и так далее. Если вы опустите recnumber, следующая запись или байт, следующий за последним Получить или положить заявление (или, на который указывает последняя функция Seek) читается. Вы должны включить разграничения запятыми, например:
Получить # 4,, FileBuffe

Где Вы это всё ищете? Далее чтобы не утомлять ищу в справке ВБА Put - Поиск не дал результатов, так же как и Get горе
Одним словом всё равно пока не доходит
В то же время после строки
Open sFN For Binary As #f
вставил
Код: plaintext
1.
2.
3.
Количество_открытых_документов_Word = Documents.Count
For i =  1  To Documents.Count
MsgBox (Documents.Item(i).Name & " - документ номер " & i)
Next 
Количество_открытых_документов_Word стало равно 1
Странно, в этот момент на панели задач было два файла Ворд
не считая того что я так и не понял строкой Open sFN For Binary As #f
я его открыл ли?
Нужны подсказки, пожалуйста
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37176277
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эндрю, вам же советовали:
ЗЫ: знание, хотя бы зачаточное, английского - обязательно.Добавлю: собственое знание , а не умение "переводить электронными переводчиками".

Кроме того, начните уже разбираться в коде, а не постоянно использовать готовый.
Мыслите алгоритмами, а не кусками кода VBA.
Я вот специально "не стал замечать" кое-какие фичи в приведённом вам Скуткотищей примере. Ибо сам грешен тем же...

Ну и по вашему последнему вопросу - а с какого перепугу вы решили, что процедура OPEN [#] имеет отношение к Application.Open()?
Низкоуровневый доступ к любому файлу в ФС, и открытие приложением собственного хранилища данных - это как бэ две разные вещи...
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37176465
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTMЯ вот специально "не стал замечать" кое-какие фичи в приведённом вам Скуткотищей примере
Уажаемый Скуткотища, есть код без фичи, может там что пойму, спасибо
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37176508
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ципихович Эндрю,
слона то я и не заметил фич в вышеприведенном коде не наблюдаю. Там всё просто, как двери. Открыть файл, считать байт, обнулить байт, преобразовать число в его шестадцатеричное представление, соединить строки.
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37178034
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скукотища, и как в эту ясность:
Открыть файл, считать байт, обнулить байт, преобразовать число в его шестадцатеричное представление, соединить строки.
Втиснуть:
чтобы не мне выдавало код, а я заказывал его

Увы для меня, это не почти тоже самое, что 2+2+2=2*3
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37178038
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а почему именно в шестадцатеричное представление???
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37178247
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ципихович Эндрюскукотища, и как в эту ясность:
Открыть файл, ...
Втиснуть:
чтобы не мне выдавало код, ...Не код! Первые пять байт файла...

Ципихович Эндрю..., а я заказывал егоДля начала, - определиться с методом "шифрования".

Ципихович Эндрюа почему именно в шестадцатеричное представление??? Решил результат сохранять в строковой переменной. Для данной задачи (сохранить пять первых байт вордовского документа) Hex(x) понравилось больше, чем Format(x,"000") или конкатенация с разделителем. Всё изложенное - сугубо имхо.
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37178422
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скукотища,

И будем ещё говорить, что не было особенностей?
Ладно, распишу "фичи" для ЦЭ (сугубое ИМХО, и если меня поправите - не обижусь)
Итак
Код: plaintext
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.
Function cutfile$(sFN$)
' здесь Автором указано, что описываем "функцию", причём возвращающую символьное значение, причём параметром для этой функции тоже является символьное значение. В идеологии VB - переменные будут приведены к данному типу при исполнении кода.
Dim f%, i%, skey$
' здесь Автор заводит локальные переменные, причём указанных типов
' также запомним, что при явном указании типа переменная инициализируется "пустым" значением данного типа
Dim b As Byte, b0 As Byte
' здесь то же самое, что выше
f = FreeFile
' это уже обсудили. Замечу, что =FreeFile() возвращает число - указатель на файл, либо код ошибки
' при этом, если всё нормально - файл оказывается открытым для прямого доступа
Open sFN For Binary As #f
' во-первых, ЦЭ надо изучить действие OPEN, затем опцию FOR BINARY, затем ещё понять, почему указано именно #f, а не просто f...
For i =  1  To  5 
' это мы делаем цикл со счетчиком от 1 до 5
    Get f, i, b
' это получаем из файла, открытого с номером f, байт под номером i, и записываем это байт в переменную b (числовую)
    skey = skey & Hex(b)
' это мы добавляем справа в символьную переменную символьное же значение прочитанного байта в шестнадцатиричном формате
    Put f, i, b0
' а это мы пишем прямо в файл на место запомненного байта - содержимое из переменной b0. Как помним, проинициализированную  значением 0.
Next i
Close #f
' закрываем файл
cutfile = skey
' ну и возвращаем в качестве значения функции - сформированный нами символьный код первых пяти байт
Debug.Print skey
End Function

С точки зрения программиста - код почти идеален (ну, можно было еще добавить параметрами количество байт, вид операции замены...) С точки зрения нуба - "код делает что-то, но в тонкости мы не вдаёмся".
Так что я остаюсь на своей позиции - надо учить пониманию алгоритмов, а не давать готовые примеры. Иначе... - будем иметь новую Висту
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37178444
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,
Код: plaintext
1.
2.
3.
f = FreeFile
' это уже обсудили. Замечу, что =FreeFile() возвращает число - указатель на файл, либо код ошибки
' при этом, если всё нормально - файл оказывается открытым для прямого доступа
поправляю: файл оказывается открытым после выполнения инструкции Open.

ОФФ:AndreTM
Код: plaintext
1.
'... затем ещё понять, почему указано именно #f, а не просто f...
Сознаюсь: до сих пор не знаю, в чем "фича" записи #f в сравнении с просто f

AndreTMТак что я остаюсь на своей позиции - надо учить пониманию алгоритмов, а не давать готовые примерыДля меня "готовые примеры" всегда были лучшим пособием для "понимания алгоритмов". Не знаешь, что делает та или иная встроенная функция, - RTFM, не понимаешь, КАК работает тот или иной участок кода, - дебаггер в зубы и вперед за орденами... А когда уж совсем туго, - к людям за сочувствием.
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37178464
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скукотища,

Ага, по поводу OPEN - исправляюсь. Но написано-то было не для нас, а для них...

А вот другой камент надо прямо ЦЭ и демонстрировать: RTFM->Debugger->Forum. Вместо "What is shit?"->Forum->Flame
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37178499
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM, ПОНЯЛ, надо в строке:
Код: plaintext
1.
2.
3.
 Get f, i, b
' это получаем из файла, открытого с номером f, байт под номером i, и записываем это байт в переменную b (числовую)
    skey = skey & Hex(b)
НАПИСАТЬ, НАПРИМЕР:
Код: plaintext
1.
2.
Get f, i, b
' это получаем из файла, открытого с номером f, байт под номером i, и записываем это байт в переменную b (числовую)
    skey = skey &  1 
и КОД будет 11111
тогда когда исправляю файл, на строке
Код: plaintext
b = CByte("&H" & Mid(skey,  2  * i -  1 ,  2 ))
получаю ошибку 13 type mismaht ?????? ПОЧЕМУ
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37179275
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1 - это число, надо (хотя и непринципиально)
Код: plaintext
skey - skey & "1"
Ну и вообще-то смысла править именно эту строку нет, поскольку тогда вы обнулите первые пять байт в файле, а что именно порезали - знать не будете. Там суть возвращаемого значения как раз в том, что это те байты, которые мы "вырезали".
Ну и кроме того, пять байт в шестнадцатиричном символьном формате - это строка из десяти сиволов, а вы пытаетесь подпихнуть для обратного преобразования строку всего из пяти символов. Вот при i=4 и получаем CByte("&H") , что интерпретатору непонятно...
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37179923
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM, КАК КАЧЕЛИ ТО ПОНЯТНО ТО НЕ ОЧЕНЬ
ПОДСКАЖИТЕ ПОЖАЛУЙСТА, КАК УКАЗАТЬ КОД, А ПОТОМ СОГЛАСНО ЕГО "ПОВРЕДИТЬ" ФАЙЛ
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37183184
DMK67
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовал испортить файл GIF. Портится как положено... но не восстанавливается....
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37183256
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DMK67Попробовал испортить файл GIF. Портится как положено... но не восстанавливается...."Имя, сестра, имя! (с)"

То есть давайте полный пример вашего кода, которым "портили"...
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37184449
kalamfur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DMK67Попробовал испортить файл GIF. Портится как положено... но не восстанавливается....

Всё прекрасно работает. проверил. И на gif'ах тоже.
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37184460
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kalamfur, господин DMK67
масла в огонь подлил и сдюзнул
Та не знаете как по уже имеющемуся коду запаролить а не наоборот??
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37184577
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ципихович ЭндрюТа не знаете как по уже имеющемуся коду запаролить а не наоборот??например так
код на работоспособность не проверялся
Код: plaintext
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.
' **********************************************************
' File encoding/decoding using XOR function
' arguments:
'   sFileFullName, String, requared: full file name
'   sKey, String, requared:          key for edcoding/decoding
' returning values:
'   0: no errors; not 0: some error occured
Function ForCESpecialBreakRepear%(sFileFullName$, sKey$)
Dim n&, f%, b0 As Byte, b As Byte
Dim lFileLen&, lKeyLen&, lUBound&

On Error GoTo Fail

' ограничение допустимых символов "ключа"
'If sKey Like "*[!@$_0-9a-zA-Zа-яА-Я]*" Then
'    MsgBox "Недопустимый символ в ключе", vbExclamation + vbOKOnly, "Кина не будет"
'    ForCESpecialBreakRepear = &H100
'    Exit Function
'End If


f = FreeFile

' открыть файл для прямого доступа
Open sFileFullName For Binary As #f


' определить верхнюю границу цикла (на тот случай если ключ окажется длиннее файла)
lFileLen = LOF(f): lKeyLen = Len(sKey)
If lKeyLen < lFileLen Then lUBound = lKeyLen Else lUBound = lFileLen


' "испортить"/восстановить файл
For n =  1 & To lUBound
    b = CByte(Asc(Mid(sKey, n)))
    Get #f, n, b0: b = b Xor b0: Put #f, n, b
Next n

' закрыть файл
Close #f

NormExit:
    Exit Function

Fail:
    ' обработчик ошибок написать самостоятельно
    ForCESpecialBreakRepear = &H112
    Resume NormExit
End Function
ЗЫ: используется то свойcтво операции XOR, что
Код: plaintext
a XOR b XOR b == a
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37184596
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скукотища, СПАСИБО
Закину, испорченный файл в топик, интересно прочитают
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37188063
DMK67
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если отщипывать первые 5 байт от файла GIF, то действительно все работает.
Но код у любого файла получается одинаковый. 10 цифр.
4749463839
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Sub Испортить_файл()
Dim sFN$
sFN$ = "C:\1.gif"

Dim f%
Dim i%
Dim skey$
Dim b As Byte
Dim b0 As Byte

f = FreeFile
Open sFN For Binary As #f
For i =  1  To  5     
Get f, i, b
skey = skey & Hex(b)
Put f, i, b0
Next i
Close #f
Debug.Print skey

End Sub
Пытаюсь отщипнуть 10 байт.
Меняю в коде:
Код: plaintext
1.
For i =  1  To  10  

Код получается 18 знаков:
4749463839617797ED

Начинаю восстанавливать файл:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Sub Исправить_испорченный_файл()

Dim f%
Dim i%
Dim b As Byte

Dim sFN$
'место расположения и имя требуемого исправить ранее испорченого файла
sFN$ = "C:\Program Files\001_DKE\1003D\FGH\1\2.gif"
'ключ, который был получен, перед тем как испортить файл
Dim skey$
skey$ = "4749463839617797ED"
f = FreeFile
Open sFN For Binary As #f

[color=red]'меняю 5 на 10[/color]
For i =  1  To  10 
   [color=red] b = CByte("&H" & Mid(skey,  2  * i -  1 ,  2 ))[/color]   [color=green]'вылезает 13 ошибка[/color]
    Put f, i, b
Next i
Close f

End Sub

В чем причина?
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37188075
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DMK67, а что такое несоответствие
sFN$ = "C:\1.gif"

и

sFN$ = "C:\Program Files\001_DKE\1003D\FGH\1\2.gif"
ну ладно путь, а имя файла
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37188085
DMK67
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Немного неакуратно загрузил... вот макрос не воспринимающий код 4749463839617797ED

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Sub Исправить_испорченный_файл()
Dim f%
Dim i%
Dim b As Byte
Dim sFN$
sFN$ = "C:\2.gif"
Dim skey$
skey$ = "4749463839617797ED"
f = FreeFile
Open sFN For Binary As #f

'меняю 5 на 10
For i =  1  To  10 
b = CByte("&H" & Mid(skey,  2  * i -  1 ,  2  'вылезает 13 ошибка
Put f, i, b
Next i
Close f
End Sub
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37188097
DMK67
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проверил Ваше замечание: все равно не работает... А вот пару знаков добавляю и все срабатывает...но файл как был поврежденный так им и остается
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37188176
DMK67
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Из файла doc извлекся следующий код D0CF11E0A1B11AE100
и тоже интерпритатор его на дух не воспринимает... та же 13 ошибка... т.е. явно проблнма в коде для извлечения данных
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37188183
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DMK67,

ну если всё так:
b = CByte("&H" & Mid(skey, 2 * i - 1, 2 'вылезает 13 ошибка
То как минимум вопрос, где 2 скобки закрывающие
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37188338
DMK67
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Эндрю, не докапывайтесь до ошибок при загрузке на форум... НУ нету здесь возможности редактировать топики.
естественно у меня в файле все нормально... Проблема то в коде извлечения... почему 10 байт извлекаются некорректно?
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37188404
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: DMK67
> Эндрю, не докапывайтесь до ошибок при загрузке на форум...

+1
Потерял где актуальный код.

> Автор: DMK67

А почему при восстановлении ничего не читается из файла, а только пишется? Или не корректный код выложен?

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37188824
DMK67
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сейчас файл-пример состряпаю в Excel
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37188864
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DMK67... Проблема то в коде извлечения... почему 10 байт извлекаются некорректно?код, который Вы бездумно пытаетесь юзаеть писался исключительно для задачи ТС .
Хотите "отщипывать" другое кол-во байт, из файлов другогих типов - включайте мозг. найдите в себе моральные силы разобраться в дюжине строчек кода.

ЗЫ: типа "доброго совета":
обратите внимание на строки
Код: plaintext
skey = skey & Hex(b)
в Испортить_файл
и
Код: plaintext
b = CByte("&H" & Mid(skey,  2  * i -  1 ,  2 ))
в Исправить_испорченный_файл
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37188870
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скукотища, закинул я испорченный файл в топик, было интересно прочитают ли. Начали говорить, что некогда, сериал смотреть охота, сериал любимый, сериал бразильский
Не проверял, а что правда, что код у любого файла один и тот же? дума врут, особенно где я сам назначаю
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37188883
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ципихович ЭндрюНе проверял, а что правда, что код у любого файла один и тот же? дума врут, особенно где я сам назначаю-Папенька, скока раз павтарять, - ихняя прафесия паликмахер.(с)
Если Вы об этом , то там НЕ КОД, а первые пять байт файла... Файлы одинакового типа == одинаковые заголовки == (если заголовки длиной более 4-х байт) "код" (прости, Господи) одинаковый...
Если особенно где я сам назначаю , то врут. Однозначно.
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37188898
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скукотища, приятно поговорить с человеком, который не смотрит бразильские сериалы, спасибо
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37189148
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эндрю, я вот тоже сериалы не смотрю. И мы ведь не поленились отвлечься на вас ещё неделю назад. И советы были те же самые, что и сейчас повторяются - разберитесь в коде. Я вот смотрел-смотрел на ваши сообщения - так и не понял, в чём была у вас проблема с "порчей/восстановлением" файла. Ну, за исключением проблемы "усё таки прочитал с пятого раза..."
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37189344
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTMЭндрю
1 мы ведь не поленились отвлечься на вас ещё неделю назад
2 проблема с "порчей/восстановлением" файла
3 за исключением проблемы "усё таки прочитал с пятого раза..."

1. спасибо
2. сейчас её нет
3. иногда бывает
ЗЫ сейчас интерисует одно - есть код где я, ЦЭ сам назначаю, пароль от 27 мар 11, 15:42
Ваше мнение, откроют ли файл испорченный мною юзеры? профи?
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37189408
kalamfur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot Ципихович Эндрю]AndreTMоткроют ли файл испорченный мною юзеры? профи?

Первое, что приходит на ум - а кому он нужен?
но если он всё же, кому-то понадобится, значит вполне возможно, что человек бывает на этом форуме, и видит тему, которую вы уже две недели держите на плаву. Может ему и не лень будет пабайтно перебрать файл. и тогда да, файл вполне можно восстановить.
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37189460
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kalamfur1
тему, которую вы уже две недели держите на плаву
2
Может ему и не лень будет пабайтно перебрать файл. и тогда да, файл вполне можно восстановить.

1.Я не держу её на плаву, давным давно сказал спасибо пятым шрифтом, это вопросы к DMK67
2.Я Вас за язык не тянул Подскажите, пожалуйста скрипт восстановления, если не знаешь код, спасибо
...
Рейтинг: 0 / 0
[vb6.0 ]отрезаем фрагмент файла
    #37189701
kalamfur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
никаких скриптов нет. просто если не один вы такой одаренный, то кто-то еще может догадаться до этого метода, и прочесть побайтно. и тут всё зависит от того, как сильно вы убивали файл.
...
Рейтинг: 0 / 0
73 сообщений из 73, показаны все 3 страниц
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / [vb6.0 ]отрезаем фрагмент файла
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]