Есть ли такое в VB 5--6?
("одиночной"--в слысле, не массива).
Declare Sub RtlFillMemory Lib "kernel32.dll" (ByRef Destination As Any, ByRef Length As Long, ByVal Fill As Byte)
ger_kar писал(а):но можно сделать на основе вызова WinAPI функции RtlFillMemory
Function MakeCleanStruct() As SOME_STRUCT
End Function
MyUdr = MakeClearStruct()
Хакер писал(а):Достаточно написать функцию, возвращающую структуру, но на деле возвращающую ничего
Sub MakeCleanStruct(x As SOME_STRUCT)
Dim y As SOME_STRUCT : x = y
End Function
Хакер писал(а):Во-вторых, Erase не просто зануляет память, а перед этим освобождает все нескалярные члены структуры: для массивов — уничтожается SAFEARRAY, для строк вызывает SysFreeString, для вариантов — VariantClear, для объектов — IUnknown::Release.
ger_kar писал(а):Но при таком раскладе можно и без функции обойтись, достаточно объявить пустую переменную с типом этой структуры и просто делать её присвоение.
ger_kar писал(а):Ну, а если структура содержит только скалярные типы, то можно и функции RtlFillMemory и RtlZeroMemory заюзать
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 53