Вопрос № 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.
Идти в цикле достаточно до середины строки.
Ответ отправил: 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()
{
Ответ отправил: 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. Насчет работы с родительскими и дочерними окнами я разобрался.
при запуске выводит такое:
[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 Комментарий оценки: Спасибо олбязательно этим воспользуюсь.