powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Не могу вызвать API-функции FindFirstFile и FindNextFile
4 сообщений из 4, страница 1 из 1
Не могу вызвать API-функции FindFirstFile и FindNextFile
    #32693874
Renesans
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пытаюсь вызвать API-функции FindFirstFile и FindNextFile. При вызове первой программа рушится.

Прототип функции храню в невизуальном объекте (мне понравилось, как это сделал Филипп) nvo_filefind_first_next. Прототип FindNextFile не указываю, чтобы не загромождать код.

Вот содержимое экспорт-файла этого объекта:

$PBExportHeader$nvo_filefind_first_next.sru
forward
global type nvo_filefind_first_next from nonvisualobject
end type
type filetime from structure within nvo_filefind_first_next
end type
type win32_file_find from structure within nvo_filefind_first_next
end type
end forward

type filetime from structure
unsignedlong dwLowDateTime
unsignedlong dwHighDateTime
end type

type win32_file_find from structure
unsignedlong dwfileattributes
filetime ftcreationtime
filetime ftlastaccesstime
filetime ftlastwritetime
unsignedlong nfilesizehigh
unsignedlong nfilesizelow
unsignedlong dwreserved0
unsignedlong dwreserved1
string cfilename
string calternate
end type

global type nvo_filefind_first_next from nonvisualobject autoinstantiate
end type

type prototypes
Function Long FindFirstFileA(string lpFileName, REF win32_file_find findinfo) Library "kernel32.dll"

end prototypes

type variables

end variables

forward prototypes
public function long getfirstfile (string filemask, ref string filename)
end prototypes

public function long getfirstfile (string filemask, ref string filename);long handle

WIN32_FILE_FIND fileinfo
fileinfo.cFilename = space(260)
fileinfo.cAlternate = space(14)
handle = findfirstfilea(filemask,fileinfo)
filename = fileinfo.cFileName
return handle
end function
on nvo_filefind_first_next.create
call super::create
TriggerEvent( this, "constructor" )
end on

on nvo_filefind_first_next.destroy
TriggerEvent( this, "destructor" )
call super::destroy
end on



Далее в тексте основной программы я пытаюсь использовать эту функцию.

Так вот, при выполнении строки данного невизуального объекта, в том месте где вызывается объявленная функция FindFirstFileA программа валится (т.е. выводится сообзение «Программа выполнила недопустимую операцию и будет закрыта»).

Кто-нибудь может сказать, что я делаю не так. Где ошибка?
...
Рейтинг: 0 / 0
Не могу вызвать API-функции FindFirstFile и FindNextFile
    #32693908
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
см. PFC pfc_n_cst_filesrvwin32(pfcapsrv.pbl)

Function long FindFirstFileA (ref string lpFileName, ref win32_file_find findinfo) library "KERNEL32.DLL"


type win32_file_find from structure
unsignedlong dwfileattributes
filetime ftcreationtime
filetime ftlastaccesstime
filetime ftlastwritetime
unsignedlong nfilesizehigh
unsignedlong nfilesizelow
unsignedlong dwreserved0
unsignedlong dwreserved1
character cfilename [260]
character calternate [14]
end type
...
Рейтинг: 0 / 0
Не могу вызвать API-функции FindFirstFile и FindNextFile
    #32693999
Renesans
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо!!! Все заработало!!!

Только зачем ref перед lpFileName (long FindFirstFileA (ref string lpFileName, ref win32_file_find findinfo) library "KERNEL32.DLL")? Он ведь объявлен By Value?
...
Рейтинг: 0 / 0
Не могу вызвать API-функции FindFirstFile и FindNextFile
    #32694139
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В MSDN написано что ?

HANDLE FindFirstFile(
LPCTSTR lpFileName,
LPWIN32_FIND_DATA lpFindFileData
);

и что такое по вашему LPCTSTR?
Long Pointer to a Constant null-Terminated STRing of 8-bit Windows (ANSI) characters.
А ежели Pointer, то уж никак не by Value.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Не могу вызвать API-функции FindFirstFile и FindNextFile
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]