Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PowerBuilder Новый топик    Ответить
 непонятки с вызовом внешних функций  [new]
uncle Paul
Member

Откуда:
Сообщений: 7
в global external functions пишу:
FUNCTION int _open(string lpPathName,int iReadWrite) Library 'kernel32.dll' Alias FOR 'OpenA'

в окошке в скрипте open пишу:

string fname
int inum

fname='c:\test.txt'

inum = opena(fname, 1)

получаю сообщение об ошибке unknown function name: opena

что я делаю не так?
3 окт 05, 21:38    [1934237]     Ответить | Цитировать Сообщить модератору
 Re: непонятки с вызовом внешних функций  [new]
Dim2000
Member

Откуда: Москва
Сообщений: 5318

uncle Paul wrote:

> в global external functions пишу:
> FUNCTION int _open(string lpPathName,int iReadWrite) Library
> 'kernel32.dll' Alias FOR 'OpenA'

И с каких это пор в 'kernel32.dll' появилась функция 'OpenA' ;)?

Posted via ActualForum NNTP Server 1.3

3 окт 05, 21:44    [1934244]     Ответить | Цитировать Сообщить модератору
 Re: непонятки с вызовом внешних функций  [new]
uncle Paul
Member

Откуда:
Сообщений: 7
Dim2000

uncle Paul wrote:

> в global external functions пишу:
> FUNCTION int _open(string lpPathName,int iReadWrite) Library
> 'kernel32.dll' Alias FOR 'OpenA'

И с каких это пор в 'kernel32.dll' появилась функция 'OpenA' ;)?


FUNCTION int OpenA(string lpPathName,int iReadWrite) Library 'kernel32.dll' Alias FOR '_open'

в скрипте уже ни на что не ругается, а апликуха падает при выполнение с ошибкой error calling external function at line... :(
3 окт 05, 22:18    [1934282]     Ответить | Цитировать Сообщить модератору
 Re: непонятки с вызовом внешних функций  [new]
Dim2000
Member

Откуда: Москва
Сообщений: 5318
uncle Paul
FUNCTION int OpenA(string lpPathName,int iReadWrite) Library 'kernel32.dll' Alias FOR '_open'

в скрипте уже ни на что не ругается, а апликуха падает при выполнение с ошибкой error calling external function at line... :(

Автор, убей себя головой об стену... в kernel32.dll такой функции нет (да и Int-ы в Win32 как-то не очень популярны ;)).
4 окт 05, 00:22    [1934392]     Ответить | Цитировать Сообщить модератору
 Re: непонятки с вызовом внешних функций  [new]
uncle Paul
Member

Откуда:
Сообщений: 7
Dim2000
uncle Paul
FUNCTION int OpenA(string lpPathName,int iReadWrite) Library 'kernel32.dll' Alias FOR '_open'

в скрипте уже ни на что не ругается, а апликуха падает при выполнение с ошибкой error calling external function at line... :(

Автор, убей себя головой об стену... в kernel32.dll такой функции нет (да и Int-ы в Win32 как-то не очень популярны ;)).


сейчас, выпью чаю и немедленно убъю себя более элегатным способом. а если серьезно, то запустив программу api_help (взял вот тут ftp://ftp.freeware.ru/win/api_help.zip) вижу в ней вот такой текст:

"Функция _lopen

Описание:
function _lopen(PathName: Char; ReadWrite: Integer): Integer;

Откpывает указанный файл.

Паpаметpы:
PathName: Стpока, опpеделяющая путь и имя файла.
ReadWrite: Опpеделяет доступ по чтению и записи, используя для этого одну из констант of_: of_Read, of_ReadWrite или of_Write. См. pаздел "Константы откpытия файла, of_" в главе 1.

Возвpащаемое значение:
В случае успешного завеpшения - описатель файла DOS; -1 - в пpотивном случае.

функция находится в файле kernel32.dll"

ps если бы я все знал про вызовы внешних функций, то не спрашивал бы тут, так что не надо умничать, если не можете помочь.
4 окт 05, 07:06    [1934514]     Ответить | Цитировать Сообщить модератору
 Re: непонятки с вызовом внешних функций  [new]
Геннадич
Member

Откуда: Алматы
Сообщений: 640
API help
The _lopen function opens an existing file and sets the file pointer to the beginning of the file. This function is provided for compatibility with 16-bit versions of Windows. Win32-based applications should use the CreateFile function.

HFILE _lopen(

LPCSTR lpPathName, // pointer to name of file to open
int iReadWrite // file access mode
);
Parameters

lpPathName

Pointer to a null-terminated string that names the file to open. The string must consist of characters from the Windows ANSI character set.

iReadWrite

Specifies the modes in which to open the file. This parameter consists of one access mode and an optional share mode. The access mode must be one of the following values:

Value Meaning
OF_READ Opens the file for reading only.
OF_READWRITE Opens the file for reading and writing.
OF_WRITE Opens the file for writing only.
The share mode can be one of the following values:

Value Meaning
OF_SHARE_COMPAT Opens the file in compatibility mode, enabling any process on a given computer to open the file any number of times. If the file has been opened by using any of the other share modes, _lopen fails.
OF_SHARE_DENY_NONE Opens the file without denying other processes read or write access to the file. If the file has been opened in compatibility mode by any other process, _lopen fails.
OF_SHARE_DENY_READ Opens the file and denies other processes read access to the file. If the file has been opened in compatibility mode or for read access by any other process, _lopen fails.
OF_SHARE_DENY_WRITE Opens the file and denies other processes write access to the file. If the file has been opened in compatibility mode or for write access by any other process, _lopen fails.
OF_SHARE_EXCLUSIVE Opens the file in exclusive mode, denying other processes both read and write access to the file. If the file has been opened in any other mode for read or write access, even by the current process, _lopen fails.
Return Values

If the function succeeds, the return value is a file handle.

Только зачем API? Есть не плохая в PB:
FileOpen ( filename {, filemode {, fileaccess {, filelock {, writemode
    { creator, filetype }}}}} )

4 окт 05, 08:06    [1934569]     Ответить | Цитировать Сообщить модератору
 Re: непонятки с вызовом внешних функций  [new]
uncle Paul
Member

Откуда:
Сообщений: 7

Только зачем API? Есть не плохая в PB:
FileOpen ( filename {, filemode {, fileaccess {, filelock {, writemode
    { creator, filetype }}}}} )



никто не говорит что плохая. при чтении бинарного фала и при встрече eof эта функция не читает файл до конца. и медленная она.
4 окт 05, 08:22    [1934590]     Ответить | Цитировать Сообщить модератору
 Re: непонятки с вызовом внешних функций  [new]
Dim2000
Member

Откуда: Москва
Сообщений: 5318

uncle Paul wrote:

> сейчас, выпью чаю и немедленно убъю себя более элегатным способом. а

Поскорее, пожалуйста.

> если серьезно, то запустив программу api_help (взял вот тут
> ftp://ftp.freeware.ru/win/api_help.zip) вижу в ней вот такой текст:
>
> "Функция _lopen

Ты _lopen от _open можешь отличить?

> function _lopen(PathName: Char; ReadWrite: Integer): Integer;

Кстати, в MSDN эта функция находится в разделе "Obsolete Windows
Programming Elements".

> ps если бы я все знал про вызовы внешних функций, то не спрашивал бы
> тут, так что не надо умничать, если не можете помочь.

В указаниях не нуждаюсь.

Posted via ActualForum NNTP Server 1.3

4 окт 05, 09:43    [1934761]     Ответить | Цитировать Сообщить модератору
 Re: непонятки с вызовом внешних функций  [new]
Геннадич
Member

Откуда: Алматы
Сообщений: 640
uncle Paul
...никто не говорит что плохая. при чтении бинарного фала и при встрече eof эта функция не читает файл до конца. и медленная она.

Тогда понятно.
А если так попробывать объявить:
Function ulong _lopen(ref String lpPathName, Uint iReadWrite)Library "KERNEL32.DLL"
4 окт 05, 09:43    [1934764]     Ответить | Цитировать Сообщить модератору
 Re: непонятки с вызовом внешних функций  [new]
Геннадич
Member

Откуда: Алматы
Сообщений: 640
2 Dim2000
Зачем же так кричать? Автор же пишет:
uncle Paul
...если бы я все знал про вызовы внешних функций, то не спрашивал бы тут...
4 окт 05, 09:47    [1934789]     Ответить | Цитировать Сообщить модератору
 Re: непонятки с вызовом внешних функций  [new]
uncle Paul
Member

Откуда:
Сообщений: 7
Dim2000

uncle Paul wrote:

> сейчас, выпью чаю и немедленно убъю себя более элегатным способом. а

Поскорее, пожалуйста.

> если серьезно, то запустив программу api_help (взял вот тут
> ftp://ftp.freeware.ru/win/api_help.zip) вижу в ней вот такой текст:
>
> "Функция _lopen

Ты _lopen от _open можешь отличить?

> function _lopen(PathName: Char; ReadWrite: Integer): Integer;

Кстати, в MSDN эта функция находится в разделе "Obsolete Windows
Programming Elements".

> ps если бы я все знал про вызовы внешних функций, то не спрашивал бы
> тут, так что не надо умничать, если не можете помочь.

В указаниях не нуждаюсь.
Posted via ActualForum NNTP Server 1.3


<censored>
4 окт 05, 19:04    [1937839]     Ответить | Цитировать Сообщить модератору
 Re: непонятки с вызовом внешних функций  [new]
uncle Paul
Member

Откуда:
Сообщений: 7
Геннадич
2 Dim2000
Зачем же так кричать? Автор же пишет:
uncle Paul
...если бы я все знал про вызовы внешних функций, то не спрашивал бы тут...


спасибо!
4 окт 05, 20:40    [1938059]     Ответить | Цитировать Сообщить модератору
Все форумы / PowerBuilder Ответить