Вопрос № 104780: Здравствуйте.
Не подскажите как связать OpenSSL и Borland 6.0 C++? Скачал в интернете библиотеки для Builder 5 (для 6-о не нашел), скопировал в папку lib, так при вызове функции выдается ошибка [Linker Error] Unresolved external '_SSL_load_error_...Вопрос № 104833: Здраствуйте! как лучше создать n- мерный динамический масив??
Пытался что-то на подобе:
int **a;
a=new int[3][3];
Не получаеться!...Вопрос № 104842: Как из Dll можно узнать имя вызывающего exe...Вопрос № 104861: здраствуйте у меня возник вопрос как обозначить число которое может быть любым
в данном куске кода мне надо чтобы а равнялось нулю а б могло быть любым числом
заранее спасибо...Вопрос № 104866: здраствуйте!
ни как не могу понять с чем я ошибся
так как с анлийским у меня проблемы не могу понять что пишет мне компилятор
помогите исправить ошибки...Вопрос № 104872: Здравствуйте! У меня такая проблема: пишу код на Borland C++ Builder 6.0, вывожу данные типа double в Memo. Как можно ограничить число знаков после запятой заданным значением?...
Вопрос № 104.780
Здравствуйте.
Не подскажите как связать OpenSSL и Borland 6.0 C++? Скачал в интернете библиотеки для Builder 5 (для 6-о не нашел), скопировал в папку lib, так при вызове функции выдается ошибка [Linker Error] Unresolved external '_SSL_load_error_strings' referenced from C:PROGRAM FILESBORLANDCBUILDER6PROJECTSUNIT1.OBJ (вызов функции для примера). Насколько я понял, нужно самому создавать их из того, что лежит на официальном сайте, но как не имею понятия.
Спасибо.
Отправлен: 09.10.2007, 07:38
Вопрос задал: Иван Т. (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: kool
Здравствуйте, Иван Т.!
Нужно скачать еще и файлы *.dll
И все *.lib включить в проект.
Удачи!
--------- I am.
Ответ отправил: kool (статус: Практикант)
Ответ отправлен: 09.10.2007, 11:33
Вопрос № 104.833
Здраствуйте! как лучше создать n- мерный динамический масив??
Пытался что-то на подобе:
int **a;
a=new int[3][3];
Не получаеться!
Отправлен: 09.10.2007, 14:02
Вопрос задал: CruelHity (статус: 1-ый класс)
Всего ответов: 6 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: estiGi
Здравствуйте, CruelHity!
int ** arr = new int * [n1];
for (int i = 0; i < n1; i++)
{
arr [i] = new int [n2];
}
.....
for (int i = 0; i < n1; i++)
{
delete [] arr [i];
}
delete [] arr;
Ответ отправил: estiGi (статус: Студент)
Ответ отправлен: 09.10.2007, 14:09 Оценка за ответ: 5 Комментарий оценки: и вам спасибо!
Отвечает: V1s0r
Здравствуйте, CruelHity!
В приложении.
А вообще пользуйтесь вектором.
Приложение:
Ответ отправил: V1s0r (статус: 3-ий класс)
Ответ отправлен: 09.10.2007, 14:12 Оценка за ответ: 5 Комментарий оценки: B даже удаление вставили!! ну что спасибо 5))))
Отвечает: Aristos
Здравствуйте, CruelHity!
При создании n-мерного динамического массива каждая размерность (кроме первой) хранит массив указателей на массивы меньшей размерности.
В случае двумерного массива имеем:
int **a;
a=new int*[3]; // выделяем память под массив указателей на массивы размерности 1
for (int i = 0; i < 3; ++i)
a[i] = new int[3]; // создаем массив размерности 1, в котором будут храниться элементы
a[0][2] = 5; // обращние к элементу
Очистка памяти выполняется в обратном порядке:
for (int i = 0; i < 3; ++i)
delete[] a[i];
delete[] a;
--------- нет ничего невозможного
Ответ отправил: Aristos (статус: 7-ой класс)
Ответ отправлен: 09.10.2007, 14:16 Оценка за ответ: 5
Отвечает: Mihail Yarlykov
Здравствуйте, CruelHity!
Опишу необходимые действия при создании и работе с двумерным динамическим массивом:
1.Создать массив указателей на элементы выбранного типа.
2.Выделить память под каждый из этих элементов.
3.Использование такого массива ни чем не итличается от обычного статического.
4.Удалить выделеную память в порядке обратном созданию.
Смотрите пример в приложении:
Приложение:
--------- Нет ничего невозможного!
Ответ отправил: Mihail Yarlykov (статус: 1-ый класс)
Ответ отправлен: 09.10.2007, 14:47 Оценка за ответ: 5
Отвечает: kool
Здравствуйте, CruelHity!
Нужно так
int (*a)[3];
a=new int[3][3];
Удачи!
--------- I am.
Ответ отправил: kool (статус: Практикант)
Ответ отправлен: 09.10.2007, 16:34 Оценка за ответ: 4 Комментарий оценки: Да тоже интеересно! но это не совсем то что мне надо! Это вроде получаеться не совсем динамический массив! а так можно было подобно создать int a[3][3] и все! Ну все равно интересно что работает! спс!!
Отвечает: Гальцов Андрей Михаилович
Здравствуйте, CruelHity!
Правильно так: int **a;
a=new int[3*3];
--------- Да здравтствует С++!!!...;)
Ответ отправил: Гальцов Андрей Михаилович (статус: 4-ый класс)
Ответ отправлен: 09.10.2007, 21:27 Оценка за ответ: 2 Комментарий оценки: Это способ не рабоает!! работает так int *a; a=new int[3*3]; но этот не очень.Хоть и получаеться один массив можно работать как с двух мерным массивом но очень не удобно! приходиться не которые вычисления проводить!По смотрите первые ответы они на мой взгляд самые удобные!Но рад буду и увидить и другие!
Вопрос № 104.842
Как из Dll можно узнать имя вызывающего exe
Отправлен: 09.10.2007, 15:32
Вопрос задала: Vasilina (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 1)
Ответ отправил: mega (статус: 3-ий класс)
Ответ отправлен: 09.10.2007, 15:47
Отвечает: Aristos
Здравствуйте, Vasilina!
Вам поможет WinAPI-функция GetModuleBaseName() объявленная следующим образом:
DWORD GetModuleBaseName(HANDLE hProcess, HMODULE hModule, LPTSTR lpBaseName, DWORD nSize);
Если передать в первых 2х аргументах NULL, то функция вернет имя файла, использованного при создании процесса, т.е. искомый exe. Например, вот таким образом:
TCHAR szProcessName[MAX_PATH];
GetModuleBaseName(NULL, NULL, szProcessName, MAX_PATH);
--------- нет ничего невозможного
Ответ отправил: Aristos (статус: 7-ой класс)
Ответ отправлен: 09.10.2007, 15:50
Отвечает: Mihail Yarlykov
Здравствуйте, Vasilina!
Для этой задачи существует функция GetModuleFileName.
Привожу пример функции из dll, в которой она применяется:
Приложение:
--------- Нет ничего невозможного!
Ответ отправил: Mihail Yarlykov (статус: 1-ый класс)
Ответ отправлен: 09.10.2007, 15:53
Отвечает: Новак Александр Васильевич
Здравствуйте, Vasilina!
А также можно воспользоваться функцией GetCommandLine(), она возвратит имя файла с параметрами, а потом разобрать строку и выделить, то что надо
--------- ПОЛЬЗУЙТЕСЯ НАШИМИ ПРОГРАММАМИ, ПОДДЕРЖИТЕ РОССИЙСКИХ ПРОГРАММИСТОВ ИНАЧЕ МЫ ВЫМРЕМ КАК МОМОНТЫ. ;-)
здраствуйте у меня возник вопрос как обозначить число которое может быть любым
в данном куске кода мне надо чтобы а равнялось нулю а б могло быть любым числом
заранее спасибо
Отвечает: Mihail Yarlykov
Здравствуйте, Наговицын Артём Дмитриевич!
Во первых у вас ошибочно стоят знаки - ; после условных операторов if.
Насколько я понял вопрос относится к участку: "else if (a==0 && b==)".
Если b любое то его не зачем учитывать, т.е. просто не писать: "else if (a==0)".
Но можно записать и так: "else if (a==0 && b >= 0 && b < 0 )".
--------- Нет ничего невозможного!
Ответ отправил: Mihail Yarlykov (статус: 1-ый класс)
Ответ отправлен: 09.10.2007, 18:37 Оценка за ответ: 5 Комментарий оценки: большое спасибо очень помогло
Отвечает: Гальцов Андрей Михаилович
Здравствуйте, Наговицын Артём Дмитриевич!
Ну вопервых, при объявлении пременной (например int b), ей уже записывается ноль или мусор какойто(смотря в какой среде Вы пишите)...поэтому эту поверку можно опустить...но если Вам очень нужна эта проверка то проверте это число от -бесконечности до +бесконечности...и еще - убирите все ";" после else и if...
здраствуйте!
ни как не могу понять с чем я ошибся
так как с анлийским у меня проблемы не могу понять что пишет мне компилятор
помогите исправить ошибки
Отвечает: Mihail Yarlykov
Здравствуйте, Наговицын Артём Дмитриевич!
В приложении привожу исправленую программу:
Приложение:
--------- Нет ничего невозможного!
Ответ отправил: Mihail Yarlykov (статус: 1-ый класс)
Ответ отправлен: 09.10.2007, 19:06 Оценка за ответ: 1 Комментарий оценки: было 3 ошибки стало 120
Отвечает: kool
Здравствуйте, Наговицын Артём Дмитриевич!
В строке
"else if (a==0 && b >= 0 && b < 0 )"
убрать кавычки.
Зесь if (a<0 && b<0);
и здесь if (a<0 && b==7 || b==8);
убрать точку с запятой
Здесь так
int ret = fclose (in);
Удачи!
--------- I am.
Ответ отправил: kool (статус: Практикант)
Ответ отправлен: 09.10.2007, 19:54
Отвечает: Maxim V.G.
Здравствуйте, Наговицын Артём Дмитриевич!
Borland 5.02 выдал следующие ошибки:
Statment missing ; - понимать нехватает символа " ; "
Misplaced else - понимать - неправильно построена конструкция проверки условия
if () else
Undefined symbol - символ не определён - в Вашем случае забыли обявить тип переменной ret!
Я посоветую повнимательнее относиться к синтаксису прогрммы и проверять опечатки!
Исправленный вариант в приложении.
Приложение:
--------- Жить вредно - от неё умирают
Ответ отправил: Maxim V.G. (статус: 5-ый класс)
Ответ отправлен: 09.10.2007, 20:58
Отвечает: Гальцов Андрей Михаилович
Здравствуйте, Наговицын Артём Дмитриевич!
Вроде исправил...там были ошибки с else if...как я посмотрел там будет нормально написать просто if потому что идёт строгое условие...и еще вы забыли объявить переменную ret...fclose возвращает 0 если всё успешно, соответственно я и проверку переделал ret...
Здравствуйте! У меня такая проблема: пишу код на Borland C++ Builder 6.0, вывожу данные типа double в Memo. Как можно ограничить число знаков после запятой заданным значением?
Отправлен: 09.10.2007, 19:27
Вопрос задала: Start[er] (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Виктор Пырлик
Здравствуйте, Start[er]!
double x = 125.569056988;
String s = FloatToStrF(x,ffNumber,15,2);
---------
s = 125,57
String s = FloatToStrF(x,ffNumber,15,4);
---------
s = 125,5691
Посмотрите справку по этой функции. (Это только для C++Builder/Delphi)
--------- Если ничего не помогло - надо читать инструкцию
Ответ отправил: Виктор Пырлик (статус: Практикант)
Ответ отправлен: 09.10.2007, 19:48 Оценка за ответ: 5 Комментарий оценки: Огромное спасибо! Вы мне очень помогли!!!))