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

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


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

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

Выпуск № 728
от 03.05.2007, 14:05

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


Вопрос № 84452: Привет , Господа профессионалы ! Помогите пожалуйста ! Очень нужно к завтрашнему утру написать функцию проверки симметричности слова. (необходимо при решении задачи с палиндромами)... Заранее спасибо Всем кто откликнется ! С уваже...
Вопрос № 84500: 1.Возникла проблема импорта функций из dll, созданной на C++Builder6. Раньнше создавать dll на C++Builder6 не приходилось. Вообщем создал я в среде C++Builder6 dll c функцией MyFunc(): void __declspec(dllexport) MyFunc() { Messag...
Вопрос № 84542: Здравствуйте, помогите, пожалуйста, разобраться с ошибкой? установила С++ Bulder 6.5 , набрала для теста: #include <iostream.h> #include <conio.h> void main() { cout << " Доброе утро"; getch...
Вопрос № 84560: Ниже указн пиример создающий xls фаил, колонки в нем и записи. Вопрос как теперь бы эти записи аналогичным способм считать с этого файла в переменные sql запросом?...

Вопрос № 84.452
Привет , Господа профессионалы !
Помогите пожалуйста !
Очень нужно к завтрашнему утру написать функцию проверки симметричности слова.
(необходимо при решении задачи с палиндромами)...
Заранее спасибо Всем кто откликнется !
С уважением , Галя .
P.S.: если не трудно напишите пожалуйста комментарии....)
Отправлен: 27.04.2007, 14:44
Вопрос задала: Галя (статус: Посетитель)
Всего ответов: 5
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Mihasic
Здравствуйте, Галя!
Допустим проверка регистрозависимая, все слова (как и принято в си - массивы char, завершающиеся нулевым символом).
Код в приложении.

Суть:
Одновременно проходимся с двух сторон по строке и сравниваем символы. Если хоть одна пара не совпала - возвращаем значение false.
Идти в цикле достаточно до середины строки.

Пример:
1. str = "кабак"
2. len = 5
3. len_2 = 2
4. str[0] = str[5 - 0 - 1] = str[4] = 'к'
5. str[1] = str[5 - 1 - 1] = str[3] = 'а'
6. выход из цикла - возврат true

Приложение:

Ответ отправил: Mihasic (статус: 9-ый класс)
Ответ отправлен: 27.04.2007, 15:20

Отвечает: Sergijj
Здравствуйте, Галя!

Код процедуры в приложении.

Успехов!

Приложение:

---------
Стучитесь! И Вас откопают...

Ответ отправил: Sergijj (статус: 9-ый класс)
Ответ отправлен: 27.04.2007, 15:37

Отвечает: Sov
Здравствуйте, Галя!
Программа сравнивает 1 букву с последней буквой в слове, вторую с предпоследней и т.д.
Если есть хоть одно несовпадение выводится строка что это не палиндром.
Количество итераций равно половине длины слова

Приложение:

Ответ отправил: Sov (статус: 2-ой класс)
Ответ отправлен: 27.04.2007, 18:18

Отвечает: Терсков Сергей
Здравствуйте, Галя!
Такое ощущение, что про STL все просто забыли, а ведь там все проще и нагляднее...

Приложение:

Ответ отправил: Терсков Сергей (статус: 8-ой класс)
Ответ отправлен: 28.04.2007, 02:32

Отвечает: Mister Vova
Здравствуйте, Галя!

#include <iostream.h>
#include <string.h>

int SimSlovo( char *Slovo);// прототир

int SimSlovo( char* Slovo)// сама функция
{

int i=0,j=0;
j=strlen(Slovo)-1; // j присваивеем идекс последней буквы

for (i=0;i<=j;i++,j--)
{
if (Slovo[i]!=Slovo[j]) return 0; // если не ровны то выходим оз функции со знасением 0
}
return 1;// если равны то 1
}
int main()
{

char *a="asdfrrfdsa";

char *b="asdfrWWdsa";
cout<<SimSlovo(a)<<SimSlovo(b);
return 0;
}

Приложение:

---------
Всё про Себя Тут Www.SahajaYoga.Ru

Ответ отправил: Mister Vova (статус: 3-ий класс)
Ответ отправлен: 28.04.2007, 19:59


Вопрос № 84.500
1.Возникла проблема импорта функций из dll, созданной на C++Builder6.
Раньнше создавать dll на C++Builder6 не приходилось.
Вообщем создал я в среде C++Builder6 dll c функцией MyFunc():
void __declspec(dllexport) MyFunc()
{
MessageBox(NULL,"From dll","Dll message",MB_OK);
}
Дальше создал приложение, в котором вызыватеся эта функция(тоже в
С++Builder6). Вообщем сделал так:

typedef void (*MYFUNC)();
......
HINSTANCE h_dll=LoadLibrary("MyDll.dll");
MYFUNC dll_proc;
if(h_dll!=NULL)
{
dll_proc=(MYFUNC)GetProcAddress(h_dll,"MyFunc");
if(dll_proc!=NULL)
(dll_proc)();
FreeLibrary(h_dll);
}
Пробовал отладку, выяснил что после вызова GetProcAddress dll_proc==NULL, значит не может получить адрес функции.
Пробовал подключить к проекту dll .def-файл с экспортом,
компилирую, ругается линкер, выдает:[Linker Warning] Attempt to export non-public symbol \'MyFunc\'. Но все равно импортировать функцию
в приложение не могу.
Создаю такую же библиотеку в Visual Studio 2005. В том же приложении из этой библиотеки функция импортируется.
Но мне все же нужно создать библиотеку в С++Builder.
В чем можеть быть проблема?
2. Вопрос по С++Builder.У меня есть хэндл окна parent_wnd (тип HWND), как сделать так чтобы данное окно было родительским для созданной мной формы?
И как сделать эту форму WS_CHILD.
Visual C++ я создавал дочернее окно так:
CreateWindow(L"_Picture_", L"Picture", WS_CHILD|WS_VISIBLE|WS_CLIPCHILDREN,0, 0,90, 90,parent_wnd, NULL, hInst, NULL);

Отправлен: 27.04.2007, 20:32
Вопрос задал: Diver (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: kool
Здравствуйте, Diver!
По первому вопросу -
в def - файле нужно переименовать
функцию. Чтобы посмотреть имя функции
нужно использовать прогу dumpbin из VC, для
билдера есть своя (Забыл название)
Удачи!


---------
I am.
Ответ отправил: kool (статус: Студент)
Ответ отправлен: 27.04.2007, 22:34

Отвечает: Dr.Alex
Здравствуйте, Diver!
По первому вопросу попробуйте такое - использовать такой вызов функции
dll_proc=(MYFUNC)GetProcAddress(h_dll,"@MyFunc");
Почему-то Билдер добавляет к имени функции знак @.

Ответ отправил: Dr.Alex (статус: 10-ый класс)
Ответ отправлен: 30.04.2007, 23:28
Оценка за ответ: 4
Комментарий оценки:
Всем спасибо. Вообщем исследовал я свои dll-ки tdump-ом.
При использовании декларации extern "C"
к имени функции вначале прибавляется "_".
Имя функции будет такое _MyFunc.
Насчет работы с родительскими и дочерними окнами я разобрался.


Вопрос № 84.542
Здравствуйте, помогите, пожалуйста, разобраться с ошибкой?
установила С++ Bulder 6.5 , набрала для теста:
#include <iostream.h>
#include <conio.h>
void main()
{ cout << " Доброе утро";
getch();
}

при запуске выводит такое:
[Linker Error] Error: Unresolved external '__InitVCL' referenced from C:PROGRAM FILESBORLANDBDS4.0LIBCP32MTI.LIB|crtlvcl
[Linker Error] Error: Unresolved external '__ExitVCL' referenced from C:PROGRAM FILESBORLANDBDS4.0LIBCP32MTI.LIB|crtlvcl

я думала, сначала, билдер на диске паленый, купила другой диск, установила - та же проблема, я уж не знаю что делать, на с++ 3,1 все работает нормально.
спасибо!
Отправлен: 28.04.2007, 09:34
Вопрос задал: Mayra (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Терсков Сергей
Здравствуйте, Mayra!
Подобная тема здесь уже возникала. Подробнее по ней вот тут:

http://rusfaq.ru/info/question/67795

А вообще, этот текст не совсем соответствует текущему стандарту C++ (см. приложение)

Приложение:

Ответ отправил: Терсков Сергей (статус: 8-ой класс)
Ответ отправлен: 28.04.2007, 10:03
Оценка за ответ: 5
Комментарий оценки:
спасибо) ссылка как раз по теме) а писать проги мне надо в старых стандартах иначе, я так думаю, преподаватель не примет)

Отвечает: Sov
Здравствуйте, Mayra!
Вы должны создавать консольное приложение.
File->new->other->console wizard
Убрать флаг use vcl
Ответ отправил: Sov (статус: 2-ой класс)
Ответ отправлен: 28.04.2007, 10:54
Оценка за ответ: 5
Комментарий оценки:
Все так и было)

Отвечает: V1s0r
Здравствуйте, Mayra!

Не покупай больше Bulder :)
Компилируй, используя GCC или, на худой конец, VisualStudio.

gcc.gnu.org - GCC
www.mingw.org - порт для Windows
Ответ отправил: V1s0r (статус: 3-ий класс)
Ответ отправлен: 28.04.2007, 14:23

Отвечает: kool
Здравствуйте, Mayra!
При создании проекта нуно выбирать -
"Консольное приложение Win32" или что-то
вроде этого.
Успехов!

---------
I am.
Ответ отправил: kool (статус: Студент)
Ответ отправлен: 28.04.2007, 18:48


Вопрос № 84.560
Ниже указн пиример создающий xls фаил, колонки в нем и записи. Вопрос как теперь бы эти записи аналогичным способм считать с этого файла в переменные sql запросом?

Приложение:

Отправлен: 28.04.2007, 11:38
Вопрос задал: Tatarin (статус: 2-ой класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: kool
Здравствуйте, Tatarin!
Нужно использовать класс CRecordset и
его методы либо DoFieldExchange,либо GetFieldValue.
В прилож. пример из MSDN.
Удачи!

Приложение:

---------
I am.

Ответ отправил: kool (статус: Студент)
Ответ отправлен: 29.04.2007, 23:04
Оценка за ответ: 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.52 (beta) от 02.05.2007
Яндекс Rambler's Top100

В избранное