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

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


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

Лучшие эксперты в разделе

solowey
Статус: Профессионал
Рейтинг: 385
∙ повысить рейтинг »
Megaloman
Статус: Мастер-Эксперт
Рейтинг: 324
∙ повысить рейтинг »
Sergey V. Gornostaev
Статус: Специалист
Рейтинг: 46
∙ повысить рейтинг »

∙ Basic

Номер выпуска:1144
Дата выхода:23.05.2020, 11:45
Администратор рассылки:Андреенков Владимир (Академик)
Подписчиков / экспертов:15 / 13
Вопросов / ответов:3 / 8

Консультация # 130263: Здравствуйте, Уважаемые Эксперты! Прошу помочь с программой: неоходимо разработать универсальную программу перевода чисел из одной системы счисления в другую (в том числе и дробные числа). Подскажите какой-либо алгоритм, сайт или статью. Очень признателен!...
Консультация # 148882: Здравствуйте, подскажите как написать скрипт (vbs) для следующих действий: Указываем в скрипте каталог ( например: c:\test\ ), скрипт должен в этом каталоге и подкаталогах искать файлы (например test.txt), затем в этом файле заменять строку (напимер строка 3 с содержанием: teststroka1 = "1", "2") на test_stroka_234, сохраняе...
Консультация # 152775: Здравствуйте!П омогите, пожалуйста, с задачей:"Дан двумерный массив.Нужно определить в каком из столбцов число перемен знака наибольшее".Возникают сложности с составлением условия....

Консультация # 130263:

Здравствуйте, Уважаемые Эксперты! Прошу помочь с программой: неоходимо разработать универсальную программу перевода чисел из одной системы счисления в другую (в том числе и дробные числа). Подскажите какой-либо алгоритм, сайт или статью. Очень признателен!

Дата отправки: 02.04.2008, 20:00
Вопрос задал: Lordaleksej
Всего ответов: 3
Страница онлайн-консультации »


Консультирует Павленко Александр Геннадьевич:

Здравствуйте, Lordaleksej!
В Visual Basic 2005 есть замечательный набор методов System.Convert
Переводит практически из любой системы в любую!
И не требуется никаких "шаманских" процедур по переводу, коими я сам раньше увлекался ;)

Консультировал: Павленко Александр Геннадьевич
Дата отправки: 02.04.2008, 22:15
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Константин Павлов:

Здравствуйте, Lordaleksej!
Обсуждения алгоритмов перевода из одной системы счисления в другую Вы можете посмотреть здесь:
Системы счисления., Перевод чисел из одной в другую - ссылка

Рабочий код перевод чисел из 10й системы счисления в любую по выбору- ссылка ответ WeBsteR

Длинные ссылки.
-----
∙ Отредактировал: Николай Владимирович / Н.В. (Профессор)
∙ Дата редактирования: 02.04.2008, 23:32

Консультировал: Константин Павлов
Дата отправки: 02.04.2008, 23:29
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Черников Игорь Владимирович:

Здравствуйте, Lordaleksej!
В VBA, VB имеется тип Boolean - для хранения логических (булевых) значений, которые сохраняются как 16-разрядные (двухбайтовые) числа, но могут иметь только значения True или False. Переменные типа Boolean отображаются как строковые значения True или False при использовании метода Print. Для присваивания переменным логических значений ИСТИНА или ЛОЖЬ следует использовать ключевые слова True или False.
При преобразовании других числовых типов данных к типу Boolean значение 0 преобразуется в False, а все остальные значения преобразуются в True. Если значения типа Boolean преобразуются к другим типам данных, то False превращается в 0, а True в -1.По умолчанию значением булевской переменной является False- ложь.
Любое число можно представить в двоичном виде, а полученный набор нулей и единиц рассматривать как булевский вектор. Для получения представления числа в двоичном виде можно использовать следующий код:
Sub пример8()
Dim b As String
Dim s As Single
Dim a As Integer
b = ""
s = CSng(InputBox("Введи десятичное", "Ввод данных", 255))
Do While s > 0
a = s Mod 2#
b = CStr(a) + b
s = (s) \ 2#
Loop
MsgBox b, vbOKOnly, "Результат"
End Sub

Для преобразования двоичного представления числа в его десятичное значение можно использовать следующий код:
Sub пример9()
Dim b As String
Dim i As Integer, l As Integer, k As Integer, j As Integer
b = InputBox("Введи двоичное", "Ввод данных", 11111111)
l = Len(b)
i = 0
For k = l To 1 Step -1
j = CInt(Mid(b, k, 1))
i = i + j * 2 ^ (l - k)
Next
MsgBox i, vbOKOnly, "Результат"
End Sub

Консультировал: Черников Игорь Владимирович
Дата отправки: 03.04.2008, 17:44
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 148882:

Здравствуйте, подскажите как написать скрипт (vbs) для следующих действий:
Указываем в скрипте каталог ( например: c:\test\ ), скрипт должен в этом каталоге и подкаталогах искать файлы (например test.txt), затем в этом файле заменять строку (напимер строка 3 с содержанием: teststroka1 = "1", "2") на test_stroka_234, сохраняет изменения в этом файле и ищет файлы с названием test.txt далее, находя файлы делает теже действия, после того как поиск закончн в данном каталоге и подкаталогах, скрипт завершает свою работу. smile

Дата отправки: 29.10.2008, 14:38
Вопрос задал: Alexrub
Всего ответов: 2
Страница онлайн-консультации »


Консультирует Тесленко Евгений Алексеевич:

Здравствуйте, Alexrub!
Думаю это решение Вашей задачи:

Dim FSO, WSH, TheExtension, sTxtFile
Dim TheFolder, Message, YesNo
Const sStartFolder = "C:\test\" 'стартовый каталог
Const sFileName = "\test.txt" 'искомый файл
Const sFindTxt = "MAUG" 'искомый текст
Const sNewTxt = "New Text" 'заменяющий текст
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WSH = CreateObject("WScript.Shell")
Set TheFolder = FSO.GetFolder(sStartFolder)  '
Message = "Текст стартового диалога Да/Нет ?"
YesNo = MsgBox(Message, vbYesNo)
If YesNo = vbYes Then
   WorkWithSubFolders TheFolder, sFileName, sFindTxt, sNewTxt
End If


Sub WorkWithSubFolders(ByVal AFolder, ByVal sFile, ByVal sFtxt, ByVal sNtxt)
Dim MoreFolders, TempFolder, sTempTxt
    TempFolder = AFolder & sFile
    sTempTxt = ReadAllTextFile(TempFolder)
    sTempTxt = Replace(sTempTxt, sFtxt, sNtxt)
    WriteAllTextFile TempFolder, sTempTxt
    Set MoreFolders = AFolder.SubFolders
    For Each TempFolder In MoreFolders
        WorkWithSubFolders TempFolder, sFile, sFtxt, sNtxt
    Next
End Sub
Function ReadAllTextFile(sFilePath)
    Const ForReading = 1, ForWriting = 2
    Dim FSO, ts
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set ts = FSO.OpenTextFile(sFilePath, ForReading)
    ReadAllTextFile = ts.ReadAll
End Function
Sub WriteAllTextFile(sFilePath, sFileTxt)
    Dim FSO
    Dim ts
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set ts = FSO.OpenTextFile(sFilePath, 2, True)
    ts.Write sFileTxt
    ts.Close
End Sub

Евгений.

Консультировал: Тесленко Евгений Алексеевич
Дата отправки: 29.10.2008, 19:25
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Megaloman (Мастер-Эксперт):

Здравствуйте, Alexrub!
В приложении предлагаю свой вариант решения, также можете загрузить готовый файл
Почему при наличии ответа Тесленко Евгений Алексеевич я всё же счел возможным дать еще один:
1. ИМХО приведенный скрипт Тесленко Евгений Алексеевич требует, чтобы в каждой директории находился файл с указанным именем. Если такого файла нет, скрипт сваливается в ошибку (скрипт его не находит, говорит что файл не найден )
2. Вы требовали, чтобы замена проводилась в конкретной строке. Тесленко Евгений Алексеевич сделал скрипт, который меняет подстроки во всём тексте, а не в указанной строке.
Задача показалась мне интересной с точки зрения обучения: обязан заметить - использование рекурсивного вызова подпрограммы подсмотрел у Тесленко Евгений Алексеевич.
Не понял Ваш вопрос в минифоруме: попробуйте его объяснить понятнее (не надо писать код, объясните подробнее словами), постараюсь помочь.

Приложение:

Консультировал: Megaloman (Мастер-Эксперт)
Дата отправки: 30.10.2008, 20:36
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 152775:

Здравствуйте!Помогите, пожалуйста, с задачей:"Дан двумерный массив.Нужно определить в каком из столбцов число перемен знака наибольшее".Возникают сложности с составлением условия.

Дата отправки: 03.12.2008, 15:24
Вопрос задал: Kirill11
Всего ответов: 3
Страница онлайн-консультации »


Консультирует 6a3uji:

Здравствуйте, Kirill11!
Вот код, начало твое:

Sub e2()
Dim x() As Integer, n As Byte, m As Byte, i As Byte, j As Byte, t As Byte
Dim znak As Boolean ' true - плюс, false - минус
Dim max_el, max_st As Integer
Do
n = Application.InputBox("число строк:", Type:=1)
Loop Until n > 0
Do
m = Application.InputBox("-число столбцов:", Type:=1)
Loop Until m > 0
ReDim x(1 To n, 1 To m)
Randomize
Cells.Clear
For i = 1 To n
For j = 1 To m
x(i, j) = 50 * Rnd - 10: Cells(i, j) = x(i, j)
Next j
Next i

max_el = 0
max_st = 0

For j = 1 To m
t = 0:
znak = False
If x(1, j) >= 0 Then zhak = True
t = 1

For i = 2 To n
If (x(i, j) >= 0) <> zhak Then
t = t + 1:
If znak = True Then znak = False
Else: znak = True
End If
Next i
If max_el < t Then
max_el = t:
max_st = j:
End If
Next j

Cells(n + 2, 1) = "столбец с наибольш. переменами знаков = " & max_st

End Sub

Консультировал: 6a3uji
Дата отправки: 03.12.2008, 16:18
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Иноземцева Ольга Степановна:

Здравствуйте, Kirill11!
Все так, но чуть-чуть недоделали. См. приложение.

Приложение:

Консультировал: Иноземцева Ольга Степановна
Дата отправки: 03.12.2008, 19:14
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Тесленко Евгений Алексеевич:

Здравствуйте, Kirill11!
подсчет количества переходов через 0 в двумерном массиве можно выполнить следующим кодом:

Sub countChange()
Dim x() As Integer, n As Byte, i As Byte, j As Byte, t As Byte
Const m As Byte = 2, s0$ = "первый    второй" + vbCrLf 
Do:     n = Application.InputBox(s0, Type:=1):         Loop Until n > 0
ReDim x(1 To n + 1, 1 To m)
Randomize
Cells.Clear
For i = 1 To n
    For j = 1 To 2 'm
        x(i, j) = 50 * Rnd - 10:
        Cells(i, j) = x(i, j)
        If i > 1 Then
            If Not x(i, j) * x(i - 1, j) = Abs(x(i, j) * x(i - 1, j)) Then _
                x(n + 1, j) = x(n + 1, j) + 1
        End If
    Next
Next
MsgBox s0 & Space(3) & x(n + 1, 1) & Space(15) & x(n + 1, 2)
End Sub
Евгений.

Консультировал: Тесленко Евгений Алексеевич
Дата отправки: 03.12.2008, 20:12
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное