Подскажите, почему не работает?
code_19691.txt
Этот топик читают: Гость
Ответов: 1926
Рейтинг: 172
|
|||
карма: 9 |
| ||
файлы: 1 | code_19691.txt [1.7KB] [245] |
Разработчик
Ответов: 26151
Рейтинг: 2127
|
|||
Вообще-то, функции обратного вызова надо объявлять так, и не полем класса, а отдельной функцией после implementation
|
|||
карма: 22 |
| ||
Голосовали: | 3042 |
Ответов: 1926
Рейтинг: 172
|
|||
nesco, только я не помнимаю, почему
lpData: Pointer): DWORD; stdcall , в справке WinAPI написано: function CopyFileEx(lpExistingFileName, lpNewFileName: PChar; lpProgressRoutine: TFNProgressRoutine; lpData: Pointer; pbCancel: PBool; dwCopyFlags: DWORD): BOOL;
------------ Дoбавленo в 09.52: Поэтому я и ставил lpData: Pointer): TFNProgressRoutine; stdcall . А компилятор мне: Incompatible types: 'Integer' and 'Pointer' |
|||
карма: 9 |
|
Разработчик
Ответов: 4698
Рейтинг: 426
|
|||
Попробуй вставить это: Result := rs;
А вот это: Result := @rs; Не верно, это извлекает ссылку на переменную, а не ее саму, тем более, что TFNProgressRoutine, обычно это значит, что тип не ссылочный ------------ Дoбавленo в 10.09: Мне думается, что TFNProgressRoutine - это перечисление, которое можно обозначить как DWORD, что и сделал nesco Пример перечисления:
|
|||
карма: 10 |
|
Разработчик
Ответов: 26151
Рейтинг: 2127
|
|||
3042 писал(а): в справке WinAPI написаноТут я не знаю, что там точно стоит, пробовать надо, я тебе пример привел, как правильно делается функция обратного вызова, а что там должно стоять, надо искать или пробовать. Не забудь, что в таком обявлении отсутствует указатель класса THiAsmClass и его надо передавать в CallBack-функцию через параметр lpData, если тебе надо выдавать текущее состояние прогресса через событие класса _hi_onEvent ------------ Дoбавленo в 10.12: Assasin писал(а): Мне думается, что TFNProgressRoutineВообще-то нет, в Windows оно прописано так
те, это -- Pointer |
|||
карма: 22 |
|
Разработчик
Ответов: 4698
Рейтинг: 426
|
|||
nesco писал(а): Вообще-то нет. в Windows оно апрписано такХм, тогда как-то странно, обычно юниты WinAPI используют именно перечисления, ну тогда я просто не знаю, надо видеть реализацию функции копирования, а это невозможно |
|||
карма: 10 |
|
Ответов: 1926
Рейтинг: 172
|
|||
code_19692.txt
Вот так прога просто виснет. А ведь должна, по идее, прерывать копирование сразу после первого вызова CopyProgressRoutine. |
|||
карма: 9 |
| ||
файлы: 1 | code_19692.txt [1.7KB] [225] |
Разработчик
Ответов: 4698
Рейтинг: 426
|
|||
Этот вариант, конечно, намного хуже, и иногда виснет, но работает и управлять им проще: code_19693.txt
|
|||
карма: 10 |
| ||
файлы: 1 | code_19693.txt [2.2KB] [143] |
Разработчик
Ответов: 26151
Рейтинг: 2127
|
|||
карма: 22 |
| ||
файлы: 1 | code_19695.txt [1KB] [204] |
9