horukk Posted January 18, 2006 Posted January 18, 2006 Ehh, hol vannak a régi szép idõk! Ezt mire értetted? Miért nincs hangjelzés az alábbi kóddal, ha ESC nem egy "egyszerû" karakter? Pl. 65-tel, azaz 'A'-val rendesen mûködik #include <iostream> using namespace std; const int ESC = 27; void main(void) { char ch; cout<<"Kerek egy karaktert: "; ch = cin.get(); if (ch == ESC){ cout<<"\a Esc"<<endl; } cin.get(); cin.get(); } Borland C++ builderrel készített bináris állomány kap egy ikont. Azt hogyan lehet eltávolítani?
csutomi Posted January 20, 2006 Author Posted January 20, 2006 Ez ugyan C-ben van (most nem áll a kezem a C++-ra), de így pl. mûködik: #include <stdio.h> int main (void) { char ch; scanf("%c", &ch); if (!(ch^27)) printf("\a\n"); else printf("Nincs hang, mert nem ESC-et nyomtál...\n"); return 0; }
arpsoft Posted January 20, 2006 Posted January 20, 2006 De ez nem csak ESC-re megy, hanem az összes olyan jelre, aminek az ASCII kódja 27-tel osztható!
csutomi Posted January 20, 2006 Author Posted January 20, 2006 Nem, nem, csak 27-re megy. Próbáld ki a '6'-tal, annak a kódja 54 = 27*2. A feltételben a ^ jel a XOR mûvelet.
arpsoft Posted January 20, 2006 Posted January 20, 2006 Jogos, összekevertem a %-kal, ami ugye a modulus képzés.
horukk Posted January 22, 2006 Posted January 22, 2006 csutomi, te ezt kipróbáltad? Mert nálam így se jó. Csak azt nem értem, miért . Ha bele szeretnék fordítani egy fájlt a bináris állományba, azt hogy tudom megoldani? Pl. egy foto.jpg állomány egy változóban szerepeljen. Így ha ezzel a képpel szeretnék csinálni valamit, akkor nem kéne mellékelni a programhoz.
csutomi Posted January 22, 2006 Author Posted January 22, 2006 Igen, kipróbáltam és le is fordult. (gcc fordítóval, de mindegyiken mûködnie kell, mert az ANSI szabvány utasításait használtam) Tudom, hogy h*lye kérdés, de nem lehet, hogy azért nem zenél neked, mert nincs bekapcsolva a hangszóró? Én nem javaslom, hogy külön fájlokat fordíts az binárisodba, mert extrém méreteket ölthet utána.
horukk Posted January 22, 2006 Posted January 22, 2006 Be van kapcsolva, pl 65-re, azaz 'A'-ra mûködik. A befordítás dolog azért érdekelne. Csak egy 200kB-os képet raknék bele.
csutomi Posted January 22, 2006 Author Posted January 22, 2006 A befordítás dolog azért érdekelne. Hát, hogy konkrétan C++ Builderben hogyan lehet, azt nem tudom. Sajnos azt nem ismerem (nekem túl drága program), de hátha más tudja. A hanghoz meg csak annyit tennék hozzá, hogy vagy a hangkártyán keresztül szólal meg, vagy a speakeren. Én például Linuxon próbáltam és ott a speakeren, de ha jól tudom, akkor Windowsban a hangkártyán. Esetleg még azt meg lehetne nézni, hogy a Windows vezérlõpult->hangoknál be van-e állítva minden. Pl. valamilyen alapméretezett hang, vagy ilyesmi.
horukk Posted January 22, 2006 Posted January 22, 2006 A befordítást ha általánosságban leírnád, az is jó lenne. Hátha át tudnám ültetni MinGW-re. A bippel meg valószínû, hogy szívat a windows. Mert olyan nincs, hogy szóközzel, a-val, b-vel, stb. mûködik, ESC-el és TAB-bal meg nem. Megpróbálom fedóra alatt lefordítani.
horukk Posted January 24, 2006 Posted January 24, 2006 csutomi, az általad írt kód linuxon jónak tûnik nálam is. Anjutával fordítottam. Azt nem tudod hogyan tudnám bekapcsolni a speakert FEDORAban?
csutomi Posted January 24, 2006 Author Posted January 24, 2006 A speakert bekapcsolni? Az mindig be van kapcsolva.
horukk Posted January 25, 2006 Posted January 25, 2006 Akkor valami mégse jó. Nem ad hangot nálam linuxon sem.
arpsoft Posted January 25, 2006 Posted January 25, 2006 A befordítást a resource editorral lehet megoldani.
horukk Posted January 26, 2006 Posted January 26, 2006 Kösz arpsoft. Addig eljutottam, hogy készült egy .res kiterjesztésû fájl, melynek mérete nem sokkal nagyobb, mint az eredeti kép, meg egy .rc kiterjesztésû is. Viszont nem tudom visszanyerni belõle a képet. Szerintem úgy lehetne, hogy a .res tartalmát kiíratnám fájlba bináris módban. De nem tudok mit kiíratni. Légyszíves segíts még egy kicsit ezzel kapcsolatban. ---------------------------------------------------- Nem tudom felfogni a kivételeket. Az alábbi kivételt egy egyszerû if-el is lehetne helyettesíteni. Akkor meg mi értelme a kivételeknek. Ha azt röviden el tudnátok magyarázni, talán segítene. #include <iostream> using namespace std; double osztas(int y){ if(y==0) throw"Osztas nullaval!"; return 5/y; } int main(){ try{ cout << "5/2= " << osztas(2) << '\n'; cout << "5/0= " << osztas(0) << '\n'; } catch(const char *p){ cout << p << '\n'; } }
csutomi Posted January 26, 2006 Author Posted January 26, 2006 Az alábbi kivételt egy egyszerû if-el is lehetne helyettesíteni. Akkor meg mi értelme a kivételeknek. Az az értelme, hogy a kivételek használatával el tudod különíteni a programkódot az ellenõrzéstõl. Nem folyik annyira egybe a programod és áttekinthetõbb lesz. Ööö, mégegy dolog, amit nem árt, ha tudsz: rosszul írtad a függvényed visszatérési értékét. Ez, hogy return 5/y egy egész számot ad vissza, de neked double kell! Ha helyesen akarod írni, akkor vagy azt csinálod, hogy return (double) 5/y, vagy pedig return 5.0/y
arpsoft Posted January 26, 2006 Posted January 26, 2006 A kivétel kezelés ennél egy kicsit többet is tud. A lényeg az, hogy a try részben több utasítás is szerepel. Ha ezek közül BÁRMELYIK hibát okoz, akkor a try-tól addig végzett mûveletek semmisek lesznek és a catch részre megy a vezérlés. Magyarul olyan, mintha azt mondanád, hogy most beülök az autómba, nekihajtok 200-al a falnak, aztán kiszállok és hazamegyek. Ez van a try-ban. Nyílvánvaló, hogy az elsõ két mûvelet még lefut, de a harmadik már hibás lehet. Ekkor elkezd visszafelé peregni a film, összerakódik az autód, elindul hátrafelé, egyre lassaban, aztán egyszer csak kiszállsz belõle, majd megyünk a catch részbe, ahol azt mondod: nem csinálom meg mégsem, mert nem élném túl. A másik problémádra a megoldást majd megkeresem, mert jelenleg a C++ helpje nincs betöltbe az agyamba, de majd reggel csinálok egy uploadot.
horukk Posted January 27, 2006 Posted January 27, 2006 Kösz a javítást és a hasonlatot. A fájl visszanyerést meg érdeklõdéssel várom. Én tulajdonképpen a C nyelvvel kezdtem el foglalkozni, de áttértem a C++-ra abból a megfontolásból, hogy tudjak írni ablakos programokat is, ne csak konzolost. Mert C-vel csak konzolosat lehet. Vagy rosszul tudom?? Ezt csak azért írtam le, mert nekem jó lenne akár egy ANSI C minta is a fájl befordításra és visszanyerésre.
arpsoft Posted January 27, 2006 Posted January 27, 2006 Rosszul tudod. Mi egy Win-es progit fejlesztünk C-ben már 7 éve.
horukk Posted January 27, 2006 Posted January 27, 2006 Nem tudnál küldeni néhány nagyon egyszerû példát?
csutomi Posted January 27, 2006 Author Posted January 27, 2006 Ez ugyan eléggé le van egyszerûsítve és a programnak csak egy részét tettem be, de egy-két dolog azért látszik rajta: #include "twindow.h" twindow service; LRESULT CALLBACK twproc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); void felhasznalo (void); char felh[20]; int WINAPI WinMain( HINSTANCE hI, HINSTANCE hPI, LPSTR lpCmdLine, int iCmdShow ) { service = twindow_default("Windows service"); service.windowproc = twproc; return twinmain(&service, &hI, &hPI, &lpCmdLine, &iCmdShow); } void felhasznalo (void) { int si = 20; GetUserName(felh, (LPDWORD) &si); twindow_messagebox(felh); } LRESULT CALLBACK twproc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) /* handle the messages */ { case WM_CREATE: break; case WM_LBUTTONDOWN: felhasznalo(); break; case WM_PAINT: break; case WM_CLOSE: PostQuitMessage(0); /* send a WM_QUIT to the message queue */ break; case WM_DESTROY: PostQuitMessage(0); /* send a WM_QUIT to the message queue */ break; case WM_KEYDOWN: switch ( wParam ) { case VK_ESCAPE: PostQuitMessage( 0 ); return 0; } break; } return DefWindowProc(hwnd, message, wParam, lParam); } A twindow.h-t ne keresd, azt én írtam az ablakok könnyebb kezeléséhez. A program azt csinálja, hogy behoz egy üres ablakot, ha rákattintassz az egérrel, akkor pedig egy üzenetet ad, hogy éppen milyen felhasználó használja a gépet. A twindow_default egy "konstruktor" szerûség (nem az), a paramétere az ablak címsora lesz. A méretet automatikusan állítja be, de lehet változtatni is kézzel. Az ablak twindow típusú (ez egy struktúra, amit én írtam és az ablak paramétereit tárolja). Itt a fõablak adatai a service változóban vannak.
horukk Posted January 28, 2006 Posted January 28, 2006 Kösz. Úgy tûnik, még van mit olvasgatnom. Remélem egyszer felfogom az általad leírtakat
csutomi Posted January 28, 2006 Author Posted January 28, 2006 Nem kell tõle megijedni, nem olyan nehéz. Viszont a Microsoft eléggé beújított vele, rengeteg az új elem (pl: üzenetküldés, horgok, ecsetek, tollak, ...). Egyszóval szerintem kicsit haladóbb szintû programozóknak való. De ha van hozzá kedved (vagy bárki másnak), akkor ajánlok egy nagyon jó könyvet. Az írójára nem emlékszem, de a cím: Könnyû a Windowst programozni?!
arpsoft Posted January 28, 2006 Posted January 28, 2006 Ezt én is csak ajánlani tudom! Nagyon jó könyv! Egyetlen probléma van cask vele, bár ez az összes programozós könyvemer igaz, pillanatok alatt lapjaira hullott.
horukk Posted February 1, 2006 Posted February 1, 2006 Sajnos azt a könyvet nem tudom megszerezni. Valami hasonlóan jót tudtok helyette? Nekem ezt ajánlották: Win32 API Windows Programozóknak. Ezt esetleg ismeritek?
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now