Функции LinesIntersection передются координаты двух линий. С этим проблем нет.
Сама функция отрабатывает нормально и вычисляет координаты точки пересечения. X координаты я запоминаю в первый элемент массива p&, во второй элемент ложится Y координаты.
В PowerBasic'e есть функция VarPtr(variable_name), которая возвращает 32-битный адрес переменной, в том числе и массива. Употребляю эту функцию и LinesIntersection присваиваю ее значение.
Это я делаю из ВБ...
- Код: Выделить всё
Private Type udLine
x1 as long
y1 as long
x2 as long
y2 as long
End Type
private l1 as udLine, l2 as udLine
Private uPoints(3)&, lp&
Private Declare Function LinesIntersection Lib "orel.dll" (ByRef Line1 As udLine, ByRef Line2 As udLine) As Long
Private Declare Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
lp = LinesIntersection(l1, l2)
Call MoveMemory(uPoints(0), lp,
Picture1.Circle (uPoints(0), uPoints(1)), 3
Чего здесь не так, если Source - это адрес в памяти?