Jump to content
GSForum - Segélyvonal

Programozás C/C++-ban


Recommended Posts

Posted
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?

Posted

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;
}

Posted

De ez nem csak ESC-re megy, hanem az összes olyan jelre, aminek az ASCII kódja 27-tel osztható!

Posted

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.

Posted

Jogos, összekevertem a %-kal, ami ugye a modulus képzés. :upsz:

Posted

csutomi, te ezt kipróbáltad? Mert nálam így se jó. Csak azt nem értem, miért :pislog: .

 

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.

Posted

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ó? :démonikacaj:

 

Én nem javaslom, hogy külön fájlokat fordíts az binárisodba, mert extrém méreteket ölthet utána.

Posted

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.

Posted
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. ;)

Posted

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.

Posted

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?

Posted

A speakert bekapcsolni? :pislog:

Az mindig be van kapcsolva.

Posted

Akkor valami mégse jó. Nem ad hangot nálam linuxon sem.

Posted

A befordítást a resource editorral lehet megoldani.

Posted

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';
    }
}

Posted
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

Posted

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.

Posted

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.

Posted

Rosszul tudod. Mi egy Win-es progit fejlesztünk C-ben már 7 éve.

Posted

Nem tudnál küldeni néhány nagyon egyszerû példát?

Posted

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.

Posted

Kösz. Úgy tûnik, még van mit olvasgatnom. Remélem egyszer felfogom az általad leírtakat :?::(

Posted

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?!

Posted

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.

Posted

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?

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...