Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
VB Двигать точку по прямой с шагом, в момент, когда луч проходит над ней https://www.cyberforum.ru/ visual-basic/ thread1473163.html
Есть луч который описывает окружность, и есть точка которая находится в пределах этой окружности. Необходимо заставить двигаться точку по прямой с шагом, в момент когда луч проходит над ней. Dim x,y,x0, y0, R, angle As Integer Dim xc, yc As Double Const pi = 3.14 Private Sub Form_Load() pic.AutoRedraw = true pic.Scale (0, 0)-(1200, 1200) Timer1.Enabled = True
VB Написать программу "Домашняя библиотека"
Всем привет! В универе задали разработать домашнюю бибилиотеку, нот сегодня оказалось, что нужно что бы была ещё и функция добавления книг. В моей программе книги показывается по обычному условию, без переменных: if List1.Text = "Пушкин" Then List4.AddItem "Какая-то книга Пушкина" Вот теперь не знаю как сделать функцию добавления. Подскажете? Сама программа во вложении.
VB Найти сумму ряда Помогите разобратся с задачкой. Вот само задание: Private Sub Command1_Click() n = Text1.Text a = Text2.Text j = Text4.Text s1 = 0 For i = 1 To n https://www.cyberforum.ru/ visual-basic/ thread1472822.html VB Вывести на экран матрицу с заданным с клавиатуры значением строк и столбцов Private Sub CommandButton1_Click() m = InputBox("Введите количество столбцов матрицы") If m > 10 Then MsgBox "Количество столбцов больше 10 не обрабатываю", 48, "Ошибка!" GoTo metka End If N = InputBox("Введите количество строк") If N > 10 Then 25 MsgBox " Количество строк больше 10 не обрабатываю", 48, "Ошибка!" https://www.cyberforum.ru/ visual-basic/ thread1472132.html
VB Попарное разделение символов из текстового поля
В текстовое поле можно вводить любые символы, по нажатии кнопки пуск в лист1 должны появится попарно разделенные символы из текстового поля.
VB Имитация нажатия клавиш в стороннем приложении Нужно чтобы софт ловил окно браузера, пусть это будет Internet Explorer И в нем нажимало 2 кнопки до тех пора пока я не остановлю его либо горячей клавишей либо кнопкой в приложение. Многочасовые потуги ничего не дали, прошу накидать литературы или готовый код с комментариями https://www.cyberforum.ru/ visual-basic/ thread1471950.html
VB Найти произведение и количество положительных чисел в последовательности https://www.cyberforum.ru/ visual-basic/ thread1471753.html
Вобщем вот задание : Вводится последовательность из N чисел. Найти произведение и количество положительных среди них чисел. Я , учитывыйте мои супер-навыки в программировании , а тем более VB написал программу Private Sub Command1_Click() Dim S, P, ai, N As String S = 0: P = 1 N = Val(z1.Text) For i = 1 To N A = Val(InputBox("Введите следующее число", "Ввод")) If ai > 0 Then P = P *...
Таймер работает медленнее положенного VB
В моей системе (NT 5.2.3790 64-битная) таймер VB работает медленнее положенного в отношении примерно 13 к 20. А между тем, в 32-битной системе на виртуалке таймер работает нормально (Проверял секундомером). В обоих случаях запускаю скомпилированный exe'шник. В чем причина? Вот код: Option Explicit Dim bState As Byte, nCounter, nTime1, nTime2 As Integer Private Function Random() Randomize...
VB Вывести на экран две переменные https://www.cyberforum.ru/ visual-basic/ thread1471571.html
с помощью команды msgbox мне нужно вывести на экран 2 переменные, у меня получается вывести лишь 1, как их нужно разделить что бы вывести 2 переменные я пробовал и через _ и через & и просто через запятую но нет.. , как должен выглядеть код что бы мне на экран просто вывелось 2 переменные , на например , a и b , заранее спасибо
VB Вставить текст из Word в редактор кода https://www.cyberforum.ru/ visual-basic/ thread1471453.html
Здравствуйте. Такая задача: есть текст программы в word-файле, как запихнуть его в компилятор (visual basic)?
VB Сколько стоит самый дешевый и самый дорогой обед?
Проектная задача!!! В столовой предлагается N комплексных обедов, состоящих из Q блюд. Известна стоимость и калорийность каждого блюда. Сколько стоит самый дешевый и самый дорогой обед? Сколько калорий включает в себя самое калорийное блюдо?
VB Определить долю гласных букв в заданном тексте Определить долю гласных букв в заданном тексте:Вот и наступило долгожданное лето. https://www.cyberforum.ru/ visual-basic/ thread1471200.html
Эксперт WindowsАвтор FAQ
17996 / 7697 / 892
Регистрация: 25.12.2011
Сообщений: 11,470
Записей в блоге: 16
17.06.2015, 16:35  [ТС] 0

Как скопировать участок памяти в переменную типа Variant? - VB - Ответ 7772914

17.06.2015, 16:35. Показов 2585. Ответов 20
Метки (Все метки)

Ответ

У меня не работало, потому что я передавал массив ParamArray params напрямую, не делая так как ты в строке № 27 через промежуточный.
Visual Basic
1
param(pIndex) = params(pIndex)
Кстати, почему напрямую нельзя?

Добавлено через 3 минуты
Цитата Сообщение от The trick Посмотреть сообщение
Как ты определишь что это константы или переменные если передать переменные которые расположены на таком же расстоянии как и псевдопеременные в которые копируется значение константы?
К тому же последовательность ломается и без этого. (см скрин)
Идея была, чтобы 1-й эл-т всегда передавался по значению. От него и плясать.
Но судя по твоим тестам - Убедил

Добавлено через 3 часа 7 минут
Анатолий, а можешь пожалуйста, подсказать, как задать для DispCallFunc тип данных произвольного размера?

Ниже - полностью рабочая демка (чисто для теста), использующая UDT.
Мне нужно увеличить размер UDT, соответственно я поменяю в строке № 65
rtnType на vbvartype.vbUserDefinedType. Но похоже функция не узнает эту константу и выдает ошибку:
80070057
E_INVALIDARG
One or more arguments are invalid
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
Option Explicit
 
Private Type UDT
    Data(3) As Byte
End Type
 
Private Declare Function LoadLibrary Lib "kernel32.dll" Alias "LoadLibraryA" (ByVal loLibfileName As String) As Long
Private Declare Function FreeLibrary Lib "kernel32.dll" (ByVal hModule As Long) As Long
Private Declare Function GetProcAddress Lib "kernel32.dll" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function DispCallFunc Lib "oleaut32.dll" _
    (ByVal pvInstance As Long, _
    ByVal FuncAddr As Long, _
    ByVal CallConvention As Integer, _
    ByVal rtnType As VbVarType, _
    ByVal FuncArgsCnt As Long, _
    FuncArgTypes As Any, _
    FuncArgVarAddresses As Any, _
    FuncResult As Any) As Long
 
Const CC_CDECL As Long = 1&
 
Public Sub form_load()
    Dim ret             As Variant
    Dim sOut            As String
    Dim sFormat         As String
    Dim lParam1         As Long
    Dim sParam2         As String
    Dim hLib            As Long
    sOut = String(100, vbNullChar)
    sFormat = "Param1 = %d , Param2 = %s"
    lParam1 = 123456
    sParam2 = "abc"
    hLib = LoadLibrary("user32.dll")
    ret = Exec_Func(hLib, "wsprintfW", vbLong, sOut, sFormat, lParam1, sParam2)
    FreeLibrary hLib
    Debug.Print sOut
End Sub
 
Function Exec_Func(hLib As Long, FunctionName As String, rtnType As VbVarType, ParamArray Args()) As Variant
    Dim i           As Long
    Dim hProc       As Long
    Dim ret         As UDT
    Dim iVarTypes() As Integer
    Dim lVarPtrs()  As Long
    Dim vParams()   As Variant
    Dim ErrRtn      As Long
    
    hProc = GetProcAddress(hLib, FunctionName)
    If hProc = 0 Then MsgBox "Error: cannot get " & FunctionName & " function address!": Exit Function
    
    'ret = Empty
    
    If UBound(Args) > -1 Then
        ReDim vParams(UBound(Args))
        ReDim iVarTypes(UBound(Args))
        ReDim lVarPtrs(UBound(Args))
        
        For i = 0 To UBound(vParams)
            vParams(i) = Args(i)
            iVarTypes(i) = VarType(vParams(i))
            lVarPtrs(i) = VarPtr(vParams(i))
        Next
                
        'VbVarType.vbUserDefinedType
        ErrRtn = DispCallFunc(0&, hProc, CC_CDECL, rtnType, UBound(vParams) + 1, iVarTypes(0), lVarPtrs(0), ret)
        
        If ErrRtn <> 0 Then Debug.Print Hex(ErrRtn): Exit Function
    Else
        If 0 <> DispCallFunc(0&, hProc, CC_CDECL, rtnType, 0&, ByVal 0&, ByVal 0&, ret) Then Exit Function
    End If
    
    'Exec_Func = ret
    For i = 0 To UBound(Args): Args(i) = vParams(i): Next
End Function


Вернуться к обсуждению:
Как скопировать участок памяти в переменную типа Variant? VB
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.06.2015, 16:35
Готовые ответы и решения:

Как скопировать содержимое листа Excel в переменную типа Variant
Доброго времени суток! Передо мной встал следующий вопрос: есть книга Excel с листом данных, c...

Как записать в массив типа variant значение типа double?
Есть массив массивов типа variant. В первой ячейке (элементе) текст, в остальных 4 нули. Текст-1...

Как конвертировать переменную типа Double в переменную типа String?
Как конвертировать переменную типа Double в переменную типа String. И наоборот.

Как вывести переменную Variant(Excel) в компонент OleContainer ?
Всем привет! У меня получается работать с Excel документом через переменную Variant, и у меня...

20
17.06.2015, 16:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.06.2015, 16:35
Помогаю со студенческими работами здесь

Сохранить и прочитать из памяти переменную типа word
имеется программа которая читает показания с датчиков и сохраняет их в память а при получении...

Размер памяти, выделяемый под переменную комбинированного типа
1)type Complex=record Re, Im:real end; M=array of Complex; var a:M; ...

Как строковую переменную(String) сканвертировать в переменную типа(Real)
У меня есть Edit1.Text (строковая) а var x: Real каким образом мне сконвертировать Edit1.Text в...

Как передать из ACCESS переменную STRING в переменную окружения (типа CMD команды SET=)
Добрый день! Подскажите как установить переменную окружения из ACCESS. Допустим у меня есть...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru