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