Автор | Сообщение |
|
| |
Пост N: 29
Зарегистрирован: 06.12.14
|
|
Отправлено: 19.10.20 18:33. Заголовок: Помогите с С если есть возможность
bufferget( @<cRead>) --> <nCount> типа такого должно вызываться в харборе PHB_ITEM pRead = hb_param( 1, HB_IT_BYREF ); наверное так принимается параметр int num; do { char buffer[0x2000]; num = buffer_read(input, buffer, sizeof(buffer) ); if(num > 0) { int i; count += num; fprintf(stderr, "read:\n"); for( i = 0; i < num; ++i ) fputc( buffer , stderr ); fprintf(stderr, "\n"); } } while(num > 0); как сложить в переменную то, что идет в stderr и вернуть по ссылке? сколько упадет тоже заранее неизвестно оно выдается порциями в сях не силен, могу только по образу и подобию смастерить, но что-то подходящего примера не нашел (
|
|
|
Новых ответов нет
[см. все]
|
|
|
| Администратор
|
Пост N: 3985
Зарегистрирован: 23.05.05
|
|
Отправлено: 20.10.20 08:20. Заголовок: Для строки надо выде..
Для строки надо выделять память: char * szRet = hb_xgrab( ulLen ); увеличить размер строки: szRet = hb_xrealloc( szRet, ulNewLen ); Принять 1-й параметр: char * szStr = hb_parc( 1 ); Вернуть 1-й параметр по ссылке (освобождать память не надо): if( HB_ISBYREF( 1 ) ) hb_storclen_buffer( szRet, ulLen, 1); освободить память (если параметр не по ссылке): hb_xfree( szRet ); PS В операциях выделения памяти к длине надо добавлять +1, для нулевого байта
|
|
|
|
| постоянный участник
|
Пост N: 3480
Зарегистрирован: 17.02.12
|
|
Отправлено: 20.10.20 12:25. Заголовок: finder Может эти ф-..
|
|
|
|
| |
Пост N: 131
Зарегистрирован: 09.09.11
|
|
Отправлено: 22.10.20 10:55. Заголовок: Добрый день, коллеги..
Добрый день, коллеги. Возможно не в этой теме, но вопрос касается C++. Скачал xharbour 10261 +BCC 73064. Как настроить и использовать возможности x64? Сейчас проект крутиться на xHarbour 1.2.3 Intl. (SimpLex) (Build 20200311) и Borland C++ 5.82 for Win32 Copyright (c) 1993, 2005 Borland
|
|
|
|
| moderator
|
Пост N: 1436
Зарегистрирован: 06.07.06
|
|
Отправлено: 26.10.20 16:03. Заголовок: Oskar_AAA пишет: Ка..
Oskar_AAA пишет: цитата: | Как настроить и использовать возможности x64? |
| Гм... Да нет никаких особых возможностей x64. Большее адресуемое пространство, больше возможный размер строк, ну и т.п. Настроек вроде специальных не требуется. Я на Windows x64 не собирал, а на Linux - все как обычно.
|
|
|
|
| |
Пост N: 284
Зарегистрирован: 05.10.06
|
|
Отправлено: 28.10.20 10:51. Заголовок: воспользовался кодом..
воспользовался кодом А.Кресина SELECTFILE() цитата: | HB_FUNC( SELECTFILE ) { //выбор файла winAPI OPENFILENAME ofn; char buffer[512]; char *strFilter; char *str1 = hb_parc( 1 ); char *str2 = hb_parc( 2 ); char *initDir = hb_pcount()>2 ? hb_parc(3):NULL; char *cTitle = hb_pcount()>3 ? hb_parc(4):NULL; |
| выделенные строки дают предупреждение при компиляции: Warning W8075 d:\\magazin\\magazin.prg 16298: Suspicious pointer conversion in function HB_FUN_SELECTFILE Warning W8075 d:\\magazin\\magazin.prg 16299: Suspicious pointer conversion in function HB_FUN_SELECTFILE Warning W8075 d:\\magazin\\magazin.prg 16300: Suspicious pointer conversion in function HB_FUN_SELECTFILE Warning W8075 d:\\magazin\\magazin.prg 16301: Suspicious pointer conversion in function HB_FUN_SELECTFILE Что нужно поправить ? Код отрабатывает нормально
|
|
|
|
| moderator
|
Пост N: 1437
Зарегистрирован: 06.07.06
|
|
Отправлено: 28.10.20 12:27. Заголовок: Поставьте перед всем..
Поставьте перед всеми hb_parc() (char*): char *str1 = (char*) hb_parc( 1 ); hb_parc() возвращает const char*, поэтому нужно преобразование типов, чтобы не было предупреждений - хотя эти предупреждения не критичны.
|
|
|
|
| |
Пост N: 329
Зарегистрирован: 05.10.06
|
|
Отправлено: 17.05.22 19:38. Заголовок: MIKHAIL пишет: восп..
MIKHAIL пишет: цитата: | воспользовался кодом А.Кресина SELECTFILE() |
| заметил что после отработки этой функции перестает работать KBDSTAT(), что то в коде на С видимо нужно поправить...
|
|
|
|
| moderator
|
Пост N: 1474
Зарегистрирован: 06.07.06
|
|
Отправлено: 18.05.22 10:26. Заголовок: В коде hwg_selectfil..
В коде hwg_selectfile() нет ничего, что непосредственно могло бы иметь отношение к kbdstat(). Думаю, проблема как-то связана с тем, что стандартный GUI диалог вызывается из приложения, сделанного на одном из gt (gtwvt, ...) и, таким образом, обработка ввода с клавиатуры прерывается. Тут поэкспериментировать надо. Может kbdstat() опять начинает работать после каких-то операций ввода/вывода средствами gt.
|
|
|
|
| |
Пост N: 330
Зарегистрирован: 05.10.06
|
|
Отправлено: 18.05.22 20:34. Заголовок: alkresin пишет: Мож..
alkresin пишет: цитата: | Может kbdstat() опять начинает работать после каких-то операций ввода/вывода средствами gt. |
| заменил kbdstat() на GetAsyncKeyState()
|
|
|
|