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

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


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

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

Выпуск № 830
от 24.08.2007, 20:05

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


Вопрос № 98884: Здарсте всем! Почему когда пишут трояна или клавиатурного шпиона некоторые фунции описывают в dll (даже не некоторые а почти все) с чем это связано помимо того что dll в процессах не видно???...
Вопрос № 98890: Привет, подскажите пожалуйста, как правильней составить код программы. Ситуация следующая, есть таблица, компонент DBGrid, в которой выводится таблица. В таблице осуществляется фильтрация, условия задаются с помощью компонент Edit и ComboBox. Выб...
Вопрос № 98903: Здравствуйте уважаемые эксперты! Объясните пожалуйста, что значит getline из ниже представленной программы. И как прочесть результат работы функций strcmp и stricmp. Если я определяю их так как показано ниже, то программа возвращает к...
Вопрос № 98907: У меня программа на c++ скачана с интеренета. Среда Microsoft visual studio net. Проблема в том что не могу отлаживать программу. В configuration manager есть только Release а Debug нет. Скажите пожалуйста что делать? ...

Вопрос № 98.884
Здарсте всем!
Почему когда пишут трояна или клавиатурного шпиона некоторые фунции описывают в dll (даже не некоторые а почти все)
с чем это связано помимо того что dll в процессах не видно???
Отправлен: 19.08.2007, 10:49
Вопрос задал: Tatarin (статус: 2-ой класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Ross
Здравствуйте, Tatarin!

Дело в том, что dll можно зарегистрировать в системе как ловушку (функция SetWindowsHookEx) после чего она подключается ко всем процессам и перехватывает сообщения, которые посылаются системой.
Почитать про функцию можно в msdn
---------
Доступно только то, что видимо (c) Б. Керниган
Ответ отправил: Ross (статус: Студент)
Ответ отправлен: 19.08.2007, 13:02
Оценка за ответ: 5
Комментарий оценки:
Почему SetWindowsHookEx надо писать обязательно в dll ? а что в exe нгельзя?

Отвечает: Aristos
Здравствуйте, Tatarin!
Это связано с методами отслеживания нажатия клавиш или других действий пользователя. Одним из самых распространенных методов является, так называемое, внедрение (injection в англоязычной литературе) своей dll в другой процесс. После этого функции из этой dll выполняются как часть другого процесса.
Подробнее о методах можно узнать, например, в книге Джеффри Рихтера "Windows для профессионалов" или найти в интернете.
Ответ отправил: Aristos (статус: 3-ий класс)
Ответ отправлен: 19.08.2007, 14:59


Вопрос № 98.890
Привет, подскажите пожалуйста, как правильней составить код программы.
Ситуация следующая, есть таблица, компонент DBGrid, в которой выводится таблица. В таблице осуществляется фильтрация, условия задаются с помощью компонент Edit и ComboBox. Выбранные в ходе фильтрации данные хочу показать отдельно в том же DBGridе, для чего использую компонент CheckBox и следующий код...

void __fastcall TForm3::CheckBox1Click(TObject *Sender)
{
if (!CheckBox1->Checked);
TLocateOptions Options;
Table1->Active=true;
Table1->Filtered=false;
Table1->Filter=ComboBox1->Text;-ошибка здесь, но как правильно не знаю
Table1->Filtered=true;
Table1->Refresh();
}
Отправлен: 19.08.2007, 12:01
Вопрос задал: Boio (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Новиков Андрей Викторович
Здравствуйте, Boio!
Насколько я понимаю комбо бокс многострочный, потому надо поллучать не текст комбо бокса, а скорее текст строки в комбо боксе.
Ответ отправил: Новиков Андрей Викторович (статус: 1-ый класс)
Ответ отправлен: 20.08.2007, 08:25


Вопрос № 98.903

Здравствуйте уважаемые эксперты!

Объясните пожалуйста, что значит getline из ниже представленной программы. И как прочесть результат работы функций strcmp и stricmp. Если я определяю их так как показано ниже, то программа возвращает какие то непонятные произвольные числа.

#include <iostream>
#include <conio.h>
#include <string.h>
using namespace std;
void main ()
{
char stroka[100];
cout << "Vvedite stroky ";
cin.getline (stroka, 100);
//Определяем вторую строку.
char stroka2[100];
cout << "Vvedite vtoruy stroky ";
cin.getline (stroka2, 100);
//Выводим результат на экран.
cout << "Rezultat - " << stricmp (stroka, stroka2) << " ";
getch ();
}
Отправлен: 19.08.2007, 14:34
Вопрос задал: Чирков Вячеслав Александрович (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Кузнецов Дмитрий Григорьевич
Здравствуйте, Чирков Вячеслав Александрович!
При использовании cin для выполнения ввода с клавиатуры, cin использует пустые символы, такие как пробел, табуляция или возврат каретки, для определения, где заканчивается одно значение и начинается другое. Во многих случаях вы захотите, чтобы ваши программы считывали целую строку данных в символьную строку. Для этого программы могут использовать функцию cin.getline. Для использования cin.getline вам необходимо указать символьную строку, в которую будут помещаться символы, а также размер строки.
Функция stricmp выполняет сравнение двух строк, не учитывая регистра
символов.
Прототип функции stricmp:
int stricmp(const char *strl, const char *str2);
Функция сравнивает строки strl и str2, не делая различия между символами в
нижнем и верхнем регистре. Возвращает в качестве результата сравнения целую
величину:
0 когда strl больше, чем str2.
Пример
char string1[] = "Borland C++";
char string2[] = "BORLAND C++";
int i = strcmp(string1, string2);
В последнем операторе переменной i присваивается значение 0, так как string1 и
string2 отличаются друг от друга только регистром символов.
Ответ отправил: Кузнецов Дмитрий Григорьевич (статус: 1-ый класс)
Ответ отправлен: 19.08.2007, 14:40
Оценка за ответ: 4

Отвечает: Aristos
Здравствуйте, Чирков Вячеслав Александрович!
Функция getline считывает в буфуер (stroka и stroka2 в вашем коде) символы до нажатия клавиши Enter или до тех пор пока не будет введено указанное число символов (100 в вашем коде).
Функция strcmp производит посимвольное сравнение строк, stricmp делает то же самое но не различает строчные и прописные буквы. Возвращают эти функции следущее - 0, если строки равны, число меньшее нуля если первая строка меньше, и число большее нуля, сли вторая строка больше.
Если заменить строку с выводом результатов на
cout << "Rezultat - " << (stricmp (stroka, stroka2) == 0) << " ";
то будет печататься 1 если строки равны, и 0 если не равны.
Ответ отправил: Aristos (статус: 3-ий класс)
Ответ отправлен: 19.08.2007, 14:51
Оценка за ответ: 4

Отвечает: Попов А.С.
Здравствуйте, Чирков Вячеслав Александрович!
cin.getline() - считает последовательность символов (длиной не более 100) до нажатия Enter
stricmp - сравнение строк без учета регистра (strcmp учитывает регистр) возвращает нулевой результат при совпадении строк, положительный - если stroka > stroka2 и наоборот
Ответ отправил: Попов А.С. (статус: 2-ой класс)
Ответ отправлен: 19.08.2007, 15:43

Отвечает: Rockie
Здравствуйте, Чирков Вячеслав Александрович!

Если вас интересует какая-либо функция C/C++, вы в большинстве случаев можете найти ее описание в msdn. Вот пример запроса по функции stricmp:
Ссылка
Либо вы можете найти описание и примеры функций в поиске, вот пример:
Ссылка

Отредактировано
[И. К. Цикалов]

Ответ отправил: Rockie (статус: 2-ой класс)
Ответ отправлен: 20.08.2007, 11:09


Вопрос № 98.907
У меня программа на c++ скачана с интеренета.
Среда Microsoft visual studio net.
Проблема в том что не могу отлаживать программу.
В configuration manager есть только Release а Debug нет.

Скажите пожалуйста что делать?
Отправлен: 19.08.2007, 15:02
Вопрос задал: Марченко Роберт Владимирович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Алексей Демаков
Здравствуйте, Марченко Роберт Владимирович !

Вы можете добавить конфигурацию к проекту самостоятельно, или создать новый проект, в котором автоматически будут созданы конфигурации Release и Debug и перенести в него файлы из имеющегося проекта. В первом случае необходимо скопировать существующую конфигурацию и изменить опции компилятора (убрать оптимизацию и включить отладочную информацию). Во втором случае необходимо просмотреть имеющийся проект на предмет опций, отличающихся от заданных по умолчанию (списки каталогов, для включаемых (include) файлов и библиотек, дополнительные библиотеки и т.п.) и изменить соответствующим образом стандартные конфигурации.
Ответ отправил: Алексей Демаков (статус: Студент)
Ответ отправлен: 19.08.2007, 15:39
Оценка за ответ: 5


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

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

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

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

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


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


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.56 beta от 20.08.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное