Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: знаю что это просто , но не знаю как :) помогит... Добавлено: 27.05.03 00:24  

Автор вопроса:  Larionoff | ICQ: 68400264 

надо вот такое:

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 в экселе , чтоб и в таблицу выводилось и в файл записывалось.

Зараннее спасибо.

Ответить

  Ответы Всего ответов: 6  

Номер ответа: 1
Автор ответа:
 USA



Вопросов: 1
Ответов: 184
 Профиль | | #1 Добавлено: 27.05.03 00:59

Следующий код должен быть в модуле книги

'Константы единичных значений битов

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

Ответить

Номер ответа: 2
Автор ответа:
 Larionoff



ICQ: 68400264 

Вопросов: 3
Ответов: 3
 Профиль | | #2 Добавлено: 27.05.03 01:27

спасибо

я чуть чуть не правильно задал вопрос :

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

 

Зараннее спасибо.

 

 

 

Ответить

Номер ответа: 3
Автор ответа:
 USA



Вопросов: 1
Ответов: 184
 Профиль | | #3 Добавлено: 27.05.03 02:08

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

Ответить

Номер ответа: 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

Зайди в чат

 

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам