definiowanie zmiennych w runtime

dział ogólny

definiowanie zmiennych w runtime

Nowy postprzez miko » poniedziałek, 21 grudnia 2009, 15:01

Mam nastepujace pytanie, moze ktos zna odpowiedz:
posiadam w programie klase:

Kod: Zaznacz cały
class Twarunki
{
public:
String war_id;
String war_sql;
String war_dsc;
};



nie chce jednak definiowac obiektów danej klasy przed wykonaniem sie kodu (np.: Twarunki *cw1)

ale kiedy uzytkownik wykona konkretna akcje chce powolac do zycia obiekt klasy Twarunki.
czyli: Twarunki *(--> tu nazwa zmiennej np. "cw"+IntToStr(kol)), gdzie [ "cw"+IntToStr(kol)] ma byc moim obiektem klasy Twarunki, do którego móglbym sie w pozniejszym czasie odwolac (np. String zmienna = cw1->war_id;)

Z gory dzieki za wszelka pomoc.
Avatar użytkownika
miko
Bladawiec
Bladawiec
 
Posty: 29
Dołączył(a): poniedziałek, 30 marca 2009, 12:11
Podziękował : 1
Otrzymał podziękowań: 0
    NieznanyNieznana

Re: definiowanie zmiennych w runtime

Nowy postprzez banita » poniedziałek, 21 grudnia 2009, 16:30

i w czym problem?
zrob wskaznik i alokuj pamiec dla niego kiedy uznasz to za stosowane.
jesli takie rozwiazanie ci nie odpowaida tzn ze masz zle podejscie do programowania i twoj projekt jest niepoprawny gdyz jest to naturalne i oczywiste rozwiazanie.
Avatar użytkownika
banita
Kreacjusz
Kreacjusz
 
Posty: 283
Dołączył(a): poniedziałek, 28 lipca 2008, 20:07
Podziękował : 1
Otrzymał podziękowań: 18
System operacyjny: Windows 7 Professional
Kompilator: C++Builder 2010 Update 5,
Delphi 2010 Update 5,
NetBeans 6.9(MinGw + Qt),
Visual Studio 2008 + Qt
Gadu Gadu: 0
    NieznanyNieznana

Re: definiowanie zmiennych w runtime

Nowy postprzez miko » poniedziałek, 21 grudnia 2009, 16:53

hmmm, nie wiem, albo nie jasno sie wyrazilem, albo moze i mam zle podejscie do programowania, nie wiem - nie jestem profsjonalista.
Wiec moze opisze sytuacje w jakiej potrzebuje tego kodu:
posiadam w programie okno filtra. Uzytkownik wybiera z poszczegolnych pol kombi (jak na zalaczonym obrazku)
Za kazdym razem kiedy uzytkownik doda jakis warunek moj program w tle sklada z tego fragment instrukcji SQL i dokleja go do reszty instrucji.
Zakladajac, ze uzytkownik dodal 3 warunki moja instrukcja sql wyglada tak:
"select * from tabela where "+cw1-> war_sql+cw2-> war_sql+cw3-> war_sql;
takich warunkow moze stworzyc sobie dowolna ilosc, np.:
(WEEKNO<13 AND WEEKNO>40 AND RISED_BY 'JOHN T.') OR (WEEKNO<10 AND WEEKNO>20 AND RISED_BY 'CARREN B.') OR TAG_CLOSED='FALSE'

...i tak dalej

chce, zeby kazdy warunek przechowywany byl w odrebnym obiekcie klasy Twarunek.
Taki obiekt; dajmy na to

cw1->war_id=1;
cw1-> war_sql=" AND WEEKNO>40";
cw1->war_dsc=" AND WEEK NUMBER IS LESS THAN 40";

Ale 'teoretycznie' uzytkownik moze stworzyc takich skladnikow sql'a nieskonczenie wiele. Moge 'na sztywno' zdefinowac obiekty klasy Twarunki
Twarunki *cw1; Twarunki *cw2, Twarunki *cw3 ........ Twarunki *cw100;
ale wlasnie takie rozwiazanie wydalo mi sie zlym podejsciem do programowania, ale moze sie nie znam...
jak wspomnialem - ucze sie dopiero klas i tak staram sie to jakos logicznie wykorzystac.
Dodam tyko, ze problem moze byc nieco oderwany od rzeczywistosci, ale czasami przydaje sie mozliwosc utworzenia calkiem nowej zmiennej typu dajmy na to int w trakcie dzialania programu.
Nie mozna przeciez zdeklarowac int Edit1->Text; (dzie Edit1->Text="P") alby otrzymac int p;
(znow tylko obrazowo)
Avatar użytkownika
miko
Bladawiec
Bladawiec
 
Posty: 29
Dołączył(a): poniedziałek, 30 marca 2009, 12:11
Podziękował : 1
Otrzymał podziękowań: 0
    NieznanyNieznana

Re: definiowanie zmiennych w runtime

Nowy postprzez Witold » poniedziałek, 21 grudnia 2009, 20:21

miko napisał(a):Ale 'teoretycznie' uzytkownik moze stworzyc takich skladnikow sql'a nieskonczenie wiele. Moge 'na sztywno' zdefinowac obiekty klasy Twarunki
Twarunki *cw1; Twarunki *cw2, Twarunki *cw3 ........ Twarunki *cw100;


Nie wiem czy dobrze zrozumiałem, może chodzi o coś takiego:

Kod: Zaznacz cały
#include <vector>
//---------------------------------------------------------------------------
struct Twarunek
{
  Twarunek(int war_Id, String war_Sql, String war_Dsc = "")
      : war_id(war_Id), war_sql(war_Sql), war_dsc(war_Dsc) {}

  int war_id;
  String war_sql;
  String war_dsc;
};
//---------------------------------------------------------------------------
// Wektor gromadzący warunki
typedef std::vector<Twarunek> TvecWarunki;
TvecWarunki vecWarunki;

void __fastcall TForm1::btn1Click(TObject *Sender)
{

  String csql = "select * from tabela";

  // dodawanie warunkow
  vecWarunki.push_back(
    Twarunek(1, "WEEKNO<13 AND WEEKNO>40 AND RISED_BY 'JOHN T.'"));

  vecWarunki.push_back(
    Twarunek(2, "WEEKNO<10 AND WEEKNO>20 AND RISED_BY 'CARREN B."));

  vecWarunki.push_back(
    Twarunek(3, "TAG_CLOSED='FALSE'"));

// składanie polecenia sql
  if ( vecWarunki.empty() == false ) csql += " where ";

  for (std::size_t i = 0; i<vecWarunki.size(); ++i)
    {
      csql += "(" + vecWarunki.at(i).war_sql + ")";
      if (i<vecWarunki.size()-1) csql += " OR ";
    }

  // test
  Caption = csql;
}
//---------------------------------------------------------------------------


pisane na szybko, mogą być błędy.

Za ten post autor Witold otrzymał podziękowanie od:
miko
Avatar użytkownika
Witold
Konstrukcjonista
Konstrukcjonista
 
Posty: 223
Dołączył(a): piątek, 29 sierpnia 2008, 10:53
Podziękował : 1
Otrzymał podziękowań: 14
Kompilator: bcb6, Turbo C++ Explorer
    NieznanyNieznana

Re: definiowanie zmiennych w runtime

Nowy postprzez miko » wtorek, 22 grudnia 2009, 10:20

Dziekuje :))) Wlasnie o to mi chodzilo :)

Bardzo pomoglo.

Pozdrawiam serdecznie :)
Avatar użytkownika
miko
Bladawiec
Bladawiec
 
Posty: 29
Dołączył(a): poniedziałek, 30 marca 2009, 12:11
Podziękował : 1
Otrzymał podziękowań: 0
    NieznanyNieznana


  • 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 5 gości