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

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


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

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

Выпуск № 737
от 12.05.2007, 19:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 482, Экспертов: 70
В номере:Вопросов: 5, Ответов: 6


Вопрос № 85762: Здраствуйте уважаемые эксперты! Хочу вас спросить вот по какому поводу: Имеется AnsiString строка, в которой содержатся слова, разделенные ; мне нужно выделить эти слова и добавить их в ListBox... у меня возникает проблема с определнием д...
Вопрос № 85834: Необходим help ,examples для C++Builder 6 по компонентам Office2k ( COM C++Builder Server Components Sample Pasckage (for Word, Excel итд.)) Подскажите где найти мой email smirnov@fastmail.fm...
Вопрос № 85856: Как сделать так чтобы еще в текстовый файл результат записывался))) Напишите сразу код плиЗ))))) #include <stdlib.h> #include <time.h> #include <iostream> #include <vector> using namespace st...
Вопрос № 85868: Здравствуйте! Подскажите пожалуйсто как программно (на С++) сформировать имя переменной....
Вопрос № 85872: Здравствуйте Эксперты Вот написал на С++ Builder, но немогу понять как сохранить в файл отрезанный от изображения фрагмент. т.е получаю не тот результат... если вывожу на форму то все как надо отрисовывается вырезанный кусок....а вот если сох...

Вопрос № 85.762
Здраствуйте уважаемые эксперты! Хочу вас спросить вот по какому поводу:
Имеется AnsiString строка, в которой содержатся слова, разделенные ;
мне нужно выделить эти слова и добавить их в ListBox...
у меня возникает проблема с определнием длины слова, а точнее, сколько знаков до ;
прошу помощи
с уважением Dima
Отправлен: 06.05.2007, 20:40
Вопрос задал: Le_san (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Sling
Здравствуйте, Le_san!
В приложении код. Правда писал я его в Visual Studio 2005, поэтому код врядли откомпилируется, если вы пользуетесь другой средой разработки.
Суть в том что строку можно разбить с помощью метода String.Split();

Код в приложении

Приложение:

---------
The fear of blood tends to create fear for the flesh

Ответ отправил: Sling (статус: 4-ый класс)
Ответ отправлен: 06.05.2007, 21:10
Оценка за ответ: 4
Комментарий оценки:
спасибо, но мне это не подходит, я пишу в билдере, там нет такого метода, да и вобщем не очень понятно

Отвечает: John Paramol
Здравствуйте, Le_san!
В приложении код. Дам некоторые пояснения. В AnsiString/ShortString/WideString индексация символов начинается с 1, что не свойственно C/C++, зато свойственно Pascal, потому как данные классы, да и вообще вся библиотека VCL написаны на Object Pascal. Подразумевается, что знаки ';' разделяют текст не на слова, а на строки в общем случае, которые могут содержать и не одно слово. Причем последняя строка в тексте не имеет в конце себя разделитедя ';'. Если он есть в конце текста, то последней строкой считается та, что находится за ним и является пустой строкой. Если переменная ShowEmptyStrings==true, то пустые строки тоже будут выводиться в ListBox. Если переменная TrimSpace==true, то удаляются пробелы перед и после каждой выводимой строки.
Удачи!

Приложение:

---------
1=2, at values 1 large enough

Ответ отправил: John Paramol (статус: 8-ой класс)
Ответ отправлен: 07.05.2007, 12:39
Оценка за ответ: 5
Комментарий оценки:
Спасибо, про индексацию я знал, не знал про метод SubString, спасибо за объяснения


Вопрос № 85.834
Необходим help ,examples для C++Builder 6 по компонентам Office2k
( COM C++Builder Server Components Sample Pasckage
(for Word, Excel итд.))
Подскажите где найти мой email smirnov@fastmail.fm
Отправлен: 07.05.2007, 10:06
Вопрос задал: Смирнов Анатолий Алексеевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Козлов А. С.
Здравствуйте, Смирнов Анатолий Алексеевич!
Посмотрите здесь:
http://www.all-ebooks.com/
http://natahaus.ru/
http://librus.ru/
---------
Вы доставили мне истинное удовольствие, взвалив на меня собственные проблемы, парни! (М. Фрай).
Ответ отправил: Козлов А. С. (статус: Студент)
Ответ отправлен: 07.05.2007, 10:51


Вопрос № 85.856
Как сделать так чтобы еще в текстовый файл результат записывался))) Напишите сразу код плиЗ)))))
#include <stdlib.h>

#include <time.h>

#include <iostream>
#include <vector>

using namespace std;

bool is_repeated(int number, const vector<vector<int> >& matrix) {

int n = static_cast<int>(matrix.size());
int m = static_cast<int>(matrix[0].size());

int count = 0;

for(int i=0; i<n; i++)
for(int j=i+1; j<m; j++)
if(number == matrix[i][j])
count++;

if(count > 1)
return true;

return false;
}

int main(int argc, char* argv[]) {

int n;
int m;

vector<vector<int> > matrix;

srand((unsigned)time(NULL));

n = rand()%10 + 1;
m = rand()%10 + 1;

int i, j;

for(i=0; i<n; i++) {

vector<int> v;

for(j=0; j<m; j++)
v.push_back(rand()%100);

matrix.push_back(v);
}

cout << "Initial matrix (" << n << " , " << m << ") :" << endl;

for(i=0; i<n; i++) {

for(j=0; j<m; j++)
cout << matrix[i][j] << " ";

cout << endl;
}

vector<int> not_repeated;

for(i=0; i<n; i++)
for(j=i+1; j<m; j++)
if(!is_repeated(matrix[i][j], matrix))
not_repeated.push_back(matrix[i][j]);

cout << endl << "None repeated elements at main diagonal is:" << endl;

for(i=0; i<static_cast<int>(not_repeated.size()); i++)
cout << not_repeated[i] << " ";

cout << endl << "And their count is: " << not_repeated.size() << endl;
return 0;
}
Отправлен: 07.05.2007, 12:49
Вопрос задал: Maratka (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Sling
Здравствуйте, Maratka!
В С++ вывод в файл очень похож на вывод на консоль. Только вместь cin и cout используются потоки, созданные в коде.
Перед строками, где добавился код, я добавил комментарии.

Приложение:

---------
The fear of blood tends to create fear for the flesh

Ответ отправил: Sling (статус: 4-ый класс)
Ответ отправлен: 07.05.2007, 22:01


Вопрос № 85.868
Здравствуйте!

Подскажите пожалуйсто как программно (на С++) сформировать имя переменной.
Отправлен: 07.05.2007, 14:13
Вопрос задал: Бердовский В.Р. (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: John Paramol
Здравствуйте, Бердовский В.Р.!
Не совсем понятен вопрос.
Если вам нужно узнать имя переменной во время выполнения, имея только указатель или ссылку на нее, то такой возможности нет. Можно лишь узнать имя типа, к которому она принадлежит, с помощью механизма RTTI (Runtime type identification). Но, вопреки ожиданиям, этот механизм не может опознать тип объекта по указателю на него, если указатель имеет тип (void*). Однако для распознания типа объектов полиморфных классов по ссылке на объект базового класса механизм подходит. Вы можете использовать оператор typeid, который возвращает ссылку на объект типа const type_info, который описывает данный тип. Класс type_info предоставляет операторы operator== и operator!=, которые можно использовать для проверки, принадлежат ли два объекта одному типу. Также имеется метод name, который возвращает указатель на строку, содержащую имя типа объекта.
В приложении пример.

Приложение:

---------
1=2, at values 1 large enough

Ответ отправил: John Paramol (статус: 8-ой класс)
Ответ отправлен: 07.05.2007, 15:30
Оценка за ответ: 4


Вопрос № 85.872
Здравствуйте Эксперты
Вот написал на С++ Builder, но немогу понять как сохранить в файл отрезанный от изображения фрагмент.
т.е получаю не тот результат... если вывожу на форму то все как надо отрисовывается вырезанный кусок....а вот если сохраняю в файл то получаю ту часть которая отсеклась,а вместо отразанного куска белое пространство, как буд-то белым брашем заполнено.
Может у кого есть пример как сохранить вырезанный кусок изображения в файл...очень нужно...один бъюсь и не могу понять...msdn перерыл clipping functions....очень буду рад помощи.

void __fastcall TForm1::Button1Click(TObject *Sender)
{
MyRgn= CreateEllipticRgn(10, 10, 200, 200);
LPRECT lprc;
Graphics::TBitmap *BrushBmp = new Graphics::TBitmap;
Graphics::TBitmap *CopyBmp = new Graphics::TBitmap;

try
{
BrushBmp->LoadFromFile("C:\2.bmp");
Canvas->Brush->Bitmap =BrushBmp;

if ((SelectClipRgn(Canvas->Handle, MyRgn))==ERROR)
{
s("ERROR")
}
PaintRgn(Canvas->Handle, MyRgn);
// BrushBmp->Assign(Clipboard());
CopyBmp=Canvas->Brush->Bitmap;
if ((SelectClipRgn(CopyBmp->Canvas->Handle, MyRgn))==ERROR)
{
s("ERROR")
}
PaintRgn (CopyBmp->Canvas->Handle, MyRgn);

CopyBmp->SaveToFile("c:\ter.bmp");
BrushBmp->SaveToFile("c:\44444.bmp");
Canvas->Brush->Bitmap->SaveToFile("c:\no.bmp");
SelectClipRgn(Canvas->Handle, NULL);
SelectClipRgn(BrushBmp->Canvas->Handle, NULL);
}
__finally {
Canvas->Brush->Bitmap = NULL;
BrushBmp->Free();
}
}

Отправлен: 07.05.2007, 14:24
Вопрос задал: Яркевич Денис Михайлович (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: John Paramol
Здравствуйте, Яркевич Денис Михайлович!

Можно сделать гораздо проще.
Пример в приложении.

Приложение:

---------
1=2, at values 1 large enough

Ответ отправил: John Paramol (статус: 8-ой класс)
Ответ отправлен: 07.05.2007, 15:51


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

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

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

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

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала 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.52 от 02.05.2007
Яндекс Rambler's Top100

В избранное