Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Basic / VBA


Хостинг Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг на Windows 2008

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

Чемпионы рейтинга экспертов в этой рассылке

Шичко Игорь
Статус: Практикант
Рейтинг: 119
∙ повысить рейтинг >>
6a3uJI
Статус: 7-й класс
Рейтинг: 84
∙ повысить рейтинг >>
megaloman
Статус: Практикант
Рейтинг: 35
∙ повысить рейтинг >>

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Basic/VBA

Выпуск № 845
от 29.12.2008, 22:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 263, Экспертов: 27
В номере:Вопросов: 1, Ответов: 1

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>

Вопрос № 155680: Привет всем! Нужна программа на Visual Basic 6 для работы с файлом данных одной проги. Часть бинарного файла имеет следующий вид (в winhex): <div style="margin:15px; margin-top:10px"><div><b><font color="gray">Код:</font></b></div><pre styl...


Вопрос № 155.680
Привет всем!
Нужна программа на Visual Basic 6 для работы с файлом данных одной проги.
Часть бинарного файла имеет следующий вид (в winhex):
Код:
... 44 65 6C 61 79 05 00 00 00 44 65 6C 61 79 56нулевыхкодов код-контроль тринулевыхкода задержка1 56нулевыхкодов код-контроль тринулевыхкода
задержка2 ... 56нулевыхкодов 02 тринулевыхкода 31 75 ...

где задержка1 - это группа кодов вида число+символ (например, 1u, 543m, 235532p в текстовом виде), при этом символ может быть только n, u, m или s и число нулем не может быть (0s, 0m, ...);
код-контроль - число кодов для записи зыдержки (те для 1u - 02, для 343u - 04 и тд);
44 65 6C 61 79 - и есть слово Delay.
Нужен код, который бы изменял задержку на введенную пользователем, при этом ко д-контроль тоже изменялся соотвественно. Если задержка, введенняя пользователем, имеет разрядов больше/меньше, то длина файла изменяется на эту величину.

Буду очень признателен!!
Спасибо!
Отправлен: 24.12.2008, 21:19
Вопрос задал: Cpulimit (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: HookEst
Здравствуйте, Cpulimit!
Что нибудь вроде:
Код:

'код модуля формы с кнопкой Command1
Option Explicit
Option Compare Binary

Private Function FileGetContents(ByVal aFile As String) As String
Open aFile For Binary As #1
FileGetContents = String$(FileLen(aFile), " ")
Get #1, , FileGetContents
Close #1
End Function

Private Sub FilePutContents(ByVal aFile As String, ByVal aStream As String)
Kill aFile
Open aFile For Binary Access Write As #1
Put #1, , aStream
Close #1
End Sub

Private Function ReadDelay(ByVal aStream As String, ByVal aPos As Long, ByRef aValue As String) As Boolean
Dim Code As Byte
If Mid$(aStream, aPos, 56) = String$(56, vbNullC har) Then
Code = Asc(Mid$(aStream, aPos + 56, 1))
aValue = Mid$(aStream, aPos + 56 + 1 + 3, Code)
If aValue Like "[1-9]" & String$(Code - 2, "#") & "[nums]" Then
ReadDelay = True
End If
End If
End Function

Private Function WriteDelay(ByRef aStream As String, ByVal aPos As Long, ByVal aValue As String)
Dim Code As Byte
If Not aValue Like "[1-9]" & String$(Len(aValue) - 2, "#") & "[nums]" Then Exit Function
If Mid$(aStream, aPos, 56) <> String$(56, vbNullChar) Then Exit Function
Code = Asc(Mid$(aStream, aPos + 56, 1))
Mid$(aStream, aPos + 56, 1) = Chr$(Len(aValue))
aStream = Mid$(aStream, 1, aPos + 56 + 3) & aValue & Mid$(aStream, aPos + 56 + 1 + 3 + Code)
WriteDelay = True
End Function

Private Sub Command1_Click()
Dim Signature As String
Dim Stream As String
Dim Pos As Long
Dim Code As String
Dim Value As String
Dim NewValue As String

Signature = "Delay" & Chr(5) & String$(3, vbNullChar) & "Delay"

Stream = FileGetContents("D:downloadsex1.tnt")
Pos = InStr(1, Stream, Signature, vbBinaryCompare)
If Pos = 0 Then
MsgBox "Signature not found!"
Exit Sub
End If
Pos = Pos + Len(Signature)
While ReadDelay(Stream, Pos, Value)
NewValue = InputBox("Enter new value for delay ", , Value)
If NewValue <> "" Then
If WriteDelay(Stream, Pos, NewValue) Then
Pos = Pos + 56 + 1 + 3 + Len(NewValue)
Else
Pos = Pos + 56 + 1 + 3 + Len(Value)
End If
Else
Pos = Pos + 56 + 1 + 3 + Len(Value)
End If
Wend

FilePutContents "D:downloadsex1_new.tnt", S tream
End Sub

Успехов.
Ответ отправил: HookEst (статус: Специалист)
Ответ отправлен: 26.12.2008, 03:54

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 239683 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вы имеете возможность оценить этот выпуск рассылки.
    Нам очень важно Ваше мнение!
    Оценить этот выпуск рассылки >>

    Отправить вопрос экспертам этой рассылки

    Приложение (если необходимо):

    * Код программы, выдержки из закона и т.п. дополнение к вопросу.
    Эта информация будет отображена в аналогичном окне как есть.

    Обратите внимание!
    Вопрос будет отправлен всем экспертам данной рассылки!

    Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
    экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


    Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
    Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров >>

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2008, Портал RusFAQ.ru, Россия, Москва.
    Авторское право: ООО "Мастер-Эксперт Про"
    Техподдержка портала, тел.: +7 (926) 535-23-31
    Хостинг: "Московский хостер"
    Поддержка: "Московский дизайнер"
    Авторские права | Реклама на портале

    ∙ Версия системы: 5.13 от 01.12.2008

    Яндекс Rambler's Top100
    RusFAQ.ru | MosHoster.ru | MosDesigner.ru
    RusIRC.ru | Kalashnikoff.ru | RadioLeader.ru

    В избранное