Страница: 1 |
надо вот такое: for i = 0 to 100 b0 = 0 b1 = 1 b2 = 0 b3 = 1 b4 = 0 b5 = 1 b6 = 0 b7 = 1 записать b0,b1,b2,b3,b4,b5,b6,b7 в байт сохранить байт в файле увеличить адрес байта в файле next i всё это на vba в экселе , чтоб и в таблицу выводилось и в файл записывалось. Зараннее спасибо.
Следующий код должен быть в модуле книги 'Константы единичных значений битов Const BIT_0 As Byte = 1 Const BIT_1 As Byte = 2 Const BIT_2 As Byte = 4 Const BIT_3 As Byte = 8 Const BIT_4 As Byte = 16 Const BIT_5 As Byte = 32 Const BIT_6 As Byte = 64 Const BIT_7 As Byte = 128 Private Sub PrintFile(ByVal Filename As String) Dim i As Integer Dim b As Byte Dim ws As Worksheet 'Находим в книге рабочий лист For Each ws In Me.Worksheets If ws.Type = xlWorksheet Then GoTo PF Next ws MsgBox "Не найдено ни одного рабочего листа." Exit Sub PF: On Error GoTo err_PrintFile 'Пишем в файл Open Filename For Binary As #1 For i = 1 To 100 b = BIT_1 Or BIT_3 Or BIT_5 Or BIT_7 Put #1, i, b ws.Cells(i, 1).Value = b Next i Close Exit Sub err_PrintFile: MsgBox "Ошибка записи в файл." Close End Sub Public Sub Run() 'Запуск макроса PrintFile "Test.bin" End Sub спасибо я чуть чуть не правильно задал вопрос : b0...b7 принимают значения исходя их этого: for i = 0 to 100 b0 = iif(sin(2 * Pi * 700 * i * 61 / 100000)> 0 , 1 ,0) b1 = iif(sin(2 * Pi * 900 * i * 61 / 100000)> 0 , 1 ,0) b2 = iif(sin(2 * Pi * 1100 * i * 61 / 100000)> 0 , 1 ,0) b3 = iif(sin(2 * Pi * 1300 * i * 61 / 100000)> 0 , 1 ,0) b4 = iif(sin(2 * Pi * 1500 * i * 61 / 100000)> 0 , 1 ,0) b5 = iif(sin(2 * Pi * 1700 * i * 61 / 100000)> 0 , 1 ,0) b6 = 0 b7 = 0 то есть два старших бита - 6 и 7 - всегда нули , а оставшиеся в зависимости от выражения , принимают 0 или 1 Зараннее спасибо. b0 = iif(sin(2 * Pi * 700 * i * 61 / 100000)> 0 , 1 ,0) * BIT_0 b1 = iif(sin(2 * Pi * 900 * i * 61 / 100000)> 0 , 1 ,0) * BIT_1 b2 = iif(sin(2 * Pi * 1100 * i * 61 / 100000)> 0 , 1 ,0) * BIT_2 b3 = iif(sin(2 * Pi * 1300 * i * 61 / 100000)> 0 , 1 ,0) * BIT_3 b4 = iif(sin(2 * Pi * 1500 * i * 61 / 100000)> 0 , 1 ,0) * BIT_4 b5 = iif(sin(2 * Pi * 1700 * i * 61 / 100000)> 0 , 1 ,0) * BIT_5 b=b1 or b2 or b3 or b4 or b5 ОГРОМНОЕ СПАСИБО !!! спасли от вскипания мозга ! Зайди в чат Страница: 1 |
Вопрос: знаю что это просто , но не знаю как :) помогит...
Добавлено: 27.05.03 00:24
Автор вопроса: Larionoff | ICQ: 68400264
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
USA
Вопросов: 1
Ответов: 184
Профиль | | #1
Добавлено: 27.05.03 00:59
Номер ответа: 2
Автор ответа:
Larionoff
ICQ: 68400264
Вопросов: 3
Ответов: 3
Профиль | | #2
Добавлено: 27.05.03 01:27
Номер ответа: 3
Автор ответа:
USA
Вопросов: 1
Ответов: 184
Профиль | | #3
Добавлено: 27.05.03 02:08
Номер ответа: 4
Автор ответа:
Larionoff
ICQ: 68400264
Вопросов: 3
Ответов: 3
Профиль | | #4
Добавлено: 27.05.03 02:17
Номер ответа: 5
Автор ответа:
Larionoff
ICQ: 68400264
Вопросов: 3
Ответов: 3
Профиль | | #5
Добавлено: 27.05.03 03:32
чё то не заработало - BIT_x не меняет своего значения - как был в 1 так и остаётся
Номер ответа: 6
Автор ответа:
USA
Вопросов: 1
Ответов: 184
Профиль | | #6
Добавлено: 27.05.03 03:41