- Nikon Z MILC fényképezőgépcsalád
- Kormányok / autós szimulátorok topikja
- Autóhifi
- LG LCD és LED TV-k
- OLED monitor topik
- Iszonyatos mennyiségű hulladékkal járhat a Windows 10 terméktámogatásának vége
- Vezetékes FEJhallgatók
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- Nvidia GPU-k jövője - amit tudni vélünk
- Milyen monitort vegyek?
-
PROHARDVER!
Új hozzászólás Aktív témák
-
emitter
őstag
válasz
Jester01 #1663 üzenetére
értem, köszi
ez egyre jobb.. teljesen kész vagyok: fordítom mindkét progit (server, kliens), ezután első futtatásra teljesen jól átjönnek az adtaok, minden OK, úgy ahogy szeretném
ezután második futtatásra már tök random cuccok érkeznek megez mitől lehet?!
csak az újrafordítás segít ezen..
na, felrakom a forrásokat, íme
server: [link]
kliens: [link] -
emitter
őstag
válasz
Jester01 #1661 üzenetére
igazad volt, még így látatlanban is megtaláltad a hibát
most viszont már a send() és recv() hívásokkal vagyok bajban, mert kiküldök send-del egymás után 3 adatot (mindegyik más hosszúságú char*), majd ezeket szeretném recv-elni, ami nem sikerül.. az első adat rendben megérkezik, a többi viszont sehogy sem akar eredeti formájában megérkezni..
ha jól tudom, ezek a hívások blokkolnak, szóval olyan nem lehet, hogy elmulasztok egy adatcsomagot a szinkronizáció hiánya miatt, ugye?
a kódot azért nem raknám be, mert tele van mindenféle debug-kiíratásokkal, még nekem is nehéz átlátnide ha gondolod, belinkelhetem..
szóval elvileg előfordulhat olyan, hogy sendelek 1 csomagot, megérkezik (ezután a fogadó oldalon csinálok egy csomó mindent - emiatt elképzelhető, hogy a következő csomag még eközben érkezik meg, így a fogadó fél lecsúszik a fogadásáról? van ilyen - vagy az oprendszer eltárolja vmi bufferban a beérkezett csomagokat?) -
emitter
őstag
válasz
Jester01 #1659 üzenetére
sprintf() köszi! ezzel jó
viszont újabb értelmetlen dolog előtt állok, van ez a kódrészlet:
cout << ''elotte\n'' << endl;
fseek(handle, wi.fp, SEEK_SET);
cout << ''utana\n'' << endl;
//komment kezdete
sprintf( buf_int, ''%d'', wi.sample_rate);
i = strlen(buf_int);
if(send(data_fd, buf_int, i, 0) == -1){
perror(''send'');
exit(1);
}
sprintf( buf_int, ''%d'', wi.bits_per_sample);
i = strlen(buf_int);
if(send(data_fd, buf_int, i, 0) == -1){
perror(''send'');
exit(1);
}
//komment vege
cout << ''elotte\n'' << endl;
fseek(handle, wi.fp, SEEK_SET);
cout << ''utana\n'' << endl;
----------
namost ez a következőt csinálja:
elotte
utana
elotte
Szegmens hiba
ha viszont a ''komment kezdete'' és a ''komment vege'' közti részt kikommentelem, akkor nem ad hibát, hanem
elotte
utana
elotte
utanatelejesen értetlen vagyok..
-
emitter
őstag
válasz
Jester01 #1643 üzenetére
hehe
télleg!
akkor azt hogyan oldjam meg, hogy a listába 4096bájt méretű elemeket pakoljak? merthogy nekem nem csak egy elem első bájtját kell átküldenem majd a hálózaton hanem mindet
vagy nem is kell 4096, de mondjuk 256 azért kellene..
Tyrael: nem tudom, nem lenne-e túl lassú tőle a dologde lehet h kipróbálom
[Szerkesztve] -
emitter
őstag
válasz
Jester01 #1635 üzenetére
köszi az észrevételeket, kijavítottam
viszont tényleg nemtom, h mitől nem bírja nromálisan átadni a FILE* mutatót, szal inkább azt csináltam, h bezárom a fájlt a fv végén, majd a main-ben újra megnyitomés seekelek oda ahol a stream kezdődik
most másfajta hibába ütköztem, de először megpróbálom kisakkozni a helyét..
ALI_G: nem tudom, én nem mentem bele ennyire mélyen
innen vettem a chunk-infókat, sztem megtalálod benne ami neked kell
[link] -
STibi_
csendes tag
válasz
Jester01 #1602 üzenetére
Kösz az ötletet, én is azt nézegettem lelkesen, hogy van-e valami használható kapcsolója a netstatnak. Mint ahogy írtam az volt a lényeg, hogy ne kelljen a (másik) monitort bámulni folyamatosan, hogy fent van-e valaki... Körbenéztem a neten, elég halott ötletek voltak, úgyhogy úgy csináltam meg, winexec-el kiküldöm 10 másodpercenként a netstat statisztikáját egy fájlba és azt nézegetem a progival. Így felcsatlakozásonként bead egy légvédelmi sziréna hangot.
Ökör egy megoldás, de a célnak megfelel.
-
-
#25954560
törölt tag
válasz
Jester01 #1603 üzenetére
nem eleg az nvram irkalasa sajnos, mert akkor siman cat
dosemuig ertem, csak tudod a lustasaghatha csinalt mar ilyet vki. levelegtem az alaplap gyartojaval (specko cpci kartya) es ok mondtak h hasznaljam azt a bbs interface-t, kuldtek is egy dos-os .exe-t h muxik
elotte persze tudtak jol h linux ala kellene, szal most ki vagyok veluk segitve.
-
emitter
őstag
válasz
Jester01 #1596 üzenetére
de akkor elvileg a nyers fordítatlan SDL-libraryban benne kéne legyen, nem? mint nyers szövegfájlban - pedig azt is átnéztem, és semmit nem találtam benne..
akkor ez így reménytelen?
írok a fejlesztőknek, h mi van már
egyébként nem tudom elképzelni, h mivel openszorsz, ne lenne meg valahol a fv forrása.. csakhogy eddig sehol nem találtam -
emitter
őstag
válasz
Jester01 #1594 üzenetére
kerestem, de nem nagyon találtam.. Krusaderrel végignéztem a /usr tartalmát fájlbéli kereséssel a fv nevére - semmi eredmény (kivéve az SDL_mixer.h extern-es sora)
amikor fordítom így, hogy:
gcc -o music_2 music_2.c -Wall -lncurses -lSDL_mixer
itt a ''-lSDL_mixer'' hova hivatkozik? Már csak ez az utolsó esély arra, hogy ebben van valahol a definíció, mert semelyik include nem húz be definíciós fájlt, másra meg nem tudok gondolni... -
-
emitter
őstag
válasz
Jester01 #1583 üzenetére
emitter@LAPTOP:~/Letoltesek/sdl-talk-1-examples$ gcc -o music music.c -Wall -lncurses -lSDL -lSDL_mixer -I/usr/include/SDL -I /usr/local/include/SDL/
music.c: In function 'main':
music.c:83: warning: passing argument 1 of 'Mix_PlayMusic' from incompatible pointer type
music.c: In function 'LoadMusic':
music.c:136: warning: assignment from incompatible pointer type
music.c: In function 'myMix_LoadMUS_RW':
music.c:168: error: invalid application of 'sizeof' to incomplete type 'Mix_Music'
music.c:168: warning: assignment from incompatible pointer type
emitter@LAPTOP:~/Letoltesek/sdl-talk-1-examples$
pedig leszedtem a csomag SDL-t, majd újraraktam forrásból a patchelt SDL-t, és forgattam volna a kódomat... [link] -
emitter
őstag
válasz
Jester01 #1580 üzenetére
nekem pedig nem jó
mind1, leszedtem libsdl-mixer1.2-dev csomagot, mindenhol beírtam egy struct-ot, elvileg jó kéne legyen, de nem:
(nem inklúdoltam a nemlétező SDL_mixer.h-t)
emitter@LAPTOP:~/Letoltesek/sdl-talk-1-examples$ gcc -o music music.c -Wall -lncurses -lSDL -lSDL_mixer -I/usr/include/SDL
music.c:24: error: syntax error before 'Mix_MusicType'
music.c:24: warning: no semicolon at end of struct or union
music.c:50: error: syntax error before 'fading'
music.c:50: warning: type defaults to 'int' in declaration of 'fading'
music.c:50: warning: data definition has no type or storage class
music.c:54: error: syntax error before '}' token
music.c: In function 'main':
music.c:72: warning: implicit declaration of function 'Mix_OpenAudio'
music.c:72: error: 'MIX_DEFAULT_FREQUENCY' undeclared (first use in this function)
music.c:72: error: (Each undeclared identifier is reported only once
music.c:72: error: for each function it appears in.)
music.c:73: error: 'MIX_DEFAULT_FORMAT' undeclared (first use in this function)
music.c:74: error: 'MIX_DEFAULT_CHANNELS' undeclared (first use in this function)
music.c:82: warning: implicit declaration of function 'Mix_PlayMusic'
music.c:85: warning: implicit declaration of function 'Mix_PlayingMusic'
music.c:90: warning: implicit declaration of function 'Mix_CloseAudio'
music.c: In function 'LoadMusic':
music.c:135: error: 'Mix_Music' undeclared (first use in this function)
music.c:135: error: syntax error before ')' token
music.c: In function 'myMix_LoadMUS_RW':
music.c:154: warning: implicit declaration of function 'Mix_SetError'
music.c:167: error: 'Mix_Music' undeclared (first use in this function)
music.c:167: error: syntax error before ')' token
emitter@LAPTOP:~/Letoltesek/sdl-talk-1-examples$
-----------
ha pedig inklúdolom a nemlétező headert, akkor csak ennyit ad:
emitter@LAPTOP:~/Letoltesek/sdl-talk-1-examples$ gcc -o music music.c -Wall -lncurses -lSDL -lSDL_mixer -I/usr/include/SDL
music.c: In function 'main':
music.c:82: warning: passing argument 1 of 'Mix_PlayMusic' from incompatible pointer type
music.c: In function 'LoadMusic':
music.c:135: warning: assignment from incompatible pointer type
music.c: In function 'myMix_LoadMUS_RW':
music.c:167: error: invalid application of 'sizeof' to incomplete type 'Mix_Music'
music.c:167: warning: assignment from incompatible pointer type
emitter@LAPTOP:~/Letoltesek/sdl-talk-1-examples$ -
emitter
őstag
válasz
Jester01 #1574 üzenetére
mod: frissítettem a kódomat a weblapomon..
asszem megtalűltam a headert: [link]
így inklúdoltam: #include ''music.h'' (azonos könyvtárban van a music.c-vel), de hibaüzit dob, hogy akadnak a music.h fv-ei más headerekével:
gcc -o music music.c -Wall -lncurses -lSDL -lSDL_mixer -I/usr/include/SDL
...
/usr/local/include/SDL/SDL_mixer.h:529: error: conflicting types for 'Mix_FadingMusic'
music.h:941: error: previous definition of 'Mix_FadingMusic' was here
/usr/local/include/SDL/SDL_mixer.h:530: error: conflicting types for 'Mix_FadingChannel'
/usr/include/SDL/SDL_mixer.h:532: error: previous declaration of 'Mix_FadingChannel' was here
/usr/local/include/SDL/SDL_mixer.h:567: error: conflicting types for 'Mix_GetChunk'
/usr/include/SDL/SDL_mixer.h:569: error: previous declaration of 'Mix_GetChunk' was here
....
stb
egy másik srác kipróbálta ugyanígy, neki nem akadtak, mi lehet a probléma?
----------------
megpróbáltam átrakni a Mix_Music definícióját a music.c kódomba:
struct Mix_Music {
Mix_MusicType type;
union {
#ifdef CMD_MUSIC
MusicCMD *cmd;
#endif
#ifdef WAV_MUSIC
WAVStream *wave;
#endif
#ifdef MOD_MUSIC
UNIMOD *module;
#endif
#ifdef MID_MUSIC
#ifdef USE_TIMIDITY_MIDI
MidiSong *midi;
#endif
#ifdef USE_NATIVE_MIDI
NativeMidiSong *nativemidi;
#endif
#endif
#ifdef OGG_MUSIC
OGG_music *ogg;
#endif
#ifdef MP3_MUSIC
SMPEG *mp3;
#endif
} data;
Mix_Fading fading;
int fade_step;
int fade_steps;
int error;
};
---
ha ezt a main elé berakom, így ahogy van, akkor jónak kéne lennie, nem? pedig nem jó, a fordító ugyanazt a hibát adja...
emitter@LAPTOP:~/Letoltesek/sdl-talk-1-examples$ gcc -o music music.c -Wall -lncurses -lSDL -lSDL_mixer -I/usr/include/SDL
music.c: In function 'myMix_LoadMUS_RW':
music.c:165: error: invalid application of 'sizeof' to incomplete type 'Mix_Music'
[Szerkesztve] -
emitter
őstag
válasz
Jester01 #1564 üzenetére
hát azt meg honnan tudjam, h jók-e a headerek
egyébként igazad van, ez tényleg csak egy mutató, de a progimban is mindenhol csak ilyen mutató típusú változókat deklaráltam, szóval elvileg ezzel nem kéne porbléma legyen..
ha átírom a
187: music = (Mix_Music *) malloc(sizeof(Mix_Music));
sort
187: music = (Mix_Music *) malloc(sizeof(Mix_Music*));
-ra, akkor már nem ad hibát erre, persze a, másik 3 hiba még marad..
egyébként mit jelent az, h dereferncing pointer.. szóval a többi hibaüzi mi miatt lehet?
ja, és ha vissza akarnám szedni a patchelt SDL-mixer libet, visszaállítani a régi hivatalost, akkor mit kell csnálnom? csak simán csomagból felrakom a régit? -
emitter
őstag
válasz
Jester01 #1559 üzenetére
no és én most mit csináljak ezzel?
music = (Mix_Music*) Mix_LoadMUS_RW(rw); // ---itt van a forditasi hiba---
ezt írtam, de ettől még éppúgy implicit deklarációra hivatkozik...
el tudnád magyarázni az utolsó link alapján, hogy a srácnak hogyan sikerült megoldani hasonló problémáját? sajna nekem nem világos a válaszokból ([link])
köszi -
emitter
őstag
válasz
Jester01 #1557 üzenetére
köszi!
egy újabb kérdés, ezt kapom fordításkor:
emitter@LAPTOP:~/Letoltesek/sdl-talk-1-examples$ gcc -Wall -lncurses -lSDL -lSDL_mixer -o mixer-demo mixer-demo.c
mixer-demo.c: In function 'LoadMusic':
mixer-demo.c:128: warning: implicit declaration of function 'Mix_LoadMUS_RW'
mixer-demo.c:128: warning: assignment makes pointer from integer without a cast
mixer-demo.c: [link]
ezt a kódrészletet, amivel pufferből mix_music-ot csinálok, itt találtam: [link]
a srácnak se működött valami miatt, de nem értettem, hogy mi is pontosan a megoldás, amit válaszoltak neki.. -
emitter
őstag
válasz
Jester01 #1551 üzenetére
ez alapján próbálkoztam, már működik a getch()
, csak akadtak egyéb problémák...
[link]
...
initscr();
cbreak();
do{
printw(''Pause - 'p' '');
printw(''\nResume - 'r' '');
printw(''\nStop - 's'\n'');
refresh();
do{
switch( c=getch() ){
case 'p' :
printf(''\nPaused\n'');
Mix_PauseMusic();
break;
case 's' :
printf(''\nStopped\n'');
Mix_HaltMusic();
exit(1);
break;
default :
break;
}
}
while(c!='r');
Mix_ResumeMusic();
}
while (Mix_PlayingMusic());
endwin();
...
szóval ez a kódom, de nagyon érdekes dolgokat csinál: ha 's'-t nyomok, akkor leállítja ugyan, kilép a progiból, csak:
- a promptot behúzza egy tabbal, és nem látom, amit beírok utána
- amit látatlanba írok parancsot, végrehajtja, de minden egyes kiírást eltol egy tabbal..
- ctrl+c-re sem lép ki ebből a hülyeségből, egy újabb tabbal odébbrakja a promptot
- csak exit-re lép ki a konzolból
ez mitől lehet??? -
ALI_G
veterán
válasz
Jester01 #1541 üzenetére
Van egy rakat fajta kötprogi, és 4 fajta nyelv közül lehet választani: prolog (logikai), occam (párhuzamos), haskell (funkcionális) és smalltalk (OO).
A prologot nem merem választani, bár egyenlőre ezt értem a legjobban. Nem sok progit adnak meg, amihez ez a nyelv jól használható.
occam: na ezt még nem is vettük, ezért főleg nem merek ebből választani.
haskell: gyakon nem értettem meg igazán.
smalltalk: ezt felfogtam többé kevésbé, csak elsőre túlságosan OO-nak néz ki (még a számok is objektumok), ha jól emléxem, ez az OO nyelvek őse, de legalább is az egyik. Ebből merném bevállalni vmelyik kötprogit.
A gondom, hogy wav-hoz azon kívül, hogy lejátszom nem értek, de sejtem, hogy nem egy nehéz művelet lehet egy hangcsatornákra bontás.
Szóval OO-ban, hogy is nézne ki kb. röviden a csatornákra bontás, hogy kell neki kezdeni. Van erről vmi leírás magyarul, hogy a wav fájlok, hogy néznek ki belülről, mik választják el a dolgokat. stb. Ha logikailag adnátok egy kis tanácsot merre induljak, feltehetőleg magam is rájönnék (ez csak egy gyenge sejtésde remélem nem tévedek).
-
emitter
őstag
válasz
Jester01 #1510 üzenetére
hát eléggé nehezen tudtam rájönni a megoldásra, de szerencsére megvan a dolog
akkora buffer kell neki, amekkora a mintavét-freki kétszerese (mono 16bit esetben)
szóval most szépen lejátsza a wavokat, viszont lejátszás után ilyeneket ír ki:
write to audio interface failed (Unknown error 44096)
vagy
Szegmens hiba
a kód: [link]
egyébként azt nem nagyon értem, hogy hogyan tudja a wavot úgy lejátszani, hogy csak egyszer fread()-eli, és utána egyszer hívja az snd_pcm_writei()-ttehát nem is kell az egész köré a while(!feof(wav_handle)) {...}
ezt nem értemszóval hogyan fér bele a ~44kb-os pufferembe az egész hanganyag??
ui: most felraktam a puffer méretét 88200-ra, így szépen hiba nélkül lefut... viszont így egy nagyobb wav-stream esetében hogyan fogom megoldani tudni a álózaton való átküldést, ha ez egyszerre akarja kinyomni a hangkártyának a puffer tartalmát... erre mi lehet a megoldás szerinted?
-
emitter
őstag
válasz
Jester01 #1508 üzenetére
nem értem ezt a paraméterezést!
pl. van egy PCM 16bit mono 11025Hz-es wavom, ezesetben mit mekkora értékűre állítsak?
snd_pcm_hw_params_set_format (playback_handle, hw_params, SND_PCM_FORMAT_S16_LE)
snd_pcm_hw_params_set_rate_near (playback_handle, hw_params, 11025, 0)
snd_pcm_hw_params_set_channels (playback_handle, hw_params, 2)
snd_pcm_writei (playback_handle, buf, 128)) !=128)
vagy egy másik wavnál: PCM 8bit mono 44100Hz - itt mekkorára állítsam a fentieket?
vagy tudnál adni egy linket, ahol ezek normálisan le vannak vezetve, hogy hova mekkora érték kell?
amúgy lejátsza a cuccot, csak kicsit érdekes hangon/gyorsasággal
és nem hw:0,0-val, hanem csal plughw:0,0-val (ez asszem konvertál, ha nem jók a paraméterek) -
Jester01
veterán
válasz
Jester01 #1507 üzenetére
Múködik szépen.
Az snd_pcm_writei kereteket (frame) ír, vagyis oda feleakkora szám kell mint ahány minta (sample) van mert 2 csatornát használsz. Ha ezután sem jó, akkor ellenõrizd, hogy a teszt wav tényleg 44.1kHz (ez nem fontos, legfeljebb gyorsabb-lassabb lesz), stereo S16LE (ez fontos) formátumú:
> file t.wav
t.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, stereo 44100 Hz -
emitter
őstag
válasz
Jester01 #1504 üzenetére
kirrály!!! megszólalt a hangszóróm!
csak az egyetlen dolog ami beárnyékolja az örömömet, hogy végre sikerült hangot lejátszanom - az, hogy csak egy hangon zümmög, valami a bufferral nincs rendben
megnéznéd a wav2.c-t?
mekkora buffert érdemes foglalni neki, és milyen gyakran érdemes a kártyára küldeni a hangot? -
emitter
őstag
válasz
Jester01 #1498 üzenetére
emitter@LAPTOP:~/BME_nemet/Prog2/Nagyhazi$ ./wav2 hw:0,0
Szegmens hiba
emitter@LAPTOP:~/BME_nemet/Prog2/Nagyhazi$ gdb wav2
GNU gdb 6.3-debian
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type ''show copying'' to see the conditions.
There is absolutely no warranty for GDB. Type ''show warranty'' for details.
This GDB was configured as ''i486-linux-gnu''...Using host libthread_db library ''/lib/tls/i686/cmov/libthread_db.so.1''.
(gdb) set args hw:0,0
(gdb) run
Starting program: /home/emitter/BME_nemet/Prog2/Nagyhazi/wav2 hw:0,0
[Thread debugging using libthread_db enabled]
[New Thread -1212152128 (LWP 9322)]
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1212152128 (LWP 9322)]
0xb7ea183c in snd_pcm_hw_param_set_near () from /usr/lib/libasound.so.2
(gdb) bt
#0 0xb7ea183c in snd_pcm_hw_param_set_near () from /usr/lib/libasound.so.2
#1 0xb7e98699 in snd_pcm_hw_params_set_rate_near () from /usr/lib/libasound.so.2
#2 0x08048a59 in main (argc=2, argv=0xbf935a74) at wav2.c:44
(gdb) quit
The program is running. Exit anyway? (y or n) y
emitter@LAPTOP:~/BME_nemet/Prog2/Nagyhazi$
a wav2 binárist az elején jó argumentummal indítottam?
mi az hogy szegmens hiba?
neked ez a progi működik?
itt van a jelenlegi wav2.c: [link] -
emitter
őstag
válasz
Jester01 #1496 üzenetére
az a negyedik karakter: id[4] nem
gdb még mindig nem okés
(gdb) set args -Wall -g -lasound -o wav2
(gdb) run gcc wav2.c
Starting program: gcc wav2.c
No executable file specified.
Use the ''file'' or ''exec-file'' command.
(gdb)
???
mit nem csinálok jól?
---
a bedrótozás azt jelenti, hogy megpróbálja a legáltalánosabb paraméterekkel lejátszani a wavot? -
emitter
őstag
válasz
Jester01 #1494 üzenetére
wav1.c:
most tettem a 4 karakter után egy lezáró \0-t is, de most is szegmens hibázik [link]
---
wav2.c:
gdb-t hogyan kell használni? ad egy promptot, oda mit írjak? (előtte -g-vel fordítottam a kódot)
egyébként mit értesz az alatt, hogy nem a wav-ból veszi a paramétereket a progi? ha nem abból, akkor honnan?
szóval ha jól értettem, akkor a snd_pcm_writei elé kell egy fread, ami a bufba beolvassa a wav tartalmát, kivéve az első x (44?) bájtot? -
emitter
őstag
válasz
Jester01 #1492 üzenetére
oké, köszi
már csak 2 warning maradt, azokkal egyelőre nem foglalkozom, viszont az id 4 bájtos karaktertömbbe egyáltalán nem csak az első négy bájt kerül, hanem valami szemét is, ugyanis kiíratva ezt kapom:
emitter@LAPTOP:~/BME_nemet/Prog2/Nagyhazi$ gcc -Wall -o wav1 wav1.c
wav1.c: In function 'main':
wav1.c:39: warning: pointer targets in passing argument 1 of 'strcmp' differ in signedness
wav1.c:44: warning: pointer targets in passing argument 1 of 'strcmp' differ in signedness
emitter@LAPTOP:~/BME_nemet/Prog2/Nagyhazi$ ./wav1
RIF˛˘żą˘żŘą˘ż˘^ޡ
Error: not a RIFF file
ahol az id értéke mindig ''RIF...'', azaz az első 3 karakter állandó, utána random szemét
kód: [link]
----
a minimal-playbacknél pedig ez van:
emitter@LAPTOP:~/BME_nemet/Prog2/Nagyhazi$ ./wav2 hw:0,0
Szegmens hiba
kód: [link]
a lejátszást akkor hogyan oldhatom meg? a végén a for ciklusban kell valamit csinálnom a bufferral - mit is pontosan? melyik fv küldi a buffer tartalmát a hangkártyának? -
emitter
őstag
válasz
Jester01 #1490 üzenetére
de nekem olyan progi kéne, ami _tényleg_ lejátsza a fájlt!
akkor a minimal-playback nem jó, helyette ott van ez a wav-loader [link]
viszont sajna ez is hibákat dob:
emitter@LAPTOP:~/BME_nemet/Prog2/Nagyhazi$ gcc -Wall -o wav1 wav1.c
wav1.c: In function 'main':
wav1.c:36: warning: pointer targets in passing argument 1 of 'strcmp' differ in signedness
wav1.c:38: warning: passing argument 1 of 'fread' makes pointer from integer without a cast
wav1.c:41: warning: pointer targets in passing argument 1 of 'strcmp' differ in signedness
wav1.c:44: warning: passing argument 1 of 'fread' makes pointer from integer without a cast
wav1.c:45: warning: passing argument 1 of 'fread' makes pointer from integer without a cast
wav1.c:46: warning: passing argument 1 of 'fread' makes pointer from integer without a cast
wav1.c:47: warning: passing argument 1 of 'fread' makes pointer from integer without a cast
wav1.c:48: warning: passing argument 1 of 'fread' makes pointer from integer without a cast
wav1.c:49: warning: passing argument 1 of 'fread' makes pointer from integer without a cast
wav1.c:50: warning: passing argument 1 of 'fread' makes pointer from integer without a cast
itt a kódom: [link]
ha ez a hivatalos kód, akkor miért hibázik ennyit? castoljam az összes kérdéses részt? -
emitter
őstag
válasz
Jester01 #1487 üzenetére
köszi, de sajna az asoundlib.h-ban csak újabb includok vannak, függvények nem... viszont egy (void*) casttal most szépen lefordul, nem warningol, viszont nem tudom, hogy milyen argot adjak meg indításkor:
...
if ((err = snd_pcm_open (&playback_handle, argv[1], SND_PCM_STREAM_PLAYBACK, 0)) < 0) {
fprintf (stderr, ''cannot open audio device %s (%s)\n'',
argv[1],
snd_strerror (err));
exit (1);
...
szóval ezalapján szerinted mit adjak meg neki, és hova írjam, hogy milyen wavot játsszon le? -
emitter
őstag
válasz
Jester01 #1484 üzenetére
a minimal playback program ([link]) kódját próbáltam egy-az-egyben futtatni, és egy sor hibát dobott:
emitter@LAPTOP:~/BME_nemet/Prog2/Nagyhazi$ gcc -Wall -o wav2 wav2.c
wav2.c:89: warning: return type defaults to 'int'
wav2.c: In function 'main':
wav2.c:127: warning: passing argument 3 of 'snd_pcm_hw_params_set_rate_near' makes pointer from integer without a cast
/tmp/ccIhl5R0.o: In function `main':
wav2.c:(.text+0x34): undefined reference to `snd_pcm_open'
wav2.c:(.text+0x4b): undefined reference to `snd_strerror'
wav2.c:(.text+0x87): undefined reference to `snd_pcm_hw_params_malloc'
wav2.c:(.text+0x9e): undefined reference to `snd_strerror'
wav2.c:(.text+0xd9): undefined reference to `snd_pcm_hw_params_any'
wav2.c:(.text+0xf0): undefined reference to `snd_strerror'
wav2.c:(.text+0x12d): undefined reference to `snd_pcm_hw_params_set_access'
wav2.c:(.text+0x144): undefined reference to `snd_strerror'
wav2.c:(.text+0x181): undefined reference to `snd_pcm_hw_params_set_format'
wav2.c:(.text+0x198): undefined reference to `snd_strerror'
wav2.c:(.text+0x1d7): undefined reference to `snd_pcm_hw_params_set_rate_near'
wav2.c:(.text+0x1ee): undefined reference to `snd_strerror'
wav2.c:(.text+0x22b): undefined reference to `snd_pcm_hw_params_set_channels'
wav2.c:(.text+0x242): undefined reference to `snd_strerror'
wav2.c:(.text+0x27d): undefined reference to `snd_pcm_hw_params'
wav2.c:(.text+0x294): undefined reference to `snd_strerror'
wav2.c:(.text+0x2c8): undefined reference to `snd_pcm_hw_params_free'
wav2.c:(.text+0x2da): undefined reference to `snd_pcm_prepare'
wav2.c:(.text+0x2f1): undefined reference to `snd_strerror'
wav2.c:(.text+0x33a): undefined reference to `snd_pcm_writei'
wav2.c:(.text+0x354): undefined reference to `snd_strerror'
wav2.c:(.text+0x393): undefined reference to `snd_pcm_close'
collect2: ld returned 1 exit status
---
ennek mi lehet az oka? ha int main()-re írom át, akkor is majdnem ugyanezeket dobja
pl. ''passing argument 3 of 'snd_pcm_hw_params_set_rate_near' makes pointer from integer without a cast'' - ha erre a függvényt így hívom, az jó?
snd_pcm_hw_params_set_rate_near (playback_handle, hw_params, (void*)44100, 0)
vagy honnan tudjam, hogy ez a fv milyen típusú mutatót vár 3. arg-ként?
és a többi undefined reference mit jelent?
---------
van egy másik próbálkozásom is, ez alapján: [link]
itt viszont vannak BYTE meg DWORD típusok, amit az ansi C nem ismer... ezek helyett írhatok CHAR, ill. INT típust, vagy ezeknek nem ugyanakkora a méretük?
[Szerkesztve] -
emitter
őstag
válasz
Jester01 #1475 üzenetére
értem, akkor írok destruktort is.
viszont ha nem adom ki a newfd-t, akkor hogyan mondom meg a send()-nek, hogy melyik fd-re üljön?
mod: ja és a mainből a destruktort hogyan kell hívni? ~myConn(); ra hibát dob, viszont sima myConn()-nál honnan tudja, hogy az a destruktor és nem egy arg-nélküli konstruktor?
[Szerkesztve] -
emitter
őstag
válasz
Jester01 #1473 üzenetére
Na, akkor tovább homályosítom a képet:
van egy myConn nevű osztályom:
class myConn{
private:
int newfd; //ezt meg
struct sockaddr_in client_addr; //ezt kell visszadnia majd a tagfv-eknek
void buildConn(){...} //ez a fv végzi a tényleges kapcsolatépítést
public:
myConn(const int srvport){ buildConn(srvport); }
~myConn(); //kell egyáltalán a destruktor???
int getFD(){ return newfd;} // 1. tagfv
sockaddr_in getClientAddr() { return client_addr;} // 2. tagfv
}
ez a vázlat eddig a szintig helyes?
mod: egy kis szintaktikai modding...
[Szerkesztve] -
emitter
őstag
válasz
Jester01 #1463 üzenetére
ja, hogy így kell hívni a length()-et
ez nem jött le a prototípusából
namind1
szóval, most van egy string s; cuccom, és ebbe getline-nal olvasok.
s.length() okés. viszont:
if(send(sockfd, s, s.length(), 0) == -1){
...
erre a fordító:
client.cpp:64: error: cannot convert 'std::string' to 'const void*' for argument '2' to 'ssize_t send(int, const void*, size_t, int)'
???
send() sem c++ függvény?
mod: igen, mind3-at behúztam
#include <iostream>
#include <string>
using namespace std;
[Szerkesztve] -
emitter
őstag
válasz
Jester01 #1461 üzenetére
jó, akkor átállok C++ valid függvényekre
első érdekesség: annak ellenére, hogy beinklúdoltam <string>-et, a g++ hibát dob, hogy length(), és size() was not declared in this scope...
pl így hívtam a size-t:
size(buf) //ahol buf char* típusú, de string típusúnál is ugyanezt dobja
mod: ja, és nem tudsz ajánlani egy jó kis c++ referenciát? mert a cpprefernce.com sokszor elég szűkszavú, meg számomra nem mindig egyértelmű
pl ez is: [link]
>> size_type length() const;
itt most a length mit vár? mi az a const uána
[Szerkesztve] -
emitter
őstag
válasz
Jester01 #1459 üzenetére
értem. én egyelőre a <string.h>-t inklúdoltam, akkor gondolom majd nyávog a fordító, ha abban nincs benne valami, ami a string-ben megvan már...
getline-t én is néztem már, de az meg string típusba olvas be, és azt nem tudom konvertálni char*-ba, pedig sok függvény meg csak char*-t fogad el
mi akkor a megoldás?
mod: ja még1: ha üres ENTER-t akarok érzékelin mondjuk arra, hogy ha egy chatprogiban az egyik fél üres entert nyom, akkor bezáródjon a beszélgetés, szóval akkor ezt hogyan tegyem? ilyenkor a buf változó értéke (amibe beolvasom a sztringet), mit tartalmaz? \n-t vagy \r-t, vagy mit?
[Szerkesztve] -
emitter
őstag
válasz
Jester01 #1454 üzenetére
hehe, régen volt... de miért is nem jó ez a castolás?
ign, megnéztem, nem castolja át
int MYPORT = atoi(argv[1]);
így már jó a myport értéke, de a kliens még mindig nem csatlakozik... lehet, h vmi tűzfal-féleség megfogja? Sima ubuntum van, nem állítottam be semmiféle tűzfalat... igaz, egy routeren keresztül netezek, de a localhost kérés nem megy ki a routerig, vagy igen? -
emitter
őstag
válasz
Jester01 #1452 üzenetére
nemjó
Connection refused.
miért fájt ez a myportos sor
oké, sin_size mostantól socklen_t, de nem ez volt a hiba
mondom, az az érdekes, hogy netstat nem látja hallgatózni a server-t
(amúgy ha a servert háttérben futtatom - &-vel, akkor utána hogyan tudok kilépni belőle - kill nélkül?)
mod: és frissítettem a kódokat is a neten
[Szerkesztve] -
emitter
őstag
válasz
Jester01 #1450 üzenetére
emitter@LAPTOP:~/BME_nemet/Prog2/Nagyhazi$ nc 127.0.0.1 9999
(UNKNOWN) [127.0.0.1] 9999 (?) : Connection refused
emitter@LAPTOP:~/BME_nemet/Prog2/Nagyhazi$ nc LAPTOP 9999
localhost.localdomain [127.0.0.1] 9999 (?) : Connection refused
emitter@LAPTOP:~/BME_nemet/Prog2/Nagyhazi$ ./client LAPTOP 9999
connect: Connection refused
és itt a két forráskód, server.cpp: [link]client.cpp: [link]
egyébként a gcc nem tud c++t fordítani, vagy rosszul tudom? és a g++ fordító nekem nem sírt, amikor a precedenciás-részt fordította... neked hogyhogy lefordult gcc-vel?
most átírtam mindent ahogy mondtad, zárójel nélkülire, de ugyanaz a helyzet. Az az érdekes, h netstat -l nem látja a server-t, pedig az fut (ps aux), és eljut az accept()-ig, mert ez még kiírja:
Halott folyamatok eldobva.
mind2 rész a 9999-es portot használja, (a kliens szintén, így, amit néztél kódot, még lehet, h egy régebbi verzió volt)
akkor a socklen_t-s részt hogyan csináljam? sin_size-t longintként hozzam létre, és úgy castoljam (socklen_t*)-vel
köszi, hogy segítesz! -
Orc
senior tag
válasz
Jester01 #1426 üzenetére
Nem jó, mert ha pl. van egy while ciklusban egy for ciklus és abban egy elágázás majd abban az exit, akkor nem lép ki mindenből, sajnos a while ciklus utáni résszel is foglalkozik.
pl.:
while [[]valami]]
do
for (valami)
do
if [[valami]];then
a=1
echo alma
exit 1
fi
done
done
echo mogyoró
(echo $a)
Azt akarom, hogy ha almát kiír, akkor mogyorót már ne írjon ki, de ez így nem müködik, mind a kettőt kiírja.
A másik meg az, hogy hiába adtam meg az ''a'' változó értékét ez elágazásban a script végén az echo $a nem ír ki semmit(pedig azt kiírja, hogy alma).
mod: Olyan hatású parancs kellene, ami ugyanazt csinálja, mintha a script futása közben nyomnék egy ctrl+c-t.
[Szerkesztve] -
emitter
őstag
válasz
Jester01 #1398 üzenetére
Szép feladat.
De azért nem reménytelen, ugye?
Nem értem, hogy miért különbözőek a két rendszer által küldött streamek... ez nem csak a hangkártyától függ? Mi az a full-duplex hangkártya, és mit csinál?
El tudnád magyarázni, hogy hogyan is fog működni a rendszer?Szóval milyen formátumban szaladgálnak majd a hangok, hogyan küldöm/fogadom őket, a dolog hálózati része, ilyesmik...
Mire guglizzak rá, hogyan induljak el?
thx
mod: hálózatokhoz, hang-cuccokhoz lövésem sincsszóval jó lenne valami olvasnivaló
[Szerkesztve] -
emitter
őstag
válasz
Jester01 #1328 üzenetére
na, így egy fokkal jobb, de a fflush vhogy nem műxik
szóval azt szeretném, h ha nyomok 1 entert, vagy bármilyen más billt, akkor az ne jelenjen meg a képernyőn. Ráadásul most csak az entert érzékeli lenyomásként, a többi karakterre nem írja ki h ''gomnyomas tortent''
emitter@LAPTOP:~$ ./time_select
0
gomnyomas tortent 1
2
gomnyomas tortent 3
gomnyomas tortent 4
gomnyomas tortent 5
6
j7
gomnyomas tortent 8
9
emitter@LAPTOP:~$
vagy nem volt érthető, h mi a hiba
ja és getch()-re parázik, csak getchar-t fogadja el
time_select.c.text+0xac): undefined reference to `getch'
collect2: ld returned 1 exit status
mod: kód: [link]
[Szerkesztve] -
Protezis
őstag
válasz
Jester01 #1327 üzenetére
Kösz szépen
Igen, elolvastam, amit írtál, és ezt mondtad valóban, csakúgy, mint én a válaszomban. Mindössze a jegyzetemet nem értem. Akkor egyetlen magyarázat az ottani példára, hogy azok globális változók, azért nics ott a static (és mégis az adatszegmensben vannak)
Mégegyszer köszönöm -
Protezis
őstag
válasz
Jester01 #1322 üzenetére
Azt olvasom, hogy ha a global scopeban (nem ez a válasz a kérdésedre?
) deklarálok static kulcsszóval egy változót, az a fájl scopeba kerül, adatszegmensben lesz eltárolva, ha függvényen belül deklarálom, akkor csak az adott blokkon belül lesz látható, de a blokkból való kilépéskor nem szűnik meg, értékét megtartja, tehát ekkor is az adatszegmensben lesz eltárolva.
Ez így világosnak tűnik számomra. Lényegében ezt mondtad te is, csak én annyival mondtam többet a jegyzet alapján, hogy mindkét esetben az adatszegmensben lesz. De objektumok esetén is így kell eljárni? De akkor az a.) pontban miért nincs ott a static szó a típus előtt?
Mert úgy a logikus, hogy csak akkor kell adatszegmensben tárolnom valamit, ha annak a program futása alatt végig léteznie kell, ehhez pedig kell a static szó függetlenül a különböző láthatóságokon. Fraction a; mitől sztatikus? pfffff -
emitter
őstag
válasz
Jester01 #1318 üzenetére
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/time.h>
int
input_timeout (int filedes, unsigned int seconds)
{
fd_set set;
struct timeval timeout;
/* Initialize the file descriptor set. */
FD_ZERO (&set);
FD_SET (filedes, &set);
/* Initialize the timeout data structure. */
timeout.tv_sec = seconds;
timeout.tv_usec = 0;
/*
// select returns 0 if timeout, 1 if input available, -1 if error.
return TEMP_FAILURE_RETRY (select (FD_SETSIZE,
&set, NULL, NULL,
&timeout));
*/
}
int
main (void)
{
fprintf (stderr, ''select returned %d.\n'',
input_timeout (STDIN_FILENO, 9));
return 0;
}
pedig 5-öt ír ki, illetve azt amit megadok neki az input_timeout-nál
azt mondtad h szedjem ki a temp_failure-t, hát kiszedtem, de így meg a select ha jól látom, nem is hívódik meg sehol...
a timeout-ot még mindig nem értem: ez a kód hol számol vissza, mettől, és egyáltalán miért jó nekem ha visszaszámol? Vagy hogyan értelmezzem ezt a timeout-dolgot -
Protezis
őstag
válasz
Jester01 #1313 üzenetére
És az adatszegmensbe mikor kerül? Ha static-ként hozom létre?
Jegyzetben ez van:
''a.) sztatikus objektum létrehozása az adatszegmensben
Fraction a, b, c(3), D(5,2), e(”12/65”) ;
b.) lokális objektum létrehozása a veremben
void Add(Fraction f1, Fraction f2 = Fraction(”0/1”))
{
Fraction res(0) ;
...
}
A fenti Add eljárásban szereplő Fraction(0,1) egy úgynevezett objektum konstans. Objektumokat tartalmazó kifejezésekben vagy default paraméterek esetén használhatjuk.
Objektum példányokból további összetett adatstruktúra építhető fel: például tömb, mátrix, létrehozható objektum példányra mutató pointer, vagy objektum példány értékű függvény.
Fraction f = 32 * Fraction(6,8) + Fraction(9,15) ;
Fraction f[5,5], *pFr, Add(Fraction &, Fraction &) ;''
És van a dinamikus, az érthető. De ha a sztatikus objektum kerül az adatszegmensbe, akkor az a) pontban miért nincs előtte, hogy static?
Igen, én is úgy tudtam C-beli tanulmányaim alapján, hogy függvényen belül deklarált változó a verembe kerül, C++ -ban ráadásul belső blokkon belül is deklarálhatunk, és a blokkból való kilépésnél meg is szűnik. De így meg az a) pont nem világos. -
emitter
őstag
válasz
Jester01 #1307 üzenetére
De ezzel hogyan tudom megvalósítani a ''stoppert''? Ez ha jól értelmeztem a kódot, egy visszaszámláló, nem pedig egy előreszámláló
azonkívül ezt hogyan tudnám beépíteni? Ha ez a visszaszámlálás idejére blokkol minden inputot, akkor addig nem tud a juzer játszani
szóval nem igazán értem, hogy ezzel mit tudok elérni... főként, hogy a forráskód működését sem igazán értem... pl hol az a rész, ahol számol? semmi ciklus nincs benne
szóval még1x: a proginak számolnia és kiírnia kéne az eltelt sec-eket, lehetőség szerint tudjon pause-t is
ha vki tud jobb (vagy egyszerűbb) megoldást, ne tartsa vissza!
egy másik: mi pontosan magyarul a file descriptor, azon kívül, h fájl-leíró vmi -
Miracle
senior tag
válasz
Jester01 #1304 üzenetére
bar keves helyen reklamozzak, de a windows posix kompatibilis, nemi hatekonysagi problemaval (pl. az egymas utani fork()ok kozul az elso 10 faja utana meg tizedmasodpercekben merheto ido lesz
)
szpval ha platformfuggetlenseg a cel akkor POSIX fuggvenyekkel lehel a legkulturaltabban megoldani C nyelven, vagy eluloniteni a platformfuggo reszt, es #ifdef..#endifek kozott a ket platformra specializalt kod, de ez joval ganyabb.. szoval inkabb POSIX... a baj azzal lehet nemtudom a melyik szemafor-implementacio resze a posixnak, es melyik kerult bele a kesobbi szabvanyokkal a unix spec.ba, mert ezek mar nem erhetok el windows alatt :-| -
emitter
őstag
válasz
Jester01 #1290 üzenetére
jó, csináltam prototípust, működik
1-2 hiba van benne, ami winen nem jelentkezett:
a legbosszantóbb, hogy a rekordoknál nem írja ki legelső rekorder nevét, csak a pálya méretét[link]
aztán vmi az ascii-kódokkal sincs rendben: [link] csillagokat kéne írnia
meg volt egy érdekes menet is, már mindent feltártam, és mégsem nyertem[link]
yakuake konzolja ilyet dob, mikor kilépek (gnome-terminálban jól kilép) [link]
viszont a gnome-terminal-lal is van egy kis gond: a kurzor egybeolvad a háttérrel (ez meg yakuake-ben jó) [link]
és az időszámlálóra visszatérve, szerinted nem fog menni a többszálúsággal, akkor viszont máshogy meg lehet csinálni? nagyon szeretném ha lenne ilyen feature benne -
emitter
őstag
válasz
Jester01 #1287 üzenetére
az egy régi maradány volt, bocs érte, persze régen már átírtam, mikor megbeszéltük ezt...
szóval, kis simításokat elvégezve maradt még 1-2 bug
emitter@LAPTOP:~$ gcc -Wall -funsigned-char -lm -lncurses -I. -o main main.c
In file included from main.c:8:
./wincon.h: In function 'emul_scanf':
./wincon.h:154: warning: implicit declaration of function 'vsscanf'
main.c: In function 'main':
main.c:96: warning: suggest parentheses around assignment used as truth value
main.c:167: warning: suggest parentheses around assignment used as truth value
main.c: In function 'cls':
main.c:537: warning: pointer targets in passing argument 5 of 'FillConsoleOutputCharacter' differ in signedness
main.c:548: warning: pointer targets in passing argument 5 of 'FillConsoleOutputAttribute' differ in signedness
main.c: In function 'aknaz':
main.c:563: warning: unused variable 'temp'
main.c: In function 'feltar':
main.c:686: warning: unused variable 'l'
main.c:686: warning: unused variable 'k'
emitter@LAPTOP:~$
a warningok nem érdekelnek, de pl azt az emul_scanf-et nem értem, h miért parázik tőle
csináltam neki prototípust, úgyis ezt dobja vissza
vsscanf meg nincs deklarálva...
wincon.h: [link]
main.c: [link]
ui: jut eszembe, milyen ftp-klienst tudnál ajánlani, ami gyors és könnyen használható?
mert eddig az uw.hu saját webes ftp-jét használom, ami elég gagyi -
emitter
őstag
válasz
Jester01 #1285 üzenetére
oké, már sokkal szimpibb a helyzet, de még van mit csiszolni rajta
emitter@LAPTOP:~$ gcc -Wall -funsigned-char -lm -lncurses -I. -o main main.c
In file included from main.c:7:
./wincon.h: In function 'GetConsoleScreenBufferInfo':
./wincon.h:49: warning: implicit declaration of function 'init_curses'
./wincon.h: In function 'emul_scanf':
./wincon.h:151: warning: implicit declaration of function 'vsscanf'
./wincon.h: At top level:
./wincon.h:209: warning: conflicting types for 'init_curses'
./wincon.h:49: warning: previous implicit declaration of 'init_curses' was here
main.c: In function 'main':
main.c:89: warning: suggest parentheses around assignment used as truth value
main.c:170: warning: suggest parentheses around assignment used as truth value
main.c: In function 'aknaz':
main.c:525: warning: unused variable 'temp'
main.c: In function 'feltar':
main.c:648: warning: unused variable 'l'
main.c:648: warning: unused variable 'k'
emitter@LAPTOP:~$ ./main
sh: cls: command not found
Segmentation fault
emitter@LAPTOP:~$
mod: a kódom: [link]
[Szerkesztve] -
emitter
őstag
válasz
Jester01 #1280 üzenetére
bemásoltam a home-ba a wincon.h-t, kiszedtem a kódból az include windows.h-t, és
emitter@LAPTOP:~$ gcc -Wall -funsigned-char -lm -lncurses -I. -o main main.c
In file included from main.c:7:
./wincon.h:2:20: error: curses.h: No such file or directory
In file included from main.c:7:
./wincon.h:15: error: syntax error before '*' token
./wincon.h:15: warning: type defaults to 'int' in declaration of 'curses_root'
./wincon.h:15: warning: data definition has no type or storage class
./wincon.h:17: error: 'COLOR_BLACK' undeclared here (not in a function)
./wincon.h:17: error: 'COLOR_RED' undeclared here (not in a function)
./wincon.h:17: error: 'COLOR_GREEN' undeclared here (not in a function)
./wincon.h:17: error: 'COLOR_YELLOW' undeclared here (not in a function)
./wincon.h:18: error: 'COLOR_BLUE' undeclared here (not in a function)
./wincon.h:18: error: 'COLOR_MAGENTA' undeclared here (not in a function)
./wincon.h:18: error: 'COLOR_CYAN' undeclared here (not in a function)
./wincon.h:18: error: 'COLOR_WHITE' undeclared here (not in a function)
./wincon.h: In function 'SetConsoleCursorPosition':
./wincon.h:32: warning: implicit declaration of function 'move'
./wincon.h: In function 'GetConsoleScreenBufferInfo':
./wincon.h:49: warning: implicit declaration of function 'init_curses'
./wincon.h:50: warning: implicit declaration of function 'getmaxx'
./wincon.h:51: warning: implicit declaration of function 'getmaxy'
./wincon.h: In function 'FillConsoleOutputCharacter':
./wincon.h:69: warning: implicit declaration of function 'addch'
./wincon.h: In function 'SetConsoleTextAttribute':
./wincon.h:89: warning: implicit declaration of function 'attrset'
./wincon.h:89: warning: implicit declaration of function 'COLOR_PAIR'
./wincon.h: In function 'emul_printf':
./wincon.h:103: error: 'va_list' undeclared (first use in this function)
./wincon.h:103: error: (Each undeclared identifier is reported only once
./wincon.h:103: error: for each function it appears in.)
./wincon.h:103: error: syntax error before 'args'
./wincon.h:108: warning: implicit declaration of function 'va_start'
./wincon.h:108: error: 'args' undeclared (first use in this function)
./wincon.h:110: warning: implicit declaration of function 'va_end'
./wincon.h:122: warning: implicit declaration of function 'addnstr'
./wincon.h:128: warning: implicit declaration of function 'attron'
./wincon.h:128: error: 'A_ALTCHARSET' undeclared (first use in this function)
./wincon.h:130: warning: implicit declaration of function 'attroff'
./wincon.h:136: warning: implicit declaration of function 'addstr'
./wincon.h:139: warning: implicit declaration of function 'refresh'
./wincon.h: In function 'emul_scanf':
./wincon.h:146: error: 'va_list' undeclared (first use in this function)
./wincon.h:146: error: syntax error before 'args'
./wincon.h:149: warning: implicit declaration of function 'getstr'
./wincon.h:150: error: 'args' undeclared (first use in this function)
./wincon.h:151: warning: implicit declaration of function 'vsscanf'
./wincon.h: In function 'fgets_wrapper':
./wincon.h:162: warning: implicit declaration of function 'echo'
./wincon.h:163: warning: implicit declaration of function 'getnstr'
./wincon.h:164: warning: implicit declaration of function 'noecho'
./wincon.h: In function 'getch_wrapper':
./wincon.h:175: warning: implicit declaration of function 'getch'
./wincon.h:179: error: 'KEY_UP' undeclared (first use in this function)
./wincon.h:183: error: 'KEY_LEFT' undeclared (first use in this function)
./wincon.h:187: error: 'KEY_RIGHT' undeclared (first use in this function)
./wincon.h:191: error: 'KEY_DOWN' undeclared (first use in this function)
./wincon.h: In function 'end_curses':
./wincon.h:205: warning: implicit declaration of function 'endwin'
./wincon.h: At top level:
./wincon.h:209: warning: conflicting types for 'init_curses'
./wincon.h:49: warning: previous implicit declaration of 'init_curses' was here
./wincon.h: In function 'init_curses':
./wincon.h:213: warning: implicit declaration of function 'initscr'
./wincon.h:213: warning: assignment makes pointer from integer without a cast
./wincon.h:215: warning: implicit declaration of function 'start_color'
./wincon.h:217: warning: implicit declaration of function 'keypad'
./wincon.h:217: error: 'TRUE' undeclared (first use in this function)
./wincon.h:220: warning: implicit declaration of function 'init_pair'
./wincon.h:226: error: 'ACS_VLINE' undeclared (first use in this function)
./wincon.h:227: error: 'ACS_HLINE' undeclared (first use in this function)
./wincon.h:228: error: 'ACS_CKBOARD' undeclared (first use in this function)
./wincon.h:229: error: 'ACS_LLCORNER' undeclared (first use in this function)
./wincon.h:230: error: 'ACS_LRCORNER' undeclared (first use in this function)
./wincon.h:231: error: 'ACS_ULCORNER' undeclared (first use in this function)
./wincon.h:232: error: 'ACS_URCORNER' undeclared (first use in this function)
./wincon.h:233: error: 'ACS_DIAMOND' undeclared (first use in this function)
main.c: In function 'main':
main.c:89: warning: suggest parentheses around assignment used as truth value
main.c:170: warning: suggest parentheses around assignment used as truth value
main.c: In function 'aknaz':
main.c:525: warning: unused variable 'temp'
main.c: In function 'feltar':
main.c:648: warning: unused variable 'l'
main.c:648: warning: unused variable 'k'
emitter@LAPTOP:~$
ez az ncurses micsoda, mert a gcc manjában nem találtam róla semmit
hasonlóképp a -lm mit csinál? -
emitter
őstag
válasz
Jester01 #1278 üzenetére
állat!
mármint hogy nem kell átírni a kódomat
pont neki akartam kezdeni minden necces részletet kiszedni belőle, hát asszem sok munkától szabadítottál meg
köszi
szóval itt ez a wincon.h, akkor ezt hova is másoljam be
illetve a progim használ egy olyat, h windows.h, azzal mi lesz, ja meg a színek, megmaradnak?
és akkor így kell fordítanom majd: make -funsigned-char -lm -lncurses -I main.c
ugye? -
emitter
őstag
válasz
Jester01 #1229 üzenetére
szia!
na, végre sikerült mindenből levizsgáznom, most teljes kapacitással tok a progimmal foglalkozni (nomeg a Linuxszal ismerkedni)
szóval: make main -> [link]
ezek â�� idézőjelek akarnak lenni és a main.c-met akarom fordítani konzolból, mivelhogy a graf. fejlesztőkörnyezetek elszállnak a kódomtól -
-
emitter
őstag
válasz
Jester01 #1227 üzenetére
belekukkantottam, de nem lettem okosabbb
én sem tudom, mi az a mingw-s cucc, a forráskódban nincs mingw, esetleg az zavarhatott be, hogy előtte többször is mingw-vel próbáltam uazt a kódot megnyitni, sikertelenül...
de nem értem, miért zavarna ez be, hiszen kdev-vel új projektet nyitottam és beleillesztettem a main.c-t
egyébként projekt nélkül miért nem lehet simán egy .c-t futtatni? -
emitter
őstag
válasz
Jester01 #1225 üzenetére
cd '/home/emitter/aknakereso' && WANT_AUTOCONF_2_5=''1'' WANT_AUTOMAKE_1_6=''1'' make -f Makefile.cvs && cd '/home/emitter/aknakereso' && CC=''i586-mingw32msvc-c'' CXX=''i586-mingw32msvc-c++'' LD=''i586-mingw32msvc-ld'' ''/home/emitter/aknakereso/configure'' && cd '/home/emitter/aknakereso' && WANT_AUTOCONF_2_5=''1'' WANT_AUTOMAKE_1_6=''1'' make -j1
aclocal
autoheader
automake
autoconf
installing -c
checking whether build environment is sane... yes
checking whether make sets $(MAKE)... yes
checking for working aclocal-1.4... found
checking for working autoconf... found
checking for working automake-1.4... found
checking for working autoheader... found
checking for working makeinfo... missing
checking for C++ compiler default output file name...
configure: error: C++ compiler cannot create executables
See `config.log' for more details.
*** Exited with status: 77 ***
futtatáskor még azt is kiírta, hogy nincs Makefile ebben a könyvtárban, ezért először a 'Configure'-t futtatja
ezek után dobta ezt a hibaüzit -
emitter
őstag
válasz
Jester01 #1182 üzenetére
A FillConsoleOutputCharacter()-nek hogyan tudom megmondani, h mettől meddig töröljön (azaz '' ''-t írjon)?
Úgy gondoltam, hogy híváskor megadom a kezdő és a végsorokat paraméterként, és akkor csak a két adott sor közti részt törli.
A kezdőpozicionálás könnyű, de azt nem tudom megcsinálni, h csak egy adott sorig töröljön
Gondolom arra nem szép apellálni, hogy csak 80 karakter széles a képernyőenélkül viszont hogyan?
-
emitter
őstag
válasz
Jester01 #1180 üzenetére
hát még mindig az aknakeresőmbe kéne, hogy a játék közben számlálja az eltelt sec-eket, (ki is írja) lehessen esetleg pause-zni, stb. Én is úgy próbáltam, hogy megnézem gyakorta, h eltelt-e már 1 másodperc, de nem sok sikerrel...
time(&t0); //kezdőidő
time(&t1);
for(i=1;i<500000;i++)
{
if(time(&t2)!=t1)
{
time(&t1);
diff=(int) t2-t0;
system(''cls'');
printf(''%d'',diff);
}
} -
BullSoft
tag
válasz
Jester01 #1170 üzenetére
Kozben rajottem. Volt egy char *tmp-em amibe olvasni akartam egy fajlbol soronkent. Foglaltam neki helyet a memoriaban es ment rogton. Mondjuk Borlandban jo volt ezelott is, csak Devben halt meg, ez erdekes.
Hiaba, szokatlan nekem ez a C/C++ a Pascal/Delphi utan. De hat ezt tanuljuk BME-infon, szal muszaj lesz erre atterni[Szerkesztve]
-
emitter
őstag
válasz
Jester01 #1161 üzenetére
király! megvan a félévi egyetlen 5-ös tárgyam
és ez a prog
na szal természetesen tanárbácsi ötösre értékelte közös mnkánkats mivel a zh-k is jók lettek, megvan a félévi jójegy
végre egy tárgy ami felfelé húzza az átlagom...
mégegyszer köszönöm minden fáradozásodat!
(azért remélem te is jót játszottál vele)
-
emitter
őstag
válasz
Jester01 #1158 üzenetére
ezer köszönet!!! most már minden okés, remélem több számomra megoldhatatlan hiba nem fog felbukkanni...
akkor ha a screenshot alapján jól látom, linux alatt is tudtad futtatni a progit? mármint a színeket jól megjeleníteni? olyan üres téglalap-kurzort hogyan tudsz csinálni?
egyáltalán a kurzor méretén és láthatóságán kívül lehet még vmit állítani rajta? -
emitter
őstag
válasz
Jester01 #1153 üzenetére
Ne haragudj, de nem tudnád tételesen leírni, h hol mit kellene javítanom, mert igazából holnapra már kéne a működőképes progi, és én megpróbáltam kijavítani ahogy írtad, de csak rosszabb lett
Felraktam a ''javított'' változatot.
szerk: a temp változót, amellyel a megjelölt/feltárt mezőket számoltam, az átláthatság és egyértelműség miatt átneveztem mezoszam-ra, és megszabadultam a lépésenkénti egyész pálya-vizsgálástól is, most még az újrarajzolás kihagyásán küzdök...
c4-eXp: zsír az aláírásod[Szerkesztve]
-
emitter
őstag
válasz
Jester01 #1149 üzenetére
köszi, már be is építettem!
és ezennel jelentem, kész a második verzió, felraktam a táramra! [link]
egy probléma lép még föl néha: a képen látszódó 2 db 1-es rögtön indítás után (új játék) jelent meg magától, úgy, hogy nem is nyomtam még sehova
de ez teljesen random, néha csinálja néha nem, ha csinálja akkor mindig a baloldali első v második sorban egy-két mezőt előre felderít nekemráadásul nem is mindig jól, mert volt, h feketével jelölt nekem egy mezőt, mire miztonságból rákattintottam, ásláss csodát: akna volt alatta
halvány gőzöm sincs, h ez mitől lehet...
Új hozzászólás Aktív témák
Hirdetés
● olvasd el a téma összefoglalót!
- Üzletből, garanciával, Macbook Pro M1 13" 2020 16GB RAM 512GB SSD
- Eladó Használt Steam Deck OLED 1 TB
- Gamer PC- Rysen 5 3600, Asus Radeon 5700 XT(OC) 8gb VGA,16Gb Hyper x Fury RAM, Coolermaster K500.
- ZOTAC GAMING GeForce RTX 3090 Trinity OC 24GB GDDR6X (6 Hónap Garancia)
- Asus ROG Strix Z790-I GAMING WIFI
- HP Victus 15-fb1002AX - 15,6"FHD IPS - Ryzen 5 7535HS - 8GB - 512GB SSD - RTX 2050 - Win11
- ÁRGARANCIA!Épített KomPhone Ryzen 7 7800X3D 32/64GB RAM RX 9070 16GB GAMER PC termékbeszámítással
- SanDisk Extreme Portable 8TB (SDSSDE61-8T00-G25)
- 123 - Lenovo Legion Pro 5 (16ARX8) - AMD Ryzen 7 7745HX, RTX 4070 (48 hónap garancia!)
- Csere-Beszámítás! RTX Számítógép játékra! I7 6700K / 32GB DDR4 / RTX 2060 / 500GB SSD
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest