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

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


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

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

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

Выпуск № 206
от 28.09.2005, 11:00

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


Вопрос № 26751: Всем привет, подскажите, пжлст, есть приложение состоящее из 2 форм (form1 and form2). Все представляет собой банальный поиск в объекте типа TMemo и TRichEdit. Как сделать так, чтобы найденный текст оказывался выделенным? И еще, подскажите, пжлст...
Вопрос № 26770: Здравствуйте, уважаемые эксперты. Как в консольном приложении VC++ выводить текст по-русски? Мой способ через CharToOem мне не очень нравится....
Вопрос № 26773: здавствуйте! Как можно знаковое значение типа double перевести в строку?...
Вопрос № 26782: Здравствуйте, уважаемые эксперты! Как создать произволный массив в Borland C 3.0. { randomize(); for (i=0; i<n; i++) mas[i]=random(100)); } --- не помогает. ..

Вопрос № 26.751
Всем привет, подскажите, пжлст, есть приложение состоящее из 2 форм (form1 and form2). Все представляет собой банальный поиск в объекте типа TMemo и TRichEdit. Как сделать так, чтобы найденный текст оказывался выделенным?
И еще, подскажите, пжлст, есть ли в С++ Builder 6 меню выбора файла (а-ля в html <input type="file" name="file">). И последнее: может кто-нибудь кинет ссылку на модуль для работы с Excel таблицами. Я сегодня поискал, но так ничего путевого и не нашел.

Приложение:

Отправлен: 22.09.2005, 14:15
Вопрос задал: Rkm-s@yandex.ru (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Rusland
Здравствуйте, Rkm-s@yandex.ru!
Для выделения текста хорошо подходит RichEdit
RichEdit1->SelStart = 10; // начало выделения
RichEdit1->SelLength = 25;
Для выбора файла используется компонент из вкладки Dialogs - OpenDialog.
---------
Пресловутое недостающее звено между обезьяной и цивилизованным человеком - это как раз мы. (Конрад Лоренц)
Ответ отправил: Rusland (статус: Студент)
Отправлен: 22.09.2005, 14:32

Отвечает: Jadd
Здравствуйте, Rkm-s@yandex.ru!
1)Берешь RxLib и юзаешь их TRxRichEdit...у этом компоненте можно менять атрибуты символа. У символа имеется атрибут background. Его и меняем на нужный. Соответственно меняется у выделенного. Иначе придется самому писать.
2)По поводу менювыбора файла - не совсем понятно что нужно. Если диаложик чтобы выходил - TDialog, он есть на палитре компонентов.
3)Модуль или компонент ищи на www.torry.net. Я лично работаю через CreateObject ну и тп, т.е. через OLE Automation. Могу дать пример на дельфях.
---------
Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Практикант)
Отправлен: 22.09.2005, 14:37


Вопрос № 26.770
Здравствуйте, уважаемые эксперты.
Как в консольном приложении VC++ выводить текст по-русски? Мой способ через CharToOem мне не очень нравится.
Отправлен: 22.09.2005, 19:33
Вопрос задал: Palpatin (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Jadd
Здравствуйте, Palpatin!
"Мой способ" - это как это? Сам что ли сопоставлял?

А WinAPI'шная CharToOem чем не устраивает? Вот описание функции:
BOOL CharToOem(LPCTSTR lpszSrc, LPSTR lpszDst);
На вход можно как строку отдать, так и символ, и получить тоже строку или символ.

Чем плохо-то?


---------
Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Практикант)
Отправлен: 22.09.2005, 19:46

Отвечает: Boriss
Здравствуйте, Palpatin!
Есть способ - написать функцию, которая перекодирует символы строки. То есть, каждый анализирует и изменяет в соответствии с таблицами
---------
Прорвемся! (Быть может :(( )
Ответ отправил: Boriss (статус: Профессор)
Отправлен: 23.09.2005, 10:40

Отвечает: igor87
Здравствуйте, Palpatin!
Ну в VC++ два способа вывести русский. Первый ты назвал, а второй - взять любой текстовый редактор с 866 кодировкой. Например, в FAR вполне подходящий редактор.
Ответ отправил: igor87 (статус: 2-ой класс)
Отправлен: 23.09.2005, 13:10


Вопрос № 26.773
здавствуйте! Как можно знаковое значение типа double перевести в строку?
Отправлен: 22.09.2005, 20:15
Вопрос задал: Сергей Николаевич (статус: 1-ый класс)
Всего ответов: 6
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Татьяна
Здравствуйте, Сергей Николаевич!
попробуйте
sprintf(str, "%f", a)
str - строка
a - вещественная переменная

в str будет именно это число (в виде строки)
Существуют еще варианты, но честно говоря не помню функций
---------
Нет ничего невозможного!!!
Ответ отправила: Татьяна (статус: 2-ой класс)
Отправлен: 22.09.2005, 20:23

Отвечает: Jadd
Здравствуйте, Сергей Николаевич!
А модификаторы форматирования на что? Строка какого вида? CString? Тогда :
strMyStr.Format("Value is: %e", dSomeValue);

Если LPSTR и подобные типы, тогда можно тоже примерно так же, но с помощю функции sprintf. Смотри в приложении пример. Там флоат, но замени в одном из sprintf спецификатор f на e и все у тебя выйдет. Удачи.

Приложение:

---------
Если в сердце дверь закрыта, нужно в печень постучаться

Ответ отправил: Jadd (статус: Практикант)
Отправлен: 22.09.2005, 20:27

Отвечает: Azat
Здравствуйте, Сергей Николаевич!

char *_gcvt ( double value, int digits, char *buffer );
char *_ecvt ( double value, int count, int *dec, int *sign );
char *_fcvt ( double value, int count, int *dec, int *sign );

Пример в приложении:

Приложение:

Ответ отправил: Azat (статус: 4-ый класс)
Отправлен: 22.09.2005, 23:08

Отвечает: Бартунов Сергей Олегович
Здравствуйте, Сергей Николаевич!
Использовать sprintf()
Cм. приложение

Приложение:

---------
Небо для Всех

Ответ отправил: Бартунов Сергей Олегович (статус: 3-ий класс)
Отправлен: 23.09.2005, 20:01

Отвечает: Raptor1
Здравствуйте, Сергей Николаевич!
1.
char str[255];
double dblTest=1.25;
sprintf(str,"%g",dblTest);
2.
int decimal, sign;
char *buffer;
double source = 3.1415926535;
buffer = _fcvt( source, 7, &decimal, &sign );

3. Самому разбирать число на запчасти и формировать из них строку, например
для получения целой части требуется разделить число на 10, отбросить дробную часть, умножить на 10 и вычесть результат из исходного числа - это будет младшая цифра, для получения дробной части надо отбросить целую часть а затем умножая остаток на 10 последовательно получить нужное количество цифр после точки
Ответ отправил: Raptor1 (статус: 7-ой класс)
Отправлен: 24.09.2005, 11:05

Отвечает: _DM_
Здравствуйте, Сергей Николаевич!
Либо воспользуйтесь функцией sprintf(), которая выводит форматированный текст в строку, например так:

sprintf(string,"%f", dParam);

либо воспользуйтесь строковым типом AnsiString который осуществит такой перевод автоматически, перегруженным оператором,

AnsiString str;
double Param = -11.152;
str = Param;
Ответ отправил: _DM_ (статус: 2-ой класс)
Отправлен: 24.09.2005, 19:58


Вопрос № 26.782
Здравствуйте, уважаемые эксперты!
Как создать произволный массив в Borland C 3.0.

{
randomize();
for (i=0; i<n; i++) mas[i]=random(100));
} --- не помогает.
Отправлен: 22.09.2005, 23:38
Вопрос задал: Стомов Евгений (статус: Посетитель)
Всего ответов: 5
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Boriss
Здравствуйте, Стомов Евгений!
Так это ж стандартный пример, по random запросите помощь и получите
Но истинно Сишные функции - это rand, srand :))

Приложение:

---------
Прорвемся! (Быть может :(( )

Ответ отправил: Boriss (статус: Профессор)
Отправлен: 23.09.2005, 07:58

Отвечает: Jadd
Здравствуйте, Стомов Евгений!
А что значит произвольный массив? Массив произвольной длины? Массив с рандомными значениями? Хорошо бы конкретно ставить вопрос. Исходя из кода, сложно понять что именно не помогает. Во-первых, чему равна n? Во вторых, какой размерности массив? Если это все, что есть в Вашей программе, тогда этого не достаточно. Массив - упорядоченная область памяти. Следовательно, пержде, чем туда что-то вносить, нужно выделить для него память. См. приложение.
Удачи.

Приложение:

---------
Если в сердце дверь закрыта, нужно в печень постучаться

Ответ отправил: Jadd (статус: Практикант)
Отправлен: 23.09.2005, 09:27

Отвечает: Rusland
Здравствуйте, Стомов Евгений!
Попробуй вместо random написать rand. Удачи.
---------
Пресловутое недостающее звено между обезьяной и цивилизованным человеком - это как раз мы. (Конрад Лоренц)
Ответ отправил: Rusland (статус: Студент)
Отправлен: 23.09.2005, 13:01

Отвечает: Бартунов Сергей Олегович
Здравствуйте, Стомов Евгений!
Если имеется ввиду массив произвольной длины, то это делается так:
randomize();
int size = rand() % 100 + 1;
const int max_random = 100;
int *array = new int [size]

for (int index = 0; index < size; index++)
array[index] = rand () % max_random; //Аналогично random(max_random)

delete [] array;

rand() - это просто макрос, причем есть он далеко не везде, так что прога может не пахать под другими компиляторами
---------
Небо для Всех
Ответ отправил: Бартунов Сергей Олегович (статус: 3-ий класс)
Отправлен: 23.09.2005, 20:08

Отвечает: Raptor1
Здравствуйте, Стомов Евгений!

randomize();
int mas[100];
for (i=0; i<100; i++)
mas[i]=rand()%100; // псевдослучайное число от 0 до 99
Ответ отправил: Raptor1 (статус: 7-ой класс)
Отправлен: 24.09.2005, 11:04


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

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

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

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

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


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


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

Яндекс


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

В избранное