powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / как читать бинарники из PB?
19 сообщений из 19, страница 1 из 1
как читать бинарники из PB?
    #33290698
дядь Паша
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
стандартные функции чтения из файлов при нахождении в бинарнике (файл в хидере которого описаны поля и их длинна и данные) eof завершают работу по чтению, хотя реаьный конец файла еще далеко.
есть ли к-н библиотека? или нужно пользоваться функциями api?
...
Рейтинг: 0 / 0
как читать бинарники из PB?
    #33290867
Фотография Ikar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может быть я и не прав, но сдается мне, что Вы похо прочитали HELP по работе FileRead(). РВ читает блоками по 32К, так что никакого " eof завершают работу по чтению, хотя реаьный конец файла еще далеко " нет, просто чтение нужно производить в цикле...
---
С уважением, IKAR

ikarhomecenter@narod.ru
IkarHomeCenter
...
Рейтинг: 0 / 0
как читать бинарники из PB?
    #33290880
Фотография AIZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как читаете? Куда? Учтите, что если читать бинарный в строку, 16-ричныйный 0 дает конец файла
...
Рейтинг: 0 / 0
как читать бинарники из PB?
    #33290900
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может тут собака порылась?:

An end-of-file mark is a NULL character (ASCII value 0). Therefore, if the file being read contains null characters, FileRead will stop reading at the first null character, interpreting it as the end of the file.

(выдержка из хелпа по ф-ции FileRead)
...
Рейтинг: 0 / 0
как читать бинарники из PB?
    #33290922
дядь Паша
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IkarМожет быть я и не прав, но сдается мне, что Вы похо прочитали HELP по работе FileRead(). РВ читает блоками по 32К, так что никакого " eof завершают работу по чтению, хотя реаьный конец файла еще далеко " нет, просто чтение нужно производить в цикле...
---
С уважением, IKAR

ikarhomecenter@narod.ru
IkarHomeCenter

все я внимательно читал и циклом пользоваться умею.
это вытяжка из help спец для вас:

"If the file was opened in Stream mode, FileRead reads to the end of the file or the next 32,765 bytes, whichever is shorter. FileRead begins reading at the file pointer, which is positioned at the beginning of the file when the file is opened for reading. If the file is longer than 32,765 bytes, FileRead automatically positions the pointer after each read operation so that it is ready to read the next chunk of data.

FileRead can read a maximum of 32,765 bytes at a time. Therefore, before calling the FileRead function, call the FileLength function to check the file length. If your system has file sharing or security restrictions, you may need to call FileLength before you call FileOpen.
An end-of-file mark is a null character (ASCII value 0). Therefore, if the file being read contains null characters, FileRead stops reading at the first null character, interpreting it as the end of the file."
...
Рейтинг: 0 / 0
как читать бинарники из PB?
    #33290936
дядь Паша
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AIZКак читаете? Куда? Учтите, что если читать бинарный в строку, 16-ричныйный 0 дает конец файла

читаю в blob ессно, да имеено 16-ричный ноль и дает облом ;(
...
Рейтинг: 0 / 0
как читать бинарники из PB?
    #33290953
дядь Паша
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PaulJBА может тут собака порылась?:

An end-of-file mark is a NULL character (ASCII value 0). Therefore, if the file being read contains null characters, FileRead will stop reading at the first null character, interpreting it as the end of the file.

(выдержка из хелпа по ф-ции FileRead)

ага. вот и треба обойти эту проблему.
нашел в kernel32.dll
набор функцаев _lopen, _lclose, _lread, _lwrite пока запара с типами данных что к чему приводить...
...
Рейтинг: 0 / 0
как читать бинарники из PB?
    #33291079
Фотография AIZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
MICROSOFT	PB(16Bit)		PB(32Bit)
Bool			Boolean		Boolean
Char* 			Ref string		Ref String
Colorref		Uint			Ulong
Dword			Uint			Ulong
Handle			Uint			Ulong
Hdc			Uint			Ulong
Hfile			Uint			Ulong
Hinstance		Uint			Ulong
Hwnd			Uint			Ulong
Int			Int			Int
Lparam			Uint			Ulong
Lpbyte			Ref Int			Ref Long
Lpdword Ref		Uint Ref		Ulong
Lpfiletime		Ref Time		Ref Time
Lpint			Ref Int			Ref Long
Lpstr,Lpststr		Ref String		Ref String
Lpvoid			Ref Structstruct_inst	Ref Struct struct_inst
Mcierror		Long			Long
Lpstr,Lpststr		Ref String		Ref String
Lpvoid			Ref Structstruct_inst	Ref Struct struct_inst
Pbyte			Ref Int[#]		Ref Long[#]
Short			Int			Int
Structure		Ref Struct struct_inst	Ref Struct Struct_inst
Uint			Uint			Uint
Void**			SUBROUTINE	SUBROUTINE
Word			Int			Ulong
Wparam		Uint			Ulong
...
Рейтинг: 0 / 0
как читать бинарники из PB?
    #33291872
alexis glinski
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в PFC это как 2 пальца об асфальт ...
...
Рейтинг: 0 / 0
как читать бинарники из PB?
    #33291904
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дядь Пашанашел в kernel32.dll
набор функцаев _lopen, _lclose, _lread, _lwrite пока запара с типами данных что к чему приводить...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
FUNCTION ulong CreateFile(string file,ulong access,ulong sharemode,string
security,ulong createflag,ulong attrflag,ulong template) Library "kernel32"
alias for "CreateFileA"
FUNCTION Long ReadFile(ulong lhandle,REF string s_rcvbuff,long bytetoread,REF
long bytesread,long overlap) Library "kernel32" alias for "ReadFileA"
FUNCTION Long CloseHandle(ulong handle_id)  Library "kernel32" Alias for
"CloseHandle" 
с алиасами мог напутать. значения аргументов см. MSDN.
...
Рейтинг: 0 / 0
как читать бинарники из PB?
    #33291916
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexis glinskiв PFC это как 2 пальца об асфальт ...

... с помощью 16битных функций, тормознуто и с ошибками. но в целом да - просто.

Помню как-то гонял под профайлером чтение из базы + запись в файл.
Оказалось 99% времени занимает выполнение BlobMid (pfcapsrv.pfc_n_cst_filesrv.of_fileWrite например) и операции типа ablb_Data = ablb_Data + lblb_Data. т.е. возня с 32K кусочками.

После замены кучи встроенных билдеровских 16битных FileRead/FileWrite на один! вызов WinAPI ReadFile/WriteFile процесс ускорился в сотню раз соответственно.
...
Рейтинг: 0 / 0
как читать бинарники из PB?
    #33292202
дядь Паша
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AIZ
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
MICROSOFT	PB(16Bit)		PB(32Bit)
Bool			Boolean		Boolean
Char* 			Ref string		Ref String
Colorref		Uint			Ulong
Dword			Uint			Ulong
Handle			Uint			Ulong
Hdc			Uint			Ulong
Hfile			Uint			Ulong
Hinstance		Uint			Ulong
Hwnd			Uint			Ulong
Int			Int			Int
Lparam			Uint			Ulong
Lpbyte			Ref Int			Ref Long
Lpdword Ref		Uint Ref		Ulong
Lpfiletime		Ref Time		Ref Time
Lpint			Ref Int			Ref Long
Lpstr,Lpststr		Ref String		Ref String
Lpvoid			Ref Structstruct_inst	Ref Struct struct_inst
Mcierror		Long			Long
Lpstr,Lpststr		Ref String		Ref String
Lpvoid			Ref Structstruct_inst	Ref Struct struct_inst
Pbyte			Ref Int[#]		Ref Long[#]
Short			Int			Int
Structure		Ref Struct struct_inst	Ref Struct Struct_inst
Uint			Uint			Uint
Void**			SUBROUTINE	SUBROUTINE
Word			Int			Ulong
Wparam		Uint			Ulong


спасибо! ;-)
...
Рейтинг: 0 / 0
как читать бинарники из PB?
    #33292205
дядь Паша
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЗоринАндрей дядь Пашанашел в kernel32.dll
набор функцаев _lopen, _lclose, _lread, _lwrite пока запара с типами данных что к чему приводить...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
FUNCTION ulong CreateFile(string file,ulong access,ulong sharemode,string
security,ulong createflag,ulong attrflag,ulong template) Library "kernel32"
alias for "CreateFileA"
FUNCTION Long ReadFile(ulong lhandle,REF string s_rcvbuff,long bytetoread,REF
long bytesread,long overlap) Library "kernel32" alias for "ReadFileA"
FUNCTION Long CloseHandle(ulong handle_id)  Library "kernel32" Alias for
"CloseHandle" 
с алиасами мог напутать. значения аргументов см. MSDN.

огромное спасибо. PFC использовать не планировалось, потому что нужна скорость.
...
Рейтинг: 0 / 0
как читать бинарники из PB?
    #33292219
дядь Паша
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЗоринАндрей дядь Пашанашел в kernel32.dll
набор функцаев _lopen, _lclose, _lread, _lwrite пока запара с типами данных что к чему приводить...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
FUNCTION ulong CreateFile(string file,ulong access,ulong sharemode,string
security,ulong createflag,ulong attrflag,ulong template) Library "kernel32"
alias for "CreateFileA"
FUNCTION Long ReadFile(ulong lhandle,REF string s_rcvbuff,long bytetoread,REF
long bytesread,long overlap) Library "kernel32" alias for "ReadFileA"
FUNCTION Long CloseHandle(ulong handle_id)  Library "kernel32" Alias for
"CloseHandle" 
с алиасами мог напутать. значения аргументов см. MSDN.

да, с алиасами запарка ;-) я пользую api_help, так как MSDN под рукой нету... ;(
...
Рейтинг: 0 / 0
как читать бинарники из PB?
    #33292252
Фотография Ikar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дядь Пашаэто вытяжка из help спец для вас:
Спасибо, конечно, но я в вытяжках из чего бы то ни было не нуждаюсь...

дядь ПашаMSDN под рукой нету... ;(
http://search.microsoft.com/search/search.aspx?view=msdn&st=a&c=0&s=1

---
С уважением, IKAR

ikarhomecenter@narod.ru
IkarHomeCenter
...
Рейтинг: 0 / 0
как читать бинарники из PB?
    #33292410
дядь Паша
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ikar дядь Пашаэто вытяжка из help спец для вас:
Спасибо, конечно, но я в вытяжках из чего бы то ни было не нуждаюсь...

дядь ПашаMSDN под рукой нету... ;(
http://search.microsoft.com/search/search.aspx?view=msdn&st=a&c=0&s=1

---
С уважением, IKAR

ikarhomecenter@narod.ru
IkarHomeCenter

за ссылочку на MSDN спасибо. а вытяжка вам была на глупый совет ;-)
...
Рейтинг: 0 / 0
как читать бинарники из PB?
    #33292521
Фотография Ikar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дядь Пашаа вытяжка вам была на глупый совет ;-)
совет был адекватен не точно сформулированному вопросу...
ладно, закрыли тему...
---
С уважением, IKAR

ikarhomecenter@narod.ru
IkarHomeCenter
...
Рейтинг: 0 / 0
как читать бинарники из PB?
    #33293015
дядь Паша
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ikar
совет был адекватен не точно сформулированному вопросу...
ладно, закрыли тему...
---
С уважением, IKAR

ikarhomecenter@narod.ru
IkarHomeCenter

в моем вопросе все есть для точного ответа, как вы наверное заметили, тема не про азы программирования и использования циклов, а совершенно про конкретную вещь. закрыли тему.
...
Рейтинг: 0 / 0
как читать бинарники из PB?
    #33293553
Фотография savosin_sergey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 дядя Паша
вы пенсионер?:

Пенсионер и студент стоят на остановке. Пенсионер:
- А-а-пчххи !!!
Студент:
- Будьте здоровы !
- Спасибо.
- Пожалуйста.
- Не стоит.
- Ну, что вы..
- Не умничай !
- Да иди ты.. !
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / как читать бинарники из PB?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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