|
18.12.2006, 19:09 | #1 |
Участник
|
WinAPI: Создание файла
Привет.
Пытаюсь вот создать файлик через winapi X++: int _handle; // Дескриптор файла _winApiDLL = new DLL('KERNEL32'); // Системная DLL _createFile = new DLLFunction(_winApiDLL, 'CreateFileA'); .... .... .... _handle = _createFile.call(fileName, #GENERIC_WRITE | #GENERIC_READ, 0, 0, #OPEN_EXISTING, #FILE_ATTRIBUTE_NORMAL, 0); //Создаём файл .... После надлежащей обработки: X++: [LEFT].... errorCode = DLL::lastDLLError(); //Получаем последнюю ошибку error(WINAPI::formatmessage(errorCode)); //Получаем расшифровку из системы ....[/LEFT] .... НО! Путь этот у меня есть. И вообще всё пучком. =( Вот только не хочет работать, редиска эдакая.. =( Не знаю что и делать, всё перепробывал. Ребят, выручайте. Последний раз редактировалось Eland; 18.12.2006 в 19:15. |
|
18.12.2006, 20:25 | #2 |
Участник
|
Цитата:
Сообщение от Eland
Привет.
Пытаюсь вот создать файлик через winapi X++: _createFile = new DLLFunction(_winApiDLL, 'CreateFileA'); .... _handle = _createFile.call(fileName, #GENERIC_WRITE | #GENERIC_READ, 0, 0, #OPEN_EXISTING, #FILE_ATTRIBUTE_NORMAL, 0); НО! Путь этот у меня есть. |
|
18.12.2006, 20:49 | #3 |
Участник
|
Вообще-то прежде всего я бы предложил почитать методы класса WinApi - тогда и велосипед бы не пришлось писать.
|
|
19.12.2006, 08:45 | #4 |
Программатор
|
Не будем мучить человека
2 Eland: Экую Вы жесть написали... Я бы не смог Но тем не менее файлы создавать умею PHP код:
|
|
19.12.2006, 09:23 | #5 |
Участник
|
Если отвлечься от того, что метод уже есть, то как вариант причины ошибки: путь указан для локальной машины, а код выпоняется на сервере (или наоборот).
|
|
19.12.2006, 15:29 | #6 |
Участник
|
Ребят. Спасибо за помощь.
На настоящий момент решения этой проблемы нет =( Пока что без глюков получается сохранять файлы только по сети через самбу (smb). Понятия не имею, с чем это связано. =( Может кто может подсказать ? 2 gl00mie: Пробовал использовать самые разные атрибуты - результат тот же. 2 Raven Melancholic: От места выполнения кода мало что зависит. Говорит, что не может найти путь и со стороны клиента и со стороны сервера при существующих папках. 2 Sada: Эта штука тоже работает, только возвращает она не то, что мне надо. =( |
|
19.12.2006, 16:03 | #7 |
Дмитрий Ерин
|
Цитата:
Если да - то надо смотреть, что не так с Вашим путем... Например, есть ли в нем русские символы и включена ли поддержка Unicode в ОС. Достаточно ли прав доступа текущему пользователю. Не забыли ли задвоить слэши в строке... Ну и так далее... |
|
19.12.2006, 15:50 | #8 |
Программатор
|
2Eland:
Чем не устраивает ВинАпишный метод? Что вам нужно получить на выходе? Опишите если можно задачу поконкретнее. |
|
19.12.2006, 18:06 | #9 |
Участник
|
2 Sada: Так ведь это и есть апишный метод. Тот же самый, только его использование напрямую из системной dll_ки, а не через класс.
В общем, убрал модификатор методов server и т.д. и всё заработало. Но это меня не устраивает. Надо чтобы файлы формировались на сервере. И методы должны выполняться там же. А задача примерно следующая: Создать файл на стороне сервера, записать туда данные и отправить это всё хозяйство по сети cтандартными средствами винды. (По протоколу samba (smb)) Иными словами скопировать в сетевую папку. |
|
19.12.2006, 19:48 | #10 |
NavAx
|
Цитата:
Этому пользователю доступна нужная папка? |
|
20.12.2006, 09:24 | #11 |
Участник
|
Да пользователь имеет права в домене достаточные для записи на сетевой ресурс.
|
|
20.12.2006, 09:49 | #12 |
NavAx
|
|
|
20.12.2006, 14:58 | #13 |
MCTS
|
Покажите инициализацию переменной fileName
|
|
21.12.2006, 15:35 | #14 |
Участник
|
Значение fileName (выдрано из дебагера):
c:\test\test4\info.txt |
|