Приложения к советам 322-334



Таблица 323 (к совету 323). Соответствие кодов цветов в DOS и Windwos

DOS (QuickBasic)             Windows (Visual Basic)

Код:        Название         Код                Название
десятичный  (точный перевод  шестнадцатеричный  (перевод Microsoft)
(двоичный)  с английского)

 0 (0000)   Черный           000000             Черный
 1 (0001)   Синий            800000             Темно-синий
 2 (0010)   Зеленый          008000             Темно-зеленый
 3 (0011)   Циан (Cyan)      808000             Бирюзовый
 4 (0100)   Красный          000080             Малиновый
 5 (0101)   Сиреневый        800080             Сиреневый
 6 (0110)   Коричневый       008080             Оливковый
 7 (0111)   Белый            C0C0C0             Светло-серый
 8 (1000)   Серый            808080             Темно-серый
 9 (1001)   Светло-синий     FF0000             Синий
10 (1010)   Светло-зеленый   00FF00             Зеленый
11 (1011)   Светлый циан     FFFF00             Голубой
12 (1100)   Светло-красный   0000FF             Красный
13 (1101)   Светло-сиреневый FF00FF             Розовый
14 (1110)   Желтый           00FFFF             Желтый
15 (1111)   Ярко-белый       FFFFFF             Белый

В начало статьи

Листинг 325 (к совету 325). Функции sBin$ и iBin% — представление числа в двоичной записи и наоборот

Public Function sBin$(Source%)
  ' Преобразование целого числа в
  ' символьное представление в двоичной системе счисления
  Dim StrBin$, lValue&
  ' эта конструкция нужна для учета знакового разряда
  If Source < 0 Then          'знаковый разряд равен единице
    lValue = (Source And &H7FFF) Or &H8000&
  Else: lValue = Source
  End If
  Do While lValue > 0
    StrBin = Chr((lValue Mod 2) + 48) + StrBin
    lValue = lValue \ 2 ' деление нацело
  Loop
  If StrBin = "" Then sBin = "0" Else sBin    = StrBin
End Function
   
Public Function iBin%(Source$)
  ' Преобразование символьной строки
  ' (числа в двоичной системе счисления) в целое число
  Dim lValue&, i%
  For i = 1 To Len(Source)
    If Mid(Source, i, 1) <> "0"    Then
      lValue = lValue + 2 ^    (Len(Source) - i)
    End If
  Next
  ' эта конструкция нужна для учета знакового разряда
  If (lValue And &H8000) > 0 Then
    iBin = (lValue And &H7FFF) Or &H8000
  Else: iBin = lValue
  End If
End Function

В начало статьи

Листинг 329 (к совету 329). Процедура ShowRecordSetASP выводит содержимое заданного набора данных в виде таблицы

Public Sub ShowRecordSetASP _
     (ASPResponse As ASPTypeLibrary.Response, _
      strConnectString$, strSQL$, strHeading$)
  ' Данная процедура:
  ' 1. Устанавливает соединение с источником данных ADO
  '      (нужна ссылка на MS ActiveX    Data Objects 2.x Library
  ' 2. Формирует набор данных
  ' 3. Выводит содержимое набора данных в виде таблицы
  '      в HTML-коде, который    записывается в ASP-страницу
  '      с помощью объекта Response
  ' Необходима ссылка на библиотеку MS Active Server Pages Object
  ' Должна быть записана в ActiveX DLL
  '—————————————————-
  Dim cnn As ADODB.Connection
  Dim rs As ADODB.Recordset
  Dim fldField As ADODB.Field
  Dim iCount%, RowBGColor$
  Set cnn = New ADODB.Connection
  Set rs = New ADODB.Recordset
  cnn.Open strConnectString$
  Set rs = cnn.Execute(strSQL)
  '
  ' формирование таблицы
  With ASPResponse
    .Write "<table cellpadding=3 border=0><tr>"
    .Write "<tr><td width=100% height=18" & _
           " colspan = " & rs.Felds.Count & _
           " bgcolor='#666699'>" & _
           "<p align=Center><font size=4 color='#ffffff'>" & _
           strHeading & "</font></tr>"
    'вывод    заголовков колонок — название полей
    .Write "<tr>"
    For Each fldField In rs.Fields
      .Write "<td bgcolor='#8f9fe9'>"    & fldField.Name & "</td>"
    Next
    .Write "</tr>"
    ' вывод записей в виде строк таблицы
    iCount = 1
    Do While Not rs.EOF
      .Write "<tr>"
      ' чередование цветов строк
      If iCount > 0 Then
        RowBGColor    = "'#c9c9c9'"
      Else: RowBGColor = "'#f5f5f5'"
      End If
      For Each fldField In rs.Fields
        .Write "<td bgcolor=" & RowBGColor & ">" & _
               fldField.Value & "</td>"
      Next
      .Write "</tr>"
      rs.MoveNext
      iCount = iCount Xor 1
    Loop
    .Write "</table>"
  End With
  rs.Close: cnn.Close
  Set rs = Nothing: Set cnn = Nothing
End Sub

В начало статьи