Как составить описание функции SetFilePointerEx
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
-
- Ветеран
- Сообщения: 390
- Зарегистрирован: 26 Август 2009, 12:41
- Откуда: Moscow
- Контактная информация:
Как составить описание функции SetFilePointerEx
Добрый день!
Как описать api функцию:
BOOL SetFilePointerEx(
HANDLE hFile,
LARGE_INTEGER liDistanceToMove,
PLARGE_INTEGER lpNewFilePointer,
DWORD dwMoveMethod
);
SetFilePointerEx(UNSIGNED,?,?,ULONG),BOOL,PASCAL,RAW,NAME('SetFilePointerEx')
А вот как определить LARGE_INTEGER и PLARGE_INTEGER ?
Алексей
Как описать api функцию:
BOOL SetFilePointerEx(
HANDLE hFile,
LARGE_INTEGER liDistanceToMove,
PLARGE_INTEGER lpNewFilePointer,
DWORD dwMoveMethod
);
SetFilePointerEx(UNSIGNED,?,?,ULONG),BOOL,PASCAL,RAW,NAME('SetFilePointerEx')
А вот как определить LARGE_INTEGER и PLARGE_INTEGER ?
Алексей
- Дед Пахом
- Старичок
- Сообщения: 3135
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 10 раз
- Поблагодарили: 28 раз
- Контактная информация:
Как составить описание функции SetFilePointerEx
Как-то так, параметр liDistanceToMove передаём двумя LONG, параметр lpNewFilePointer это адрес:
Код: Выделить всё
SetFilePointerEx(UNSIGNED,LONG lowLongDistanceToMove,LONG hiLongDistanceToMove,LONG pNewFilePointer,ULONG),BOOL,PASCAL,RAW,NAME('SetFilePointerEx')
С уважением, ДП
-
- Активист
- Сообщения: 185
- Зарегистрирован: 07 Февраль 2017, 16:58
Как составить описание функции SetFilePointerEx
У меня прокатывал такой вариант:
Код: Выделить всё
liDistanceToMove REAL
STR STRING(8),OVER(liDistanceToMove)
-
- Ветеран
- Сообщения: 390
- Зарегистрирован: 26 Август 2009, 12:41
- Откуда: Moscow
- Контактная информация:
-
- ✯ Ветеран ✯
- Сообщения: 4989
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 21 раз
Как составить описание функции SetFilePointerEx
В equates.clw есть группа int64. Скорее всего, то, что надо.
We are hard at work… for you.
Как составить описание функции SetFilePointerEx
... , ulong lowLongDistanceToMove, ... - наверно так нужно писать?Дед Пахом писал(а): ↑17 Июль 2019, 12:19Как-то так, параметр liDistanceToMove передаём двумя LONG, параметр lpNewFilePointer это адрес:Код: Выделить всё
SetFilePointerEx(UNSIGNED,LONG lowLongDistanceToMove,LONG hiLongDistanceToMove,LONG pNewFilePointer,ULONG),BOOL,PASCAL,RAW,NAME('SetFilePointerEx')
C10, Win10x64
- Дед Пахом
- Старичок
- Сообщения: 3135
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 10 раз
- Поблагодарили: 28 раз
- Контактная информация:
Как составить описание функции SetFilePointerEx
не принципиально, но по смыслу да, ulong логичнее.
С уважением, ДП
Как составить описание функции SetFilePointerEx
Нет, тут не должно быть логики, вот определение:
Вопрос к стартеру - если не секрет, для чего нужна эта функция?
Код: Выделить всё
...
typedef union _LARGE_INTEGER {
struct {
DWORD LowPart; <-----------------------------------------------------
LONG HighPart;
} DUMMYSTRUCTNAME;
struct {
DWORD LowPart;
LONG HighPart;
} u;
#endif //MIDL_PASS
LONGLONG QuadPart;
} LARGE_INTEGER;
C10, Win10x64
- Дед Пахом
- Старичок
- Сообщения: 3135
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 10 раз
- Поблагодарили: 28 раз
- Контактная информация:
-
- Ветеран
- Сообщения: 390
- Зарегистрирован: 26 Август 2009, 12:41
- Откуда: Moscow
- Контактная информация:
Как составить описание функции SetFilePointerEx
Добрый день!
! INT64 GROUP,TYPE
! lo ULONG
! hi LONG
! END
!
! UINT64 GROUP,TYPE
! lo ULONG
! hi ULONG
! END
С API - вроде разобрался. (Вариант Деда Пахома - спасибо)
теперь "плаваю" с присвоением int64 в decimal.
Есть процедура (в i64)
!!! <summary>
!!! Store 64-bit integer value to DECIMAL variable.
!!! </summary>
!!! <param name="dest">DECIMAL variable.</param>
!!! <param name="src">64-bit integer value to store to DECIMAL variable.</param>
i64ToDecimal PROCEDURE (*DECIMAL dest, *INT64 src),RAW,NAME('Cla$i64ToDecS')
i64ToDecimal PROCEDURE (*DECIMAL dest, *UINT64 src),RAW,NAME('Cla$i64ToDecU')
Объявил
dec1 decimal(20)
А вот второй параметр - никак не принимает, что я туда только не прописывал ((((
Компиляция с ошибкой : No matching prototype available
Алексей
Работаю с файлами больших размеров, 500 Гб , например.
Да, нашел i64.INC файл. Там "математика" с 64-битными целыми.,там же и описание:
! INT64 GROUP,TYPE
! lo ULONG
! hi LONG
! END
!
! UINT64 GROUP,TYPE
! lo ULONG
! hi ULONG
! END
С API - вроде разобрался. (Вариант Деда Пахома - спасибо)
теперь "плаваю" с присвоением int64 в decimal.
Есть процедура (в i64)
!!! <summary>
!!! Store 64-bit integer value to DECIMAL variable.
!!! </summary>
!!! <param name="dest">DECIMAL variable.</param>
!!! <param name="src">64-bit integer value to store to DECIMAL variable.</param>
i64ToDecimal PROCEDURE (*DECIMAL dest, *INT64 src),RAW,NAME('Cla$i64ToDecS')
i64ToDecimal PROCEDURE (*DECIMAL dest, *UINT64 src),RAW,NAME('Cla$i64ToDecU')
Объявил
dec1 decimal(20)
А вот второй параметр - никак не принимает, что я туда только не прописывал ((((
Компиляция с ошибкой : No matching prototype available
Алексей
- Дед Пахом
- Старичок
- Сообщения: 3135
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 10 раз
- Поблагодарили: 28 раз
- Контактная информация:
Как составить описание функции SetFilePointerEx
Код: Выделить всё
PROGRAM
MAP
INCLUDE('i64.inc')
END
i64val LIKE(INT64)
decval DECIMAL(20)
CODE
i64val.lo = 1000
i64val.hi = 777
i64ToDecimal(decval, i64val)
MESSAGE('Decimal='& decval)
CLEAR(i64val)
i64FromDecimal(i64val, decval)
MESSAGE('i64.lo='& i64val.lo &', i64.hi='& i64val.hi)
С уважением, ДП
-
- Ветеран
- Сообщения: 390
- Зарегистрирован: 26 Август 2009, 12:41
- Откуда: Moscow
- Контактная информация:
Как составить описание функции SetFilePointerEx
Добрый день!
И снова, Дед Пахом, спасибо большое !
Про Like - и не думал в эту сторону()
Алексей
И снова, Дед Пахом, спасибо большое !
Про Like - и не думал в эту сторону()
Алексей
-
- ✯ Ветеран ✯
- Сообщения: 4989
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 21 раз
Как составить описание функции SetFilePointerEx
Где-то раньше на форуме обсуждали эти переменные. Можно ещё вот так:
Код: Выделить всё
LOC:Int64 group(INT64)
end
We are hard at work… for you.
-
- Ветеран
- Сообщения: 390
- Зарегистрирован: 26 Август 2009, 12:41
- Откуда: Moscow
- Контактная информация:
Как составить описание функции SetFilePointerEx
Добрый день!
Алексей
Да, так тоже работает. Спасибо)kreator писал(а): ↑18 Июль 2019, 13:56 Где-то раньше на форуме обсуждали эти переменные. Можно ещё вот так:А совсем без like будет доступно, вероятно, после внедрения полноценной поддержки 64 бита.Код: Выделить всё
LOC:Int64 group(INT64) end
Алексей