Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» FAQ по Borland C++ Builder

Автор: Razgildai
Дата сообщения: 06.06.2006 15:28
JohnC

Цитата:
У меня было желание использовать еще более низкий уровень - сырые (raw) сокеты. тогда открываются возможности для замены заголовков пакетов, в том числе и замены ip отправителя.

ну и как успехи?
Автор: JohnC
Дата сообщения: 06.06.2006 21:14
Razgildai
Желание пока так и остается желанием. Тут ведь работы много по изучению и экспериментов, а время, время ... свободного времени сейчас не так много...
Автор: kot3
Дата сообщения: 07.06.2006 06:53
royt

спасибо, жду
Автор: Razgildai
Дата сообщения: 08.06.2006 10:07
Написал вот такой код. Но что-то не коннектиться.
Все время получаю сообщение "Can't connect"? Пробовал разные хосты, даже в локалке, все равно не пашет. Помогите плиз.

Код: WSADATA wsaData;
struct sockaddr_in srv;
struct hostent* ip_addr;
int port,s;
char ip;
char* http_host="ya.ru";
if (WSAStartup(WINSOCK_VERSION, &wsaData)) {ShowMessage("Can't Initialize");return 0;}
ip_addr=gethostbyname(http_host);
if (!ip_addr) {ShowMessage("Can't Resolve Hostname");return 0;}
srv.sin_family=AF_INET;
srv.sin_port=25;
s=socket(AF_INET,SOCK_STREAM,0);
if (s==INVALID_SOCKET) {ShowMessage("INVALID_SOCKET");return 0;}
memcpy((char*)&srv.sin_addr,ip_addr->h_addr_list[0],ip_addr->h_length);
if (connect(s,(struct sockaddr*)&srv,sizeof(srv))==-1) {ShowMessage("Can't Connect");return WSAGetLastError();}
Автор: Razgildai
Дата сообщения: 09.06.2006 13:34
я уже разобрался - помог один товарищ, переделал код и заработало

Код: WSADATA wsaData;
struct sockaddr_in srv;
struct hostent* ip_addr;
int port,s;
char *InetAddr;
char* http_host="ya.ru";
if (WSAStartup(WINSOCK_VERSION, &wsaData)) {ShowMessage("Can't Initialize");return 1;}
ip_addr=gethostbyname(http_host);
if (!ip_addr) {ShowMessage("Can't Resolve Hostname");return 2;}
InetAddr = inet_ntoa (*(struct in_addr *)*ip_addr->h_addr_list);
memset(&srv, 0, sizeof(srv));
srv.sin_family=AF_INET;
s=socket(AF_INET,SOCK_STREAM,0);
if (s==INVALID_SOCKET) {ShowMessage("INVALID_SOCKET");return 3;}
//memcpy((char*)&srv.sin_addr,ip_addr->h_addr_list[0],ip_addr->h_length);
srv.sin_port=htons(80);
srv.sin_addr.s_addr = inet_addr(InetAddr);
s=socket(AF_INET,SOCK_STREAM,0);
if (s==INVALID_SOCKET) {ShowMessage("INVALID_SOCKET");return 4;}
if (connect(s,(struct sockaddr*)&srv,sizeof(srv))==-1) {ShowMessage("Can't Connect");return 5;}
Edit1->Text="Connected";
char *query=(char*)malloc(2048);
strcpy(query,"GET / HTTP/1.1\r\nHost: ya.ru\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en)\r\nAccept: */*\r\n\r\n");
if (send(s,query,strlen(query),0)==SOCKET_ERROR) return 6;
.....
Автор: spike
Дата сообщения: 14.06.2006 09:09
как работать с XML ?
1 - читать данные
2 - записывать их
Автор: royt
Дата сообщения: 14.06.2006 10:45

Цитата:
как работать с XML ?
например через Xerces
Автор: Static
Дата сообщения: 10.07.2006 17:36
Разрабатываю одну программу под C++ Builder 5. В ней постоянно используются функции для работы с файлами (конкретно fopen, fseek и некоторые другие). Все замечательно работало, файлы открывало, читало, писало... Потом я переустановил Винды, а с ними и Builder. Теперь при попытке запуска проги (подчеркиваю, перед переустановкой Винды все замечательно работало) выскакивает ошибка EAccessViolation. При компиляции говорит следующее:

Project Videoteka.exe raised exception class EAccessViolation with message "Access violation at address 32566694 in module CC3250MT.DLL". Read of address F861E898. Process stopped. use Step or Run to continue

В тексте программы компилятор подчеркивает функции для работы с файлами, конкретно - fseek, якобы ошибка в них. Любое использование этих функций - и все, остановка компиляции.

Самое интересное, что если я создаю новый проект и использую в нем эти же самые функции - все работает нормально.
Еще раз повторю, до переустановки Винды был абсолютно рабочий EXE-шник. Запускаю - не фурычит. Кстати, не фурычит везде: под другой виндой, на других машинах.

Если кто знает что это за проблема и как с ней бороться - сообщите, а то код довольно объемный, чего-то не улыбается все наново переписывать.
Автор: vkramnik
Дата сообщения: 10.07.2006 21:52
Static
1. А перейти на Билдер-6 нельзя ? Нужно обязательно на 5-м ?
2. Если нельзя, то попробуйте сделать следующее (мне помогало) :
а) Из каталога проекта удалить ВСЕ файлы *.obj, *.tds, *.~*, *.cgl
б) Останутся только *.cpp, *.h(pp), *.dfm, *.ddp, *.bpr, *.dsk, *.res
в) ПОЛНОСТЬЮ пересобрать проект командой Build Project
А, может, что-то в хидер-файлах порушилось ???
У меня тут намедни тожк аналогичное приключилось - только с СУБД...
Пока нафиг из исходника не убрал (временно!) БД-компоненты, пересобрал проект (с заглушками), потом снова добавил БД-шку - и все опять заработало... Уф, ну я и испугался...
Автор: Static
Дата сообщения: 10.07.2006 22:28
1. А разве проекты 6-го и 5-го Билдера совместимы? Мне говорили, что нет.
2. Не помогло...

Хидер-файлы - это чё?
Я не понимаю, почему EXE-шник не работает, выдавая ту же ошибку. Его-то я вообще не трогал! Последний раз когда я его запускал, он был абсолютно рабочим.
Автор: ItsJustMe
Дата сообщения: 11.07.2006 22:09
Не в курсе, насколько совместимы сами bpr файлы, но если BCB6 не прочитает файл от BCB5, то это совсем не проблема. Создай в BCB6 пустой проект и накидай туда свои исходники. VCL5 и VCL6 точно совместимы. Проверено.
Выкинь из папки с проектом все, кроме исходников. Пересобери его.
Все VCL libraries линкуй статически. Может глюк в динамическом обращении к ним?
И вот еще что. Ты уверен, что с CC3250MT.DLL ничего не случилось? Может, его вирус какой поел?
Автор: Static
Дата сообщения: 12.07.2006 08:40

Цитата:
И вот еще что. Ты уверен, что с CC3250MT.DLL ничего не случилось? Может, его вирус какой поел?

Вряд ли. Не мог он одновременно поесть все на одной машине. Тем более, при создании нового проекта таких ошибок не возникает.
Автор: monsoon
Дата сообщения: 12.07.2006 09:53
После перехода на BCB6 в формах dfm русские буквы заменяются юникодами.
В BCB5, если нужно было поменять во многих формах одно caption на другое никаких проблем не возникало. Теперь же нужно найти как старое название выглядит в юникоде, как новое будет в юникоде и после этого заменять или визуально перелопачивать все формы, но последним способом легко можно и пропустить нужную замену. Может есть еще другое решение?
Автор: Xarde
Дата сообщения: 13.07.2006 06:28
monsoon, решение есть. Причём, очевидное. Нужно всего лишь пользоваться при редактировании bpr-файла редактором, который знает юникод.

Кстати, у меня такая проблема тоже бывала. Причём, на шестом билдере. Правда, я патчи на него не ставил. Обычно помогало удаление всего генерящегося мусора и полная пересборка проекта, но был случай, когда и это не помогло. Пришлось весь проект вручную переносить в новый проект. То есть создал проект и давай туда все исходники тащить. Формы пришлось вручную делать, т.к. если я переносил их "автоматом", то проблема оставалась.
Автор: Static
Дата сообщения: 13.07.2006 09:49
2 Xarde:
Ну, раз ничаво другого не остается... Тогда придется заново тащить исходники в новый проект... Абыдна.
Автор: monsoon
Дата сообщения: 13.07.2006 10:05
Xarde
Какой редактор понимает юникод причем не в чистом виде, а в #1048#1057#1055#1054 и т..п.? Каким редактором можно сделать замену не открывая файлы по одному, а во всех сразу? Для чего редактировать bpr? Там никаких юникодов нет.
Не совсем понимаю как формы сделать вручную. И как сделать, чтобы при компиляции билдер их не затронул?
Автор: Kadavr
Дата сообщения: 13.07.2006 12:46
monsoon
Мои поиски ни к чему не привели, так что написал маленькую софтинку - SmallDFMHelper. Она конвертит ANSi2DFMUnicode и обратно. А для массовых замен - Search & Replace рулит

P.S. SmallDFMHelper конвертит с учётом того, чтобы потом исп-ть при работе с DFM. Т.е. вставляет лишние ''' и оставляет часть символов as is.
Автор: monsoon
Дата сообщения: 13.07.2006 14:33
Kadavr
Утилитка хороша, спасибо. Очень даже пригодится.

Цитата:
А для массовых замен - Search & Replace рулит

Это имеется ввиду для замены #1048#1057.... на #1048#1069...... ?
Такую можно почти в любом файловом менеджере осуществить.
Search & Replace имелся ввиду этот ?
Автор: Kadavr
Дата сообщения: 13.07.2006 16:38
monsoon
Создал топик для обсуждения этой темы - SmallDFMHelper и пр. утилиты для поиска/замены в DFM-файлах.

Да, именно для такой замены Мне больше по душе - этот Search & Replace. Файловые менеджеры не столь удобны (даже FAR с S&R), хотя и позволяют искать в архивах.
Автор: DeviL
Дата сообщения: 22.08.2006 14:09
Hi народ!
Вот возник тут вопрос. Можно ли в билдере работать не с hlp файлами а chm?
И какими функциями делать на него переход. У меня в проекте справка на hlp, вот думаю может сделать через chm формат - вроде как более продвинутый.
подскажите плиз
Автор: vadim100
Дата сообщения: 04.09.2006 13:12
Я вот хочу написать на С Builder на Open GL приложение с формой, кнопками полями и панелью с OpenGL. Не совсем получается перехватывать нажатия клавиш и мыши на форме. Поля ввода их перехватывают. Понимаю что надо свой обработчик событий писать.
Может кто поможет примером каркаса OpеnGL приложением с формой меню и т.д..
Автор: Slider88
Дата сообщения: 24.09.2006 17:16
как перенести программу на другой ком без билвера(если используеш база данных)
Автор: Mifon
Дата сообщения: 24.09.2006 18:29
Здравствуйте форумчане, подскажите как сделать четвёртую кнопку на заголовочной полосе окна в Builder? Для Дельфи не предлагать в инете много чего для него есть мне надо именно в Builder!!!!
Автор: Sergey913
Дата сообщения: 25.09.2006 15:28
Есть ли албтернатива регулярным выражениям в Delphi или возможность использовать регулярные выражения?
Автор: VadimLou
Дата сообщения: 26.09.2006 17:09
Sergey913
Цитата:
регулярным выражения

тебе нужна альтернати регулярным выражениям или движок для их использования ?
Если первое - то TMask, если второе - то есть куча free-шных движков...
Автор: ItsJustMe
Дата сообщения: 27.09.2006 01:39

Цитата:
как перенести программу на другой ком без билвера(если используеш база данных)

Откомпайлить без внешних packages и не использовать BDE.
Off: Зачем она вообще нужна эта BDE, если есть компоненты, работающие с Access и MS SQL Server?
Автор: Sergey913
Дата сообщения: 27.09.2006 09:13

Цитата:
Если первое - то TMask, если второе - то есть куча free-шных движков...

Несовсем что понял, что значит движок?
Вообще нужен компонент, если они как-то не встроены туда т.к. я сам не нашел их в Delphi
Вообще не важно регулярные там будут или нет, главное чтобы были такие же возмодности составления шаблонов (хотя лучше все же регулярные т.к. привык)
Автор: Slider88
Дата сообщения: 27.09.2006 15:46
извени, но нельзя-ли поподробней как откомпилить без пакетов и BDE(объясни плззззз)



просто оч нада, а времени 0... разбираюсь тока ночью, но нифига понять немагу
Автор: IgorXI
Дата сообщения: 10.10.2006 13:10
Решил написать свой компонент на BCB6, изучал примеры, но они все на Delphi, поскажите плз, как на C++ , будет выглядеть дельфийский inherited?
Автор: dyr farot
Дата сообщения: 10.10.2006 16:34
Parent::Method(...);

Страницы: 12345678910111213141516171819202122232425262728

Предыдущая тема: ms exchange


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.