GoldWolf Temat założony przez niniejszego użytkownika |
» 2008-10-16 20:33:09 Wiesz dla żółtodzioba pewne aspekty są trudne do zrozumienia. Jak miałem na studiach programowanie to bardzo lubiłem język C, miałem ciekawą książkę i się go uczyłem. Potem przyszedł czas na C++(co za tym idzie konstruktor/destruktor) i ni w ząb rozumiałem o co w tym biega i wtedy pomyślałem sobie, że to za trudne. Ale potem ze względu na to, że nie było czasu na naukę języka C, bo zbliżała się tworzenie pracy. A że ostatni rok uczyliśmy się Flesha to pomyślałem napisze coś w ActionScript(oparty o C/C++) więc bez problemu było mi się w nim poruszać. Teraz nie chodzą do szkoły i pomyślałem, że czas się w czymś rozwijać, lubię programować. Pozostało tylko wybrać odpowiedni język. A ponieważ często słyszałem stwierdzenie, że podejście obiektowe ma zalety, to pomyślałem po co się bawić w C jak można spróbować C++(Java odpadła ze względu na toporność, chociaż słyszałem, że na zachodzie jest bardzo popularna i jakoby ma przyszłość). Nie chcę się tu spierać czy programowanie obiektowe jest lepsze czy gorsze, szczególnie, że moje doświadczenie jest znikome. Więc gdy zacząłem czytać o winapi to zły byłem, nie pozostaje mi nic innego jak stworzyć własne api ;-). |
|
lynx |
» 2008-10-16 21:02:11 Z tego co ty powiedziałeś chcesz połączyć program okienkowy z graficznym. Tak jak Pan Piotr mówi może być to trudne do zrobienia. Łatwiej by było aby najpierw był program okienkowy, a później graficzny. ;P Choć możesz spróbować w Devie napisać prostą aplikację graficzną, a później napisać kod aplikacji okienkowej. Mój projekt z początku jest okienkowy, a później dołącza do tego program graficzny. Bo z tego co pamiętam to konsola wtedy nie kasuje się, a jedynie minimalizuje, więc warto spróbować.
Może Ci się przydać funkcja system("sciezka");, ale to bardziej jeżeli byś tworzył dwie aplikacje. Poniewać ona uruchamia dany program. Przykładowo: system("c://lottek.exe"); |
|
GoldWolf Temat założony przez niniejszego użytkownika |
» 2008-10-16 21:18:41 Wydaje mi się, że idzie to obejść, jak wcześniej wspomniałem w Bulderze pod batona możesz cały kod podpiąć. Sprawdziłem nie ma z tym żadnych problemów. Jedynie trzeba się zastanowić jak to zrobić i wiadomo komunikaty z konsoli zamienić na odpowiednie w okienku. |
|
DejaVu |
» 2008-10-17 20:27:46 Jak wpadniesz na coś prostego to napisz - ja nie widzę prostej drogi na zrobienie tego. |
|
GoldWolf Temat założony przez niniejszego użytkownika |
» 2008-10-19 19:22:44 Teraz właśnie jestem w trakcie pracy nad nowym projektem, prostą gra tekstową pod moich znajomych, to postaram się zastosować właśnie to o co mi chodziło. Projekt trochę potrwa, ale wrzucę jakiś kawałek działającego kodu jak wszystko dobrze się ułoży to może i przed końcem miesiąca. |
|
GoldWolf Temat założony przez niniejszego użytkownika |
» 2008-10-21 21:14:38 Faktycznie nie ma prostego prze konwertowania aplikacji konsolowych na bildera, ale jak mówiłem prosto jest używać kod C++ w Bilderze. Wprawdzie projekt jest w fazie budowy. #include <string> #include <fstream> #include <iomanip> #include <cstdlib> #include <iostream> #include <vcl> #include "Unit1.h" #pragma hdrstop #pragma package(smart_init) #pragma resource "*.dfm" TForm1 * Form1; using namespace std; const char * plik = "Konfig.gra";
void osoba::zapamietaj( char * napis, int lata ) { strcpy( nazwisko, napis ); wiek = lata; }
struct pups { char nazwa[ 9 ]; }; int rek; int licz = 0; pups Gracze;
__fastcall TForm1::TForm1( TComponent * Owner ) : TForm( Owner ) { }
void __fastcall TForm1::FormCreate( TObject * Sender ) { Label1->Caption = "Wprowadź imię gracza ? Twórco ;-)"; }
void __fastcall TForm1::ZapiszClick( TObject * Sender ) { ofstream f( plik, ios::binary | ios::app ); if( !f.is_open() ) { Memo1->Text = "Błąd przy tworzeniu plku "; } if(( Edit1->Text ) != "\0" ) { strcat( Gracze.nazwa,( Edit1->Text ).c_str() ); Edit1->Clear(); f.write(( char * ) & Gracze, sizeof Gracze ); } Memo1->Text = sizeof Gracze; f.close(); }
void __fastcall TForm1::OdczytajClick( TObject * Sender ) { fstream p; p.open( plik, ios::in | ios::out | ios::binary ); if( p.is_open() ) { p.seekg( 0 ); Memo1->Text = "Plik konfiguracyjny: "; Memo1->Lines->Add( AnsiString( plik ) ); Memo1->Lines->Add( "--------------" ); while( p.read(( char * ) & Gracze, sizeof Gracze ) ) { Memo1->Lines->Add( AnsiString( Gracze.nazwa ) ); } } else { Label1->Caption += "Dupa !"; } if( p.eof() ) { p.clear(); } p.close(); }
|
|
GoldWolf Temat założony przez niniejszego użytkownika |
» 2008-10-21 21:19:01 #ifndef Unit1H #define Unit1H #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include <string> #include <fstream> #include <iomanip> #include <cstdlib>
class osoba { char nazwisko[ 80 ]; int wiek; public: void zapamietaj( char * napis, int lata ); void wypisz() { cout << nazwisko << ", lat: " << wiek << endl; } };
class TForm1 : public TForm { __published: TButton * Zapisz; TEdit * Edit1; TLabel * Label1; TMemo * Memo1; TButton * Odczytaj; void __fastcall FormCreate( TObject * Sender ); void __fastcall ZapiszClick( TObject * Sender ); void __fastcall OdczytajClick( TObject * Sender ); private: public: __fastcall TForm1( TComponent * Owner ); };
extern PACKAGE TForm1 * Form1;
#endif
Oczywiście, w bilderze jest dużo rozwiązań, które pewnie nie pozwoliłby mi się tak katować, ale dopóki ich nie znam to mogę spokojnie programować po staremu. |
|
GoldWolf Temat założony przez niniejszego użytkownika |
» 2008-11-17 21:34:54 Trochę to wszystko trwało ale tu jest poprawiony kod chociaż nadal w fazie beta bym powiedział #include <string> #include <fstream> #include <iomanip> #include <cstdlib> #include <iostream> #include <vcl> #include "Unit1.h" #pragma hdrstop #pragma package(smart_init) #pragma resource "*.dfm" TForm1 * Form1; using namespace std; const char * plik = "Konfig.ra"; streampos miejsce; char naz[ 9 ]; int rec = - 1;
void Gracze::zapamietaj( char * napis, int lata ) { strcpy( imie, napis ); licznik_gracza = lata; } void Gracze::show() { strcpy( naz, imie ); }
__fastcall TForm1::TForm1( TComponent * Owner ) : TForm( Owner ) { Label1->Caption = "Wprowadź imię gracza ? Twórco ;-)"; licz = 0; }
void __fastcall TForm1::ZapiszClick( TObject * Sender ) { ofstream f( plik, ios::binary | ios::app ); if( !f.is_open() ) { Memo1->Text = "Błąd przy tworzeniu plku "; } if(( licz > 1 ) ||( licz < 0 ) ) { Edit1->Text = "KONIEC!!!"; } else { if(( Edit1->Text ) != "\0" ) { licz++; strcpy( naz,( Edit1->Text ).c_str() ); G.zapamietaj( naz, licz ); f.write(( char * ) & G, sizeof G ); Edit1->Clear(); } } f.close(); Label3->Caption = licz; }
void __fastcall TForm1::OdczytajClick( TObject * Sender ) { p.close(); p.clear(); int pi = 0; p.open( plik, ios::in | ios::out | ios::binary ); if( p.is_open() ) { p.seekg( 0 ); Memo1->Text = "Plik konfiguracyjny: "; Memo1->Lines->Add( AnsiString( plik ) ); Memo1->Lines->Add( "------------------------" ); while( p.read(( char * ) & G, sizeof G ) ) { pi++; G.show(); Memo1->Lines->Add( AnsiString( naz ) ); Memo1->Lines->Add( AnsiString( licz = G.wypisz() ) ); } } else { Label1->Caption = "Dupa !"; } if( p.eof() ) { p.clear(); Label2->Caption = "Wprowadź nr rekordu: "; } }
void __fastcall TForm1::zatwierdzClick( TObject * Sender ) { bool tester; if(( Edit2->Text ) != "\0" ) { tester = isdigit( *(( Edit2->Text ).c_str() ) ) == 0 ? false : true; if( tester == true ) { rec = atoi((( Edit2->Text ).c_str() ) ); rec--; Label3->Caption =( AnsiString( rec ) ); } if( rec == 0 || rec == 1 ) { miejsce = rec * sizeof G; p.seekg( miejsce ); if( p.fail() ) { Label3->Caption = "Jakiś problem z rekordem(pozycją)"; } } else { Label3->Caption = "Błąd rekordu"; } p.read(( char * ) & G, sizeof G ); G.show(); Label1->Caption =( AnsiString( naz ) ); } else { Label1->Caption = "Dupa !"; } if( p.eof() ) p.clear(); Label2->Caption = "Wprowadź nową nazwę panie: "; }
void __fastcall TForm1::Button1Click( TObject * Sender ) { if(( Edit1->Text ) != "\0" ) { strcpy( naz,( Edit1->Text ).c_str() ); G.zapamietaj( naz, rec + 1 ); p.seekg( miejsce ); p.write(( char * ) & G, sizeof G ) << flush; Edit1->Clear(); } if( p.fail() ) Label3->Caption = "Jakiś problem z zapisem!"; p.clear(); p.close(); }
|
|
1 « 2 » 3 |