Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Неадекватный тип String / 8 сообщений из 8, страница 1 из 1
18.04.2010, 12:02
    #36584170
cynep kopoBka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неадекватный тип String
Здравствуйте.
В рамках реализации задачи совершаю следующие действия:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
    Dim n As Integer
    tt_str = ""
    tt_str = Rich1.TextRTF
    For n =  1  To Flex1.Rows -  1  'цикл по файлам
            ' добавляем признак начала файла и его имя
            tt_str = tt_str & "<!!!f(" & Flex1.TextMatrix(n,  1 ) & ")"
            ' размер файла  
            t_vol = FileLen(Flex1.TextMatrix(n,  0 )) 
            Dim s As String
            fchan = FreeFile
            Open Flex1.TextMatrix(n,  0 ) For Binary As #fchan
            
                s = Input(t_vol, #fchan)
            
            Close #fchan
             ' добавляем к общей массе содержимое файла и признак его окончания
            tt_str = tt_str & s & "f!!!>"
    Next
    tt_str = Encrypt(tt_str, ik)
    Timer1.Enabled = False
    SendMail Text1.Text, Text2.Text, tt_str
    Timer1.Enabled = True
Если файлы маленькие, то они без проблем упаковываются. А вот если большие, то перестают добавляться признаки окончания файла и признаки начала. Остается признак начала только у 1 файла.
Может ли это зависеть от того, что прога не успевает добавить содержимое переменной "s", и поэтому пропускает такие мелочи как предопределенные признаки?
И, что самое главное, как это можно пофиксить?
...
Рейтинг: 0 / 0
18.04.2010, 17:57
    #36584425
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неадекватный тип String
1) непонятно, что такое "большие" и что такое "маленькие"

2) что значит, перестает добавляться концовка? у вас вроде все происходит одной строкой:
Код: plaintext
tt_str = tt_str & s & "f!!!>"
Что дает точка останова на этой строке?

3) Может проблема в 14-й строке функции Encrypt?
...
Рейтинг: 0 / 0
19.04.2010, 04:47
    #36584749
cynep kopoBka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неадекватный тип String
Shocker.Pro1) непонятно, что такое "большие" и что такое "маленькие"

2) что значит, перестает добавляться концовка? у вас вроде все происходит одной строкой:
Код: plaintext
tt_str = tt_str & s & "f!!!>"
Что дает точка останова на этой строке?

3) Может проблема в 14-й строке функции Encrypt?
1) маленькие - это не более 32 килобайт. Большие - в моем случае конфуз обнаружен с 2-метровым файлом.
2) Вот именно. Все, вроде бы, предусмотрено, однако на поверку выходит, что новый файл становится следом за предыдущим, и между ними не оказывается " f!!!><!!!f(new_file_name) "
3) Encrypt не может являться источником проблемы, т.к. в этом случае он и первый кусочек " <!!!f(filename) " исключал бы не задумываясь. Но признак начала 1-го файла есть, а значит проблема где-то до Encrypt

К слову, Encrypt - функция шифрования по т.н. " Одноразовому блокноту ". Функция без багов. Стопудово.
...
Рейтинг: 0 / 0
19.04.2010, 04:51
    #36584750
cynep kopoBka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неадекватный тип String
ЗЫ: "точка останова" это признак окончания текущего файла. Таким образом можно еще и проверять, весь ли файл записан. Т.е. если нет признака окончания, значит файл, возможно записан не до конца либо передача письма была прервана.
...
Рейтинг: 0 / 0
19.04.2010, 09:27
    #36584869
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неадекватный тип String
1) ну а как получается? типа записались два маленьких файла с признаками, потом большой пошел без признаков, а потом маленькие опять пишутся с признаками?

2) под "точкой останова" я имер ввиду Breakpoint в отладчике. Поставить, посмотреть tt_str до, после присвоения...

3) я прохлопал, что шифрование идет после сериализации, так да, видимо в ней проблем нет, в любом случае, это можно проверить, просто отключив ее.

4) Странная у вас ситуация - не должен этот код глючить. Выкладывайте в виде рабочего проекта с набором тестовых файлов, на которых у вас не работает (можно без функции шифрования)
...
Рейтинг: 0 / 0
19.04.2010, 14:51
    #36585644
cynep kopoBka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неадекватный тип String
Там почтовый ActiveX лицензионный. И если вы не купите лицензию, то не сможете запустить проект.
Спасибо, я додумался, как решить проблему:
Загружаю все файлы в массив, потом объединяю с помощью JOIN(Array) . И делаю еще один аттач, в котором последовательно вписана инфа: "имя файла"|"начальная позиция в строке"|"длина файла" - по очереди для всех файлов.
...
Рейтинг: 0 / 0
19.04.2010, 14:56
    #36585663
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неадекватный тип String
cynep kopoBkaИ если вы не купите лицензию, то не сможете запустить проект.

я имел ввиду, рабочий кусок кода в виде отдельного проекта, с целью исследования глюка.

Ну решили - и ладно.
...
Рейтинг: 0 / 0
19.04.2010, 18:57
    #36586302
cynep kopoBka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неадекватный тип String
Shocker.Pro,

Все оказалось из-за чтения Binary . Я повесил функции загрузки файлов на FileSystemObject . Получил заметное ускорение.
В старом варианте в объем 2Мб не попадало порядка 7Кб.
Теперь все отлично работает.

Спасибо за Ваше участие.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Неадекватный тип String / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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