Delphi BDE Application Error
13 отговора
0 прегледа
Delphi BDE Application Error
Опитът ще си каже думата! Имам едно приложение на Делфи правещо връзка с MySql база данни на отдалечен хостинг. На моя компютър си работи нормално, но като се премести на друг дава грежка и не тръгва. Грешката не я питайте защото нищо не пише - Windows-ка грешка.
Пробвах: да инсталирам mysql драйвери
да инсталирам .net framework 2.0
други идеи?
Пробвах: да инсталирам mysql драйвери
да инсталирам .net framework 2.0
други идеи?
Re: Delphi BDE Application Error
Малко dummer-ски въпрос, ама сигурен ли си че имаш достъп до базата на отдалечения хостинг, да не би да е позоволено ползването й само от localhost?
Най просто - изпробвай с клиента на mysql-a:
mysql -h[remote_hosta] -u[user] -p[pass] [database]
дали ще успееш да се свържеш...
Най просто - изпробвай с клиента на mysql-a:
mysql -h[remote_hosta] -u[user] -p[pass] [database]
дали ще успееш да се свържеш...
Редактирано от mole. на
А версията на BDE MySQL драйвера
А версията на BDE MySQL драйвера, който е сложен на компютъра без MySQL сървър поддържа ли ти версията на MySQL сървъра?
Впрочем, нямам опит с BDE и MySQL (само съм пробвал преди време и не ми хареса), ползвам ZEOS компоненти за връзка на Делфи с MySQL (4.х).
И една препоръка - изтегли си някой клиент за MySQL (control center, MySQL front, има и платени: Navicat) или с по-новите MySQL сървъри върви mysql-administrator - удобни са за настройки и тест.
Впрочем, нямам опит с BDE и MySQL (само съм пробвал преди време и не ми хареса), ползвам ZEOS компоненти за връзка на Делфи с MySQL (4.х).
И една препоръка - изтегли си някой клиент за MySQL (control center, MySQL front, има и платени: Navicat) или с по-новите MySQL сървъри върви mysql-administrator - удобни са за настройки и тест.
Re: Delphi BDE Application Error
Ами що бе пиле БДЕ с MySQL? В този случай минамаш през допълнителен layer, който ще забави нещата, ако това е нещо на което държиш. Инсталираш ODBC драйвера за MySQL от сайта и работиш с ADO компонентите. Като решиш да си дистрибутираш приложението си инсталираш само ODBC драйвера + твоите неща.
Ако си още по-амбициозен си правиш нещо като application server с който обменяш данните по TCP/IP (Indy) и забравяш за инсталацията на драйвери за БД на клиентските компутри. Всъщност и вида на БД става подробност, защото може лесно да се параметризира.
Ако си още по-амбициозен си правиш нещо като application server с който обменяш данните по TCP/IP (Indy) и забравяш за инсталацията на драйвери за БД на клиентските компутри. Всъщност и вида на БД става подробност, защото може лесно да се параметризира.
Редактирано от Beco_ на
Re: Delphi BDE Application Error
ти това можеш ли го?
Ако ти го можеш значи си много добър.
Хайде да ме научиш ако искаш за MSSQL през TCP/IP.
Хайде пич сериозно.
Ако ти го можеш значи си много добър.
Хайде да ме научиш ако искаш за MSSQL през TCP/IP.
Хайде пич сериозно.
Re: Delphi BDE Application Error
Мога го, но не е на Делфи, а на C++ Builder - пак е VCL де. И не смятам, че съм много добър. Ако имаш конкретни въпроси питай.
Лек офф-топик - IdHTTP
Лек офф-топик - IdHTTP
Щом си добър на Инди, да питам - ползвал ли си IdHTTP сървъра на 9-та версия?
На мен ми се наложи да го дописвам, защото при неуспешен опит за отваряне ми харчеше памет.
Подозирам, че проблемът не е в самия компонент, а в начина по който го ползвам.
Добавил съм метод, който трябва да викам при Except на активирането на сървъра:
Щом си добър на Инди, да питам - ползвал ли си IdHTTP сървъра на 9-та версия?
На мен ми се наложи да го дописвам, защото при неуспешен опит за отваряне ми харчеше памет.
Подозирам, че проблемът не е в самия компонент, а в начина по който го ползвам.
Добавил съм метод, който трябва да викам при Except на активирането на сървъра:
{}procedure TIdHTTPServerNikB.TerminateListenerThreads_NikB; // H809
begin
TerminateListenerThreads; // H809
if FSessionCleanupThread<>nil then begin
FSessionCleanupThread.TerminateAndWaitFor;
FreeAndNil(FSessionCleanupThread);
end;
FSessionCleanupThread := nil;
FSessionList.Clear;
end;Re: Лек офф-топик - IdHTTP
Честно казано не мога да ти помогна. Работя с С++ Буилдера 6-та версия, който ползва по-стара версия на Indy. Когато компилирам с дебъг информация и CodeGuard не ми е давало, че има неосвободена памет. В моето "сървърче" TIdHTTPServer става само активен/неактивен и прихваща събитието OnExecute(), когато клиент се "вързва" към него.
Доколкото разбирам ти добавяш компонента с код, така ли?
Доколкото разбирам ти добавяш компонента с код, така ли?
Паметта се губи при неуспешен опит за Listen
Паметта се губи при неуспешен опит за Listen.
Ако портът е зает и се опитам да активирам на IdHTTP (Active:=true) се получава exception и не се освобождават част от обектите, ползвани при опита за активиране.
Ако портът е зает и се опитам да активирам на IdHTTP (Active:=true) се получава exception и не се освобождават част от обектите, ползвани при опита за активиране.
Re: Паметта се губи при неуспешен опит за Listen
Ако това е единственият случай при който се губи памет, защо не проверяваш предварително, дали порта е зает с няква ф-я? Имаше някъде списък на well known TCP/IP ports, които са запазени за най-често срещаните приложения. Аз лично ползвам за No на порт от 6000 нагоре. Мисля, че не можеше да сменяш No на порт, ако IdHTTP (Active:=true)
Не съм срещал подобна функция
Не съм срещал функция, даваща инфо дали даден порт е отворен (ОС със сигурност поддържа такава информация, вкл и кой порт с кой процес е свързан).
Мога да проверя с един обикновен сървърски сокет, но това, което направих, ми се струва по-добрата алтернатива.
Освен това, какъвто и порт да избера (
, дори и над 60000) все някога някъде може да е зает. А и клиентските приложения трябва да знаят къде да го търсят.
Мога да проверя с един обикновен сървърски сокет, но това, което направих, ми се струва по-добрата алтернатива.
Освен това, какъвто и порт да избера (
Re: Не съм срещал подобна функция
E, все някой порт ще е свободен
. Винаги можеш да провериш заетите с някоя безплатна програма или ти да използваш ф-ята GetTcpTable() за да направиш проверка в твоята програма.
Хубава функция :). (Има и недокументирано допълнен
Хубава функция :). Има и недокументирано допълненение:
{}function AllocateAndGetTcpExTableFromStack(pTCPExTable: PTMibTCPExTable; bOrder: BOOL; heap: THandle; zero: DWORD; flags: DWORD): DWORD; stdcall; external 'IPHLPAPI.DLL';
{}function AllocateAndGetTcpExTableFromStack(pTCPExTable: PTMibTCPExTable; bOrder: BOOL; heap: THandle; zero: DWORD; flags: DWORD): DWORD; stdcall; external 'IPHLPAPI.DLL';
Re: Хубава функция :). (Има и недокументирано допъ
Дано си оправиш проблема. Кажи какъв е крайния резултат, като приключиш.