Doombringer Opublikowano 16 Stycznia 2006 Zgłoś Opublikowano 16 Stycznia 2006 Witam. Nie wiem, może ten temat już był. Jeśli tak to zgarne pewnie wszystkie kary jakie są. ale nie ważne. Potrzebuje pomocy i to szybki. Od niedawnego czasu programuje w C++ Builderze. Potrzebuje połączyć program z baza danych. Jakie funkcje i jak to zrobić wiem. Jest jednak jeden problem Wyszystkie funkcje obsługi Mysql mają najważniejsze dla mnie zmienne typu const *char. nawet funkcja wysyłająca zapytanie do bazy. Programy wykorzystują łańcuchy znaków. Może ktoś wie jak przekonwertować *char do const *char albo jak dane z pol w builderze wpisywać w funkcje obsługujące mysql? To jest jedyna zagadka dla mnie ale uziemia moje tworzenie programów Please Help!!!! Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Nargil Opublikowano 16 Stycznia 2006 Zgłoś Opublikowano 16 Stycznia 2006 eeeee... afaik powinno dzialac: na zwyklych lancuchach znakow, czyli jak masz wskazniki to *(wsk), albo po prostu "jakis napis" Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
NetWalker Opublikowano 16 Stycznia 2006 Zgłoś Opublikowano 16 Stycznia 2006 (edytowane) hehe ale wyjechałeś :P char *a = "ble"; const char *b; b = (const char*) a; funkcja( b ); lub funkcja( (const char*) a ); tzw konwersja typów - i wszystko jasne :wink: [ zakladam, że miałeś na myśli nie 'const *char' a 'const char*' ] Edytowane 16 Stycznia 2006 przez NetWalker Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Doombringer Opublikowano 16 Stycznia 2006 Zgłoś Opublikowano 16 Stycznia 2006 eeeee... afaik powinno dzialac: na zwyklych lancuchach znakow, czyli jak masz wskazniki to *(wsk), albo po prostu "jakis napis" Chyba nic nie kumam... Mażesz jaśniej. Wiesz już północ, ja w pracy... Szare komórki już śpią :) hehe ale wyjechałeś :P char *a = "ble"; const char *b; b = (const char*) a; funkcja( b ); lub funkcja( (const char*) a ); i wszystko jasne :wink: [ zakladam, że miałeś na myśli nie 'const *char' a 'const char*' ] Dobra to inaczej napisze bo już dziwne rzeczy pisze i nikt mnie nie rozumie :) funkcja mysql_connect: zmienne: const char *host, const char *user, const char *passwd Obiekt VCL pod tytułem HostEdit dostaje wartości która jest w: HostEdit->Text Nie powiem jak to dokładnie jest ale zmienna text jest tymu AsciiString czy coś takiego. powiem dokładnie jutro jak z roboty wróce W każdym bądx razie nie wiem narazie jak to pogodzić... Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
NetWalker Opublikowano 16 Stycznia 2006 Zgłoś Opublikowano 16 Stycznia 2006 (edytowane) Obiekt VCL pod tytułem HostEdit dostaje wartości która jest w: HostEdit->TextNie znam sie na VCL ale klasa HostEdit->Text [ bo klasą pewnie ona jest tak samo jak CString w MFC ] musi mieć własną funkcje, która zwraca wskaźnik do ciągu znaków [ zakończony zerem ] - poszukaj jej. [ w MFC jest to GetBuffer(min_znakow); ] Edytowane 17 Stycznia 2006 przez NetWalker Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 17 Stycznia 2006 Zgłoś Opublikowano 17 Stycznia 2006 W VCL jest to c_str(), wiec HostEdit->Text.c_str() Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Nargil Opublikowano 17 Stycznia 2006 Zgłoś Opublikowano 17 Stycznia 2006 (edytowane) zrodlo: http://www.cppfrance.com/code.aspx?ID=22502 Jak widac wszystko jest zrobione na zwyklych lancuchach znakow, a cast w przypadku: void f(const char *str){ cout << str;}int main(){ char *napis = new char[10]; char napis2[] = "aleluja"; strcpy(napis,"lol"); f(napis); // tu automatyczny "cast", a wlasciwie jego brak bo to przeciez to samo f(napis2); // tak tez dziala f("czesc"); // i tak tez return 0;}jest zbedny. Zobacz swoj kod: char *a = "ble";const char *b;b = (const char*) a; //zupelnie niepotrzebny castzarowno a jak i b sa wskaznikami. Ich wartosci to liczby calkowite oznaczajace adres w pamieci. "const" oznacza tylko tyle ze raz zdefiniowanej wartosci zmiennej nie idzie zmienic, ale mimo to wartosci jakie przyjmuja const char *a i char *b, sa takie same i niczym sie nie roznia. wiec absolutnie nie rozumiem NetWalker: "hehe ale wyjechales" I to raczej Ty wyjechales... char *a = "ble"; <--- tak sie nie przypisuje, fakt dziala, ale to jest brzydko :) a FiDo napisal rozwiazanie problemu autora. Do Autora: Gdybys od razu napisal ze masz problem z ansistring -> const char* to by bys otrzymal pomoc od razu :) Ty jednak napisales char* -> const char* co jest zupelna glupota. Edytowane 17 Stycznia 2006 przez Nargil Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 17 Stycznia 2006 Zgłoś Opublikowano 17 Stycznia 2006 A nie zauwazyles, ze chodzi o srodowisko BCB ? Tam nie ma stringow jako char* tylko sa one obudowane w klase AnsiStirng, wiec jesli chcemy przekazac jakis AnsiString do funkcji, ktora przyjmuje char* to trzeba wywolac na tym AnsiString'u metode c_str(). Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Nargil Opublikowano 17 Stycznia 2006 Zgłoś Opublikowano 17 Stycznia 2006 FiDo: a czy ja mowie ze nie ? Napisalem przeca ze twoj post jest rozwiazaniem problemu autora. Napisalem po prostu ze z 1 postu tego tematu nie wynika ze autor stosuje ansistringi. Może ktoś wie jak przekonwertować *char do const *char Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
NetWalker Opublikowano 17 Stycznia 2006 Zgłoś Opublikowano 17 Stycznia 2006 No masz racje cast niepotrzebny - walło mi sie z odwrotnością - wtedy jest wymagany [ z const char* do char* wywala błąd ] Z klasą miałem racje. char *napis = new char[10];a Ty nargil też wyjechałeś bo nigdzie nie zwalniasz pamięci dalej :wink: Najważniejsze, że problem jest rozwiązany EOT :) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Doombringer Opublikowano 18 Stycznia 2006 Zgłoś Opublikowano 18 Stycznia 2006 No masz racje cast niepotrzebny - walło mi sie z odwrotnością - wtedy jest wymagany [ z const char* do char* wywala błąd ] Z klasą miałem racje. char *napis = new char[10];a Ty nargil też wyjechałeś bo nigdzie nie zwalniasz pamięci dalej :wink: Najważniejsze, że problem jest rozwiązany EOT :) Sorka. Wtedy, kiedy to pisałem byłem lekko półśrednio przytomny wiec wybaczcie. Dzięki za rozwiązanie. Wreszcie rusze dalej. Jeszcze tylko jedno. BCB jest super ekstra ale ma drobną wade której sam nie usune. Program uruchamia sie po skompilowaniu ale tylko wtedy kiedy uruchamia się go z BCB. Bez niego nie daje się uruchomić be dwóch dll i borlanda. Wie ktoś jak sie pozbyć tego? Bede wdzięczny za pomoc. Pytanie może głupie ale ja dopiero zaczynam z BCB :) Pozdrawiam Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Doombringer Opublikowano 18 Stycznia 2006 Zgłoś Opublikowano 18 Stycznia 2006 Aha i jeszcze jedno. Tak przejżałem yen kod z podanego linku i musze przyznać ze przedstawia to co nie gra u mnie. Te wszystkie stałe potrzebuje zmieniać. od hosta do zapytania. Musze przyznać ze w PHP o wiele prościej jest to wszystko zrobić. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
NetWalker Opublikowano 18 Stycznia 2006 Zgłoś Opublikowano 18 Stycznia 2006 Sorka. Wtedy, kiedy to pisałem byłem lekko półśrednio przytomny wiec wybaczcie. Dzięki za rozwiązanie. Wreszcie rusze dalej. Jeszcze tylko jedno. BCB jest super ekstra ale ma drobną wade której sam nie usune. Program uruchamia sie po skompilowaniu ale tylko wtedy kiedy uruchamia się go z BCB. Bez niego nie daje się uruchomić be dwóch dll i borlanda. Wie ktoś jak sie pozbyć tego? Bede wdzięczny za pomoc. Pytanie może głupie ale ja dopiero zaczynam z BCB :) Pozdrawiam Nie wiem czy moge odpowiedzieć bo mnie ktoś objedzie :wink: A serio to poszukaj w opcjach projektu - linkowanie statyczne vcl'a [ czy jakoś tak ] - wtedy w pliku wykonywalnym będę także biblioteki właśnie vcl'a [ jeden exe'ec bedzie miał w sobie wszystko ] Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Doombringer Opublikowano 18 Stycznia 2006 Zgłoś Opublikowano 18 Stycznia 2006 Jeśli mam być szczery to myślałem zawsze że on automatycznie dodaje VCL do aplikacji. ale dzięki poszukam i jeszcze dam znać jak idą postępy :) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Nargil Opublikowano 19 Stycznia 2006 Zgłoś Opublikowano 19 Stycznia 2006 Te wszystkie stałe potrzebuje zmieniać. od hosta do zapytania. Musze przyznać ze w PHP o wiele prościej jest to wszystko zrobić.a moze tak napisac swoja funkcje ? inline void mojafunkcja(ansistring str){ zapytanieSQL(str.c_str());}albo jeszcze lepiej sprawdz jaki typ zwraca zapytanieSQL i wtedy inline typ mojafunkcja(ansistring str){ return zapytanieSQL(str.c_str());} Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Doombringer Opublikowano 19 Stycznia 2006 Zgłoś Opublikowano 19 Stycznia 2006 Coś pokombinuje. Dam jeszcze znać. Pozdrawiam Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Doombringer Opublikowano 22 Stycznia 2006 Zgłoś Opublikowano 22 Stycznia 2006 No wiec Wasze propozycje bardzo mi pomogły. Teraz jednak mam problem z samym builderem. Odkryłem, że oprócz dlli których się już pozbyłem, dołącza do mojej aplikacji kilka plików *.bpl Są one w katalogu windowsa i dopiero na innym kompie to wychodzi. już przeszukiwałem opcje ale nie znalazłem nic jak zrobić żeby wszystko było w moim pliku. Może ktoś zna to środowisko lepiej ? Pozdrawiam Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...