CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Projekt w BCB6 a RAD Studio 2010 C++

Projekt w BCB6 a RAD Studio 2010 C++

dział ogólny

Projekt w BCB6 a RAD Studio 2010 C++

Nowy postprzez butchermw » wtorek, 21 czerwca 2011, 11:05

Witam,

Mam pytanie odnoście kompilatora RAD Studio 2010, czy jest możliwość otworzenia projektu utworzonego w starszym kompilatorze takim jak BCB6??
Avatar użytkownika
butchermw
Bladawiec
Bladawiec
 
Posty: 23
Dołączył(a): niedziela, 26 grudnia 2010, 00:39
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: WinXP/Win7
Kompilator: Builder6
Builder2010
Gadu Gadu: 0
    Windows XPFirefox

Re: Projekt w BCB6 a RAD Studio 2010 C++

Nowy postprzez Cyfrowy Baron » wtorek, 21 czerwca 2011, 16:23

Jest możliwe, jednak ze względu na różnice w bibliotekach taki projekt się nie skompiluje. Ja swego czasu przenosiłem projekt z CodeGear RAD Studio C++Builder 2006 do środowiska Embarcadero RAD Studio C++Builder 2010 i musiałem go niemal w całości poprawiać. Głównym problemem są zmienne. Jeżeli w projekcie definiowałeś zmienne AnsiString, ale używałeś wyrazu String, to C++Builder 2010 będzie traktował taką zmienną jako UnicodeString a nie AnsiString, a UnicodeString jest obsługiwane inaczej. Dodatkowy problem to funkcje, które domyślnie obsługują UnicodeString. Istnieją co prawda ich odpowiedniki dla AnisString, ale ich nazwa kończy się na A, np. NazwaFunkcjiA. Nie wszystkie jednak funkcje mają swoje odpowiedniki w AnsiString i char, dla przykładu wszystkie funkcje klasy TApplication, np. Application->MessageBox obsługują tylko UnicodeString i wchar_t.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Projekt w BCB6 a RAD Studio 2010 C++

Nowy postprzez butchermw » wtorek, 21 czerwca 2011, 17:55

Ok, dzięki wielkie za wyjaśnienie.
Avatar użytkownika
butchermw
Bladawiec
Bladawiec
 
Posty: 23
Dołączył(a): niedziela, 26 grudnia 2010, 00:39
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: WinXP/Win7
Kompilator: Builder6
Builder2010
Gadu Gadu: 0
    Windows XPFirefox

Re: Projekt w BCB6 a RAD Studio 2010 C++

Nowy postprzez butchermw » poniedziałek, 4 lipca 2011, 12:56

Zacząłem pisać program w wersji 2010 i natknąłem się na problem, podczas wysyłania zapytania do bazy MySQL dostaję następujący błąd:

bez tytułu.JPG


Wysłany kod z C
Kod: Zaznacz cały
  Form1->ADODataSet1->CommandText="select Lp, Nr_zamowienia from baza_zamowien where Lp like '%"+Form2->Edit1->Text+ "%' ";
   Form1->ClientDataSet1->Active=true;                     


Dodam że wszystkie komponenty do połączenia są dobrze skonfigurowane, nie jestem do końca pewny ale chyba chodzi tu o część kodu '%"+Form2->Edit1->Text+ "%' , bo gdy wpisuje stałą np. 1 to działa bez problemu. Proszę o pomoc.
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
Avatar użytkownika
butchermw
Bladawiec
Bladawiec
 
Posty: 23
Dołączył(a): niedziela, 26 grudnia 2010, 00:39
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: WinXP/Win7
Kompilator: Builder6
Builder2010
Gadu Gadu: 0
    Windows XPFirefox

Re: Projekt w BCB6 a RAD Studio 2010 C++

Nowy postprzez Cyfrowy Baron » poniedziałek, 4 lipca 2011, 19:51

Masz ewidentnie jakiś błąd z Form2, ale nie podałeś dość informacji, by można było ten błąd zlokalizować. Jeżeli to projekt w C++Builder 2010 to wrzuć go do załącznika, tylko usuń z niego pliki tymczasowe.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Projekt w BCB6 a RAD Studio 2010 C++

Nowy postprzez butchermw » wtorek, 5 lipca 2011, 08:41

Zauważyłem że gdy wpisuje Form2->Edit1->Text w funkcji stworzonej prze zemnie typu void to mam właśnie ten błąd a jak wpiszę w np. przycisku Edit1->Text to jest OK, czym to może być spowodowane??

KOD Form2
KOD cpp:     UKRYJ  
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit2.h"
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;

//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void bazazam()
{
        //TU JEST PROBLEM//
        Form2->ADODataSet1->CommandText="select lp, nr_zamowienia, odbiorca, nr_zlecenia, data_1, data_2, data_3, stan_zam from rz_baza_zamowien where lp like '%"+Form2->Edit1->Text+"%' and nr_zamowienia like '%"+Form2->Edit2->Text+"%' and odbiorca like '%"+Form2->Edit3->Text+"%' and nr_zlecenia like '%"+Form2->Edit4->Text+"%' and data_1 like '%"+Form2->Edit5->Text+"%'and data_2 like '%"+Form2->Edit6->Text+"%' and data_3 like '%"+Form2->Edit7->Text+"%' and stan_zam like '%"+Form2->ComboBox1->Text+"%'  ";
        Form2->ClientDataSet1->Active=true;
        Form2->ClientDataSet1->Refresh();
}

void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action)
{
Action = caFree;
Form1->sform1=false;
}
//---------------------------------------------------------------------------

void __fastcall TForm2::Edit2Change(TObject *Sender)
{
        //TO DZIAŁA//
        ADODataSet1->CommandText="select lp, nr_zamowienia, odbiorca, nr_zlecenia, data_1, data_2, data_3, stan_zam from rz_baza_zamowien where lp like '%"+Edit1->Text+"%' and nr_zamowienia like '%"+Edit2->Text+"%' and odbiorca like '%"+Edit3->Text+"%' and nr_zlecenia like '%"+Edit4->Text+"%' and data_1 like '%"+Edit5->Text+"%'and data_2 like '%"+Edit6->Text+"%' and data_3 like '%"+Edit7->Text+"%' and stan_zam like '%"+ComboBox1->Text+"%'  ";
        ClientDataSet1->Active=true;
        ClientDataSet1->Refresh();
}
//---------------------------------------------------------------------------
 


PS gdy wywołam funkcję bazazam() w przycisku to jest błąd ten co wkleiłem wcześniej
Avatar użytkownika
butchermw
Bladawiec
Bladawiec
 
Posty: 23
Dołączył(a): niedziela, 26 grudnia 2010, 00:39
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: WinXP/Win7
Kompilator: Builder6
Builder2010
Gadu Gadu: 0
    Windows XPFirefox

Re: Projekt w BCB6 a RAD Studio 2010 C++

Nowy postprzez polymorphism » wtorek, 5 lipca 2011, 10:25

(...) a jak wpiszę w np. przycisku Edit1->Text to jest OK, czym to może być spowodowane??

Tym, że korzystasz ze złej zmiennej globalnej Form2. Zapewne obiekt klasy TForm2 tworzysz w sposób jawny, poprzez new, a taki sposób nie powoduje automatycznego przypisania wskaźnikowi Form2 poprawnego adresu. Zrób funkcję bazazam metodą klasy TForm2 i zapomnij o istnieniu Form2 (a także o istnieniu innych automatycznie wygenerowanych globalnych wskaźnikach FormX).
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Projekt w BCB6 a RAD Studio 2010 C++

Nowy postprzez butchermw » piątek, 8 lipca 2011, 10:19

W celu przybliżenia problemu, dodam że pracuje na formach MDI i forma 2 jest otwierana po przez skrypt:

KOD cpp:     UKRYJ  
TForm2 *NewForm= new TForm2(Application);
if(!NewForm) return;
NewForm->Caption="Rejestr zamówień";
NewForm->Show();


i chciałem tak zrobić by wszystkie komponenty odpowiedzialne za połączenie z bazą znajdowały się w formie2, programowałem wcześniej w BCB6 na zwykłych formach i tam było wszystko w formie podstawowej i nie było z tym problemu a teraz niestety ale coś mi nie chce to działać, dodatkowo chciałem zrobić oddzielną funkcję w której znajduje się zapytanie do bazy z uwzględnieniem filtrowania po przez użycie komponentu Edit.(skrypt zamieszczony w wcześniejszych wpisach)
Avatar użytkownika
butchermw
Bladawiec
Bladawiec
 
Posty: 23
Dołączył(a): niedziela, 26 grudnia 2010, 00:39
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: WinXP/Win7
Kompilator: Builder6
Builder2010
Gadu Gadu: 0
    Windows XPFirefox

Re: Projekt w BCB6 a RAD Studio 2010 C++

Nowy postprzez polymorphism » piątek, 8 lipca 2011, 10:40

Czyli jest dokładnie tak, jak napisałem. Zatem rozwiązanie, które podałem jest aktualne.

KOD cpp:     UKRYJ  
if(!NewForm) return;

To jest zbędne. new w domyślnej formie nie zwraca NULLa, tylko rzuca wyjątek bad_alloc, jeśli nie może przydzielić pamięci.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 2 gości

cron