Page 10 of 15

Re: C--

Posted: Mon Jan 06, 2014 2:23 am
by punk_joker
Leency wrote:Какой там формат данных и как его использовать я так до конца не понял.
Для текста что-то типа этого

struct buffer_data
{
dword size;
dword type;
dword encoding;
byte buffer_data[4096];
};

И в результате пример от Mario для получение содержимого буфера выводит именно тот текст, который я занес. Осталось ток разобраться как его правильно забрать оттуда.

Re: C--

Posted: Sun Jan 19, 2014 11:21 pm
by punk_joker
Помогите правильно переписать данную структуру:

Filter:
dd Filter.end - Filter.1
.1:
.end:
db 0

Re: C--

Posted: Mon Jan 20, 2014 1:40 am
by Mario_r4
punk_joker wrote:Помогите правильно переписать данную структуру:
В чем суть проблемы?

Re: C--

Posted: Mon Jan 20, 2014 2:52 am
by punk_joker
Пока писал ответ, придумал вариан решения. Но все равно, dd Filter.end - Filter.1 - определяет размер скажем так массива с нужными расширениями файлов, для пустого фильтра можно в принципе указать 0, но хочется всеже более универсальное решение. Тут скорее всего необходимо задействовать указатели, вот как с ними работать я еще плохо понимаю.

Re: C--

Posted: Tue Jan 21, 2014 2:45 am
by punk_joker
Боюсь сам, я всетаки не одолею сего демона (OpenDialog). Заголовочный файл теоретически правильный, Скорее всего я делаю что-то не так либо при заполнении структуры, либо неправильно понял как вызывать инициализацию opendialog'а, так как именно после добавления строки инициализации компонента программа вылетает. Архив с программой и хедером прилагаю.

Re: C--

Posted: Tue Jan 21, 2014 3:09 am
by Leency
Если ты хочешь протестировать отдельно взятый функционал, лучше для этого взять программу cmm/example.
В твоём примере черт ногу сломит: в ней намешан и буфер обмена, и OpenDialog, и даже boxlib от предыдущего примера.

Ты всё делал правильно, но запутался и если удалить всё лишнее, ответ может быть найден сам собой. После расчистки так и случилось. Вначале нужно установить переменные, а потом уже инициализировать OpenDialog. Всё что я сделал, это перенёс строку proc_lib_opendialog_init stdcall (#twst); ниже по коду.

Re: C--

Posted: Tue Jan 21, 2014 3:16 am
by punk_joker
Leency wrote:Если ты хочешь протестировать отдельно взятый функционал, лучше для этого взять программу cmm/example.
В твоём примере черт ногу сломит: в ней намешан и буфер обмена, и OpenDialog, и даже boxlib от предыдущего примера.

Ты всё делал правильно, но запутался и если удалить всё лишнее, ответ может быть найден сам собой. После расчистки так и случилось. Вначале нужно установить переменные, а потом уже инициализировать OpenDialog. Всё что я сделал, это перенёс строку proc_lib_opendialog_init stdcall (#twst); ниже по коду.
Пора бы мне уже прекращать такие тупые ошибки делать. Спасибо. А про использование для этих целей cmm/example как-то и не подумал.

Re: C--

Posted: Tue Jan 21, 2014 3:18 am
by punk_joker
Осталось отловить причину падения программы при попытке запуска OpenDialog'а.

Re: C--

Posted: Tue Jan 21, 2014 3:20 am
by Leency
Скорее всего что-то с параметрами. Нужно смотреть ассемблерные варианты. И алсо у FPlay тоже должен быть подключаемый файл OpenDialog.

Re: C--

Posted: Tue Jan 21, 2014 3:24 am
by punk_joker
Leency wrote:Скорее всего что-то с параметрами. Нужно смотреть ассемблерные варианты. И алсо у FPlay тоже должен быть подключаемый файл OpenDialog.
Я брал в качестве примеров код на wiki и rtfread. Ниче, теперь он унего не останется выбора кроме как заработать :)

Re: C--

Posted: Tue Jan 21, 2014 3:31 am
by punk_joker
Ха, в Fplay используется для подключения asm-код

Re: C--

Posted: Tue Jan 21, 2014 3:36 am
by Leency
Кинь ссылку, пожалуйста.

Re: C--

Posted: Tue Jan 21, 2014 3:39 am
by punk_joker
Leency wrote:Кинь ссылку, пожалуйста.
http://websvn.kolibrios.org/listing.php ... d321873c73

Re: C--

Posted: Mon Mar 24, 2014 3:56 am
by punk_joker
Каким образом в С-- можно получить данные определенного размера с определенной позиции?

Re: C--

Posted: Mon Mar 24, 2014 11:53 am
by Leency
Что ты конкретно хочешь сделать?

> Каким образом в С-- можно получить данные определенного размера с определенной позиции?
strncpy(in_buf, from_buf + смещение_на_определённую позицию, размер_копируемых_данных);

оно?