Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 201
от 21.09.2005, 19:13

Администратор:Калашников О.А.
В рассылке:Подписчиков: 202, Экспертов: 31
В номере:Вопросов: 4, Ответов: 10


Вопрос № 26409: Помогите пожалуйста с переносом функций из С++ на Ассемблер. Есть заголовочный файл на С++, в котором определены callback функции. Нифига не могу понять как они работают и как компилятор определяет их адреса, если ни в одном заголовочном файл...
Вопрос № 26415: Уважаемые експерты! Прошу F1! Штука тут у меня никак немогу догнать. Я тока недавно начал на C++ Builder 6 писать. Значит вот в чем: Я имею 2 формы Form1 файл u1.cpp и Form2 файл u2.cpp В форме 2 я использую переменную int a...
Вопрос № 26450: Здравствуйте эксперты. Подскажите что можно почитать (желательно в электронном виде на русском языке) о web программировании на C....
Вопрос № 26454: Господа эксперты скажите плз. Есть spinedit. увеличивать/уменьшать значение он начинает только если нажимать Ctrl+Up или Ctrl+Down, как программно сымитировать нажатие Ctrl даже если юзер жмет только клавишу Вверх или Вниз. только не рекоменд...

Вопрос № 26.409
Помогите пожалуйста с переносом функций из С++ на Ассемблер.
Есть заголовочный файл на С++, в котором определены callback функции.
Нифига не могу понять как они работают и как компилятор определяет их адреса, если ни в одном заголовочном файле адрес не прописан?
Всё что нужно находится в DLL, а заголовочники описывают то, что в ней находится. Т.е. на асме я импортирую функции из DLL, описания которых пытаюсь взять из *.h файлов. С обычными функциями всё ясно, а вот с callback - ?????????
Например:

typedef int (CALLBACK PASCAL * DOACTION)(PSESSION);

Как такую вещь представить в inc файле для АСМа?
Отправлен: 15.09.2005, 23:28
Вопрос задал: Qwestor (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Jadd
Здравствуйте, Qwestor!
Как там в асме не могу сказать, но CALLBACK описана так в сях:
#define CALLBACK __stdcall
т.е. CALLBACK - по сути __stdcall
---------
Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Практикант)
Отправлен: 16.09.2005, 09:07


Вопрос № 26.415
Уважаемые експерты! Прошу F1!
Штука тут у меня никак немогу догнать. Я тока недавно начал на C++ Builder 6 писать.

Значит вот в чем:

Я имею 2 формы Form1 файл u1.cpp и Form2 файл u2.cpp
В форме 2 я использую переменную int a
В форме 2 в u2.h я вписал

class Form2 : public TForm
{
public:
int a;
};

Далее в u1.cpp я подключаю #include <u2.h>
и теперь я могу посмотреть значение переменной а написав ShowMessage (Form2->a);

Но еще в Form2 я хочу использовать переменную с выделеню памяти типа масив (незнаю точно как назвать)
вопще я ето оглашаю вот так:
a=12; // ета переменная уже оглашена в u2.h
// Если написать int a=12; то в u1.cpp функция ShowMessage (Form2->a);
// выдаст 0 или воопще кто знает что....

Буду очень благодарен за хорошие ответы

int m=13;
String **txt=new String*[а];
for (int i=0; i<а;i++)
txt[a]=new String[m];

Обратите внимание, что txt использует переменную а

Вот никак немогу догнать, как мне теперь ету переменную txt[a][m] прочитать в Form1? Как ее вписывать в public?
Отправлен: 16.09.2005, 00:35
Вопрос задал: Etenity (статус: 5-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: _DM_
Здравствуйте, Etenity!
Чтобы получить досуп к переменной txt с которой вы работаете в Form2 её нужно объявить в разделе public класса Form2, теперь она станет доступна как Form2->txt.
Если переменная массив объявляете её следующим образом
...
public:
String **txt;
int a;
int m;
...
затем нужно выделить память, например в событии OnCreate Формы2
...
a = 12;
m = 10;
// или где-нить в Форме1 Form2->a = 12; Form2->m = 10;
...
txt = new *String [a];
for(int i = 0; i < a; i++)
txt[i] = new String[m]; // обратите внимание у вас в такой строке вкралась ошибка.

Теперь переменная txt доступна в Форме1 и память под неё выделена.
Если что неясно уточните вопрос, как то он сформулирован нечётко.
Ответ отправил: _DM_ (статус: 2-ой класс)
Отправлен: 16.09.2005, 12:40
Оценка за ответ: 5
Комментарий оценки:
txt[i] = new String[m]; // обратите внимание у вас в такой строке вкралась ошибка.
Да я незаметил, что случайно поставил а вместо i. Но ето лиш пример....

Я пробывал ваш ответ в действии. Ето именно то что нужно. А я вроде пробывал так, а не получалось... Или я тока одну * ставил? Я вот неочень разбираюсь с етими * и &. Так теоретически знаю, что одно ссылка на переменную, а другая на адрес... Но толком всеравно немогу етого понять... Надо больше с етим работать...
Огромное вам спасибо за ответ.

Отвечает: Romodos
Здравствуйте, Etenity
Во-вторых, вы вписали
А ты txt чё в функции какой-то объявлеяшь?? Тогда это у тея локальная переменная, и вне функции её просто не существует!
Надо в паблике прописать и потом обращаться к txt сколь душе угодно
String **txt;
---------
FAQ me off!
Ответ отправил: Romodos (статус: 7-ой класс)
Отправлен: 16.09.2005, 14:07
Оценка за ответ: 4
Комментарий оценки:
Я же написал, что я хочу прописать переменную txt в паблике... Только незнаю, как ее там прописать. Вот мне именно надо было ето: String **txt; Ато я с одной * пробывал. Сам непойму как я не догадался две ** поставить? Ето доказывает то, что ночю надо спать, а не работать!
Спасибо за ответ, но если бы он был более подробно описан...


Вопрос № 26.450
Здравствуйте эксперты.
Подскажите что можно почитать (желательно в электронном виде на русском языке) о web программировании на C.
Отправлен: 16.09.2005, 16:53
Вопрос задал: X (статус: 8-ой класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Jadd
Здравствуйте, X!
А что там читать? А то все пишут и пишут. Контрреволюция сплошная. Ой. Это, кажется, не из этой оперы. :) Есть книга Котерова, только не смейся насчет названия: "Самоучитель РНР". Там описаны общие принципы написания cgi на С. Хотя тоже самое могу и я тут же написать. Но там описан сам принцип. Книга имеется в электронном виде на форуме forum.netz.ru. Там нужно будет зарегистрироваться. Была книга так же Отца и Сына Фроловыхиз серии "Библиотека программиста" (вроде), но тоже у нее основная тема не С для веба. А так - RFC не помню какой номер :)
---------
Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Практикант)
Отправлен: 16.09.2005, 19:02
Оценка за ответ: 5

Отвечает: Raptor1
Здравствуйте, X!
В электронном виде незнаю, а в бумажном была хорошая книга "Программирование в WEB для профессионалов" Криса Джамсы, Минск 1997 год. Там много что есть, в т.ч. и на С, например примен написания WEB сервера и WEB браузера
Ответ отправил: Raptor1 (статус: 7-ой класс)
Отправлен: 17.09.2005, 10:29

Отвечает: Бартунов Сергей Олегович
Здравствуйте, X!
http://ebuki.apvs.ru/
Там в форме поиска набираем: PHP, Web development, ASP, ASP.NET, Perl, Python. Удачи!
---------
Небо для Всех
Ответ отправил: Бартунов Сергей Олегович (статус: 2-ой класс)
Отправлен: 17.09.2005, 19:10


Вопрос № 26.454
Господа эксперты скажите плз.
Есть spinedit. увеличивать/уменьшать значение он начинает только если нажимать Ctrl+Up или Ctrl+Down, как программно сымитировать нажатие Ctrl даже если юзер жмет только клавишу Вверх или Вниз.
только не рекомендуйте др. компоненты, скажите как решить эту задачу
Отправлен: 16.09.2005, 18:44
Вопрос задал: Степанюк Александр (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Татьяна
Здравствуйте, Степанюк Александр!
Первое, что приходит на ум - просто обрабатывайте событие нажатия клавиши в spinedit (см. приложение)

Приложение:

---------
Нет ничего невозможного!!!

Ответ отправила: Татьяна (статус: 2-ой класс)
Отправлен: 16.09.2005, 20:23
Оценка за ответ: 5
Комментарий оценки:
Мадмуазель (Мадам), я Вам оч. признателен, сам про такой вариант думал, но думал, что ++/-- даст только увеличение/уменьшение на 1 и остановится (так что даже не стал пробовать), а оно продолжается :)

Отвечает: Romodos
Здравствуйте, Степанюк Александр!
Надо обработать сообщение OnKeyDown формы и поставить form1.keypreview=true
И уже там изменять значение спинедита
---------
FAQ me off!
Ответ отправил: Romodos (статус: 7-ой класс)
Отправлен: 17.09.2005, 09:24

Отвечает: _DM_
Здравствуйте, Степанюк Александр!
Не подскажу как вам сымитировать нажатие клавиши Ctrl, но попробую помочь. Что если в форме перехватывать сообщение о нажатии клавиши Up и Down, и если нажаты именно эти клавиши вызывать SpinEdit->StepUp() или SpinEdit->StepDown()?
Ведь все равно если имитировать нажатие Ctrl то это нужно делать когда нажимают Up или Down, т.е. перехватывать сообщение всё равно придётся, так зачем мудрить?
Ответ отправил: _DM_ (статус: 2-ой класс)
Отправлен: 17.09.2005, 20:02

Отвечает: Бартунов Сергей Олегович
Здравствуйте, Степанюк Александр!
Послать событие, от якобы нажатия нужной клавиши, spinedit'у.
---------
Небо для Всех
Ответ отправил: Бартунов Сергей Олегович (статус: 2-ой класс)
Отправлен: 18.09.2005, 12:59


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Яндекс


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.cplus
Отписаться
Вспомнить пароль

В избранное