przez Krzysiu555 » Å›roda, 5 listopada 2008, 19:23
Otóż problem jest specyficzny i nawet ciężko mi powiedzieć skąd się wziął.
Z miesiąc temu rozpocząłem pisanie programu. Zacząłem od nagrywania dźwięku do pliku wav. W zasadzie przepisałem poradę na ten temat z serwisu Cyfbar. Zmieniłem tak jak potrzebowałem. Wszystko działało ok. Wręcz byłem zaskoczony tak dobrą jakością plików. Czysty wyraźny dźwięk bez żadnych szumów czy czegoś podobnego.
I wtedy przeszedłem do innych funkcji programu. Dodałem kilkanaście komponentów (przeważnie jakieś Buttony itp.) nowe funkcje. Minimalizację do traya, autostart wraz z systemem, zapis ustawień do pliku ini i parę innych mało ważnych rzeczy. Dodałem też uruchamianie niektórych funkcji w nowych wątkach, żeby zwiększyć wydajność. A tej części kodu która zajmuje się nagrywaniem wav nie ruszałem.
Potem gdy odpaliłem program (zawsze odpalam spoza Buildera) i znów nagrałem jakieś tam nagranie (czego nie robiłem długo) okazało się że jakość jest fatalna. Wszystko szumi, trzeszczy, i w ogóle jest strasznie ciche. Myślałem że to mikrofon ale gdy odpaliłem Rejestrator dźwięku Windows okazało się że nie bo jakość w nim jest tak samo zadowalająca jak w moim programie kiedyś. Potem pomyślałem że to może mój program źle odtwarza plik, który jest nagrany dobrze (bowiem mój program odtwarza nagrane przez siebie pliki), więc odtworzyłem plik przez Windows Media Playera i jakość też była bardzo słaba. Wynika z tego że problem leży w nagrywaniu przez program.
Tylko co się mogło popsuć że miesiąc wcześniej działało a teraz już nie, przy czym ja niczego nie ruszałem (w tej części kodu, która zajmuje się nagrywaniem)???
przez Cyfrowy Baron » Å›roda, 5 listopada 2008, 20:10
Zanim przejdziesz do poszukiwań w błędzie kodu, napisz jeszcze raz program dokładnie tak jak za pierwszym razem bez tych wszystkich "dodatków" i nagraj jakiś plik. Jeżeli nagranie będzie dobre, to oznacza, ze włączyłeś do swojego pierwszego projektu jakąś bibliotekę, która powoduje błędy.
Pisząc program często go testuję, zawsze po dodaniu jakichś nowych funkcji sprawdzam czy wszystko działa prawidłowo, jeżeli nie to wiem, która część kodu wywołuje błędy. Ty najwyraźniej zrobiłeś najpierw nagrywanie, a potem hurtowo wrzuciłeś cała resztę i dopiero potem przetestowałeś nagrywanie, teraz nie wiesz co powoduje błędy.
przez Krzysiu555 » czwartek, 6 listopada 2008, 17:34
napisałem nowy program tylko do sprawdzenia tego nagrywania. W zasadzie przepisałem poradę z Cyfbara tylko skasowałem wyswietlanie statusu na SatusBarze.
I okazało się że jakość nagrywanych dźwięków jest również strasznie kiepska. Wynika z tego że przyczyną nie są też te wszystkie funkcje które dodałem po pierwszym testowaniu. Poza tym znalazłem na dysku pierwszą wersję mojego programu tą którą kiedyś testowałem i wtedy dźwięk był bardzo dobry. Od tamtego czasu nic w tym programie nie zmieniałem (bo kontynuowałem w oddzielnym), a pomimo to teraz jakość w tym starym też jest słaba, podobnie jak w tym nowym.
1. Żeby nagrać wiadomość klikasz "Zaloguj". 2. W nowym oknie wpisujesz login i hasło i potwierdzasz "Ok". 3. Potem klikasz "Połącz". 4. Następnie "Nowa". 5. W uaktywnionym polu wpisujesz ID adresata, czyli np. siebie samego. Klikasz "Zatwierdź". 6. I wtedy uaktywniają się przyciski do nagrywania i odtwarzania wiadomości. 7. Żeby wysłać nagraną wiadomość do siebie samego kliknij "Wyślij" a jeśli nie chcesz jej wysyłać to "Anuluj".
przez Cyfrowy Baron » piÄ…tek, 7 listopada 2008, 16:39
Po pierwsze nie chciałem całego projektu, a tylko sam program. Po drugie skompiluj te programy razem z bibliotekami gdyż teraz nie mogę uch uruchomić u siebie. Po trzecie jeżeli zamieszczasz cały projekt to usuń z niego pliki tymczasowe, gdyż te pliki nie są potrzebne do prawidłowego działania projektu, kompilator tworzy je podczas kompilacji dla własnych celów, więc można je spokojnie usunąć, gdyż podczas kompilacji i tak zostaną przywrócone. Pliki tymczasowe jak. *.tds zajmują bardzo dużo miejsca i niepotrzebnie powiększają rozmiar pliku do pobrania:
Te pliki można spokojnie usunąć:
*.~?? *.~? *.obj *.tds
gdzie pytajnik to dowolny znak.
Najprościej jest utworzyć sobie w Notatniku plik z taką zawartością:
del *.~?? del *.~? del *.obj del *.tds
i zapisać go pod dowolną nazwą z rozszerzeniem BAT, np. Clean.bat. Następnie umieszczamy taki plik w katalogu z projektem i uruchamiamy go stamtąd, wszystkie zbędne pliki tymczasowe zostaną usunięte z projektu.
przez Krzysiu555 » sobota, 8 listopada 2008, 22:31
zawsze mnie ciekawiło i miałem się o to spytać które pliki można spokojnie wywalać bo zawsze robi się ich strasznie dużo.
z nowym programem zrobiłem wszystko tak jak mówiłeś. Odznaczyłem Build with Runtime, odznaczyłem Use dynamic RTL i odznaczyłem Use debug libraries. Zbuildowałem program i wszystko poszło ok. Jest tutaj:
nowy.rar
Natomiast gdy zrobiłem to samo ze starym. To wyskoczył error: can not find "INDY60.LIB" (coś podobnego bo nie pamiętam). Kliknąłem Project potem Add to Project, znalazłem plik indy60.lib i dodałem go do projektu. I gdy znów go zbuildowałem wyskoczył error:
[Linker Fatal Error] Fatal: Unable to open file 'INDY60.LIB'
I co teraz?
PS możesz ewentualnie powiedzieć mi chociaż jak działa u Ciebie ta nowsza wersja..
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
Co do Twojego programu to jest jeszcze niedopracowany. Po wprowadzeniu do programu numeru ID, który już istnieje i po ponownej zalogowania (bez restartu programu) otrzymałem komunikat następującej treści: Can't open users/990/12345.txt: No such file or directory. Przypuszczam, że nie przewidziałeś takiego wyjątku. Twój błąd tutaj polega na tym, ze jeżeli użytkownik wprowadzi podczas rejestracji ID, który już istnieje, to otrzyma oczywiście komunikat, że nie może użyć tego ID, ale żeby podjąć nową próbę rejestracji musi ponownie uruchomić program, gdyż przycisk rejestracji pozostaje nieaktywny. Sugerowałbym również nadać kontrolkom styl WinXP za pomocą manifestu lub komponentu WinXP.
Co do nagrywania to u mnie nagranie ma czysty dźwięk, więc to musi być błędne ustawienie Twojej karty dźwiękowej.
przez Cyfrowy Baron » niedziela, 9 listopada 2008, 19:12
A żeby program miał wygląd XP trzeba mieć TXpManifest a BCB 6 Personal go nie ma i nie wiem jak go dodać.
Odnoszę wrażenie, że wogóle nie zaglądasz
do serwisu Cyfrowy
Baron, bo gdybyś trochę poczytał to zauważyłbyś porady:
porady | różne | Jak w Windows XP nadać kontrolkom odpowiedni wygląd?. porady | różne | Wygląd kontrolek w Windows XP. Jak umieścić manifest w zasobach programu. - tą polecam
Został tam opisany sposób utworzenia manifestu dla programu w Notatniku i dołączenia go do tegoż programu. Do tego celu, żadne komponenty nie są potrzebne. W zasadzie to wszystkie dostępne komponenty zawierają po prostu taki manifest, który po umieszczeniu komponentu na formularzu po prostu dołącza manifest do zasobów programu.
Może pobierz sobie wersję off-line serwisu w formacie PDF.
przez Krzysiu555 » piÄ…tek, 21 listopada 2008, 15:20
Okazało się że to jednak nie wina moich sterowników czy karty dźwiękowej. Bo program tak fatalnie nagrywa również u moich kolegów. Więc problem wraca.
Napisałem nowy (testowy) program - był identyczny jak ten w poradzie. I on również tak fatalnie nagrywa. Przypuszczam więc że coś mogło się stać albo z C++ Builderem albo z jakimiś bibliotekami, albo z czymś podobnym.
Może reinstalacja BCB pomoże? Albo może zainstaluje jakieś patche? Albo może ktoś ma jakiś inny pomysł?
przez Cyfrowy Baron » piÄ…tek, 21 listopada 2008, 16:02
Ja nie wiem. Testowałem Twój program u siebie i nagrywa czysto i prawidłowo, więc nie rozumiem problemu. Być może coś z mikrofonem, Ja używam mikrofonu Tracer, taki za 60 PLN.
przez Krzysiu555 » sobota, 22 listopada 2008, 19:30
wykluczam mikrofon, bo mam jeszcze inne dwa i na wszystkich jest to samo, poza tym Rejestrator dźwięku Windows nagrywa bardzo dobrze tym samym mikrofonem
wykluczam kartę dźwiękową i jej sterowniki, bo przecież Rejestratorem dźwięku nagrywam i wszystko jest ok, poza tym mogę słuchać muzyki no i działają wszystkie inne programy związane z dźwiękiem
wykluczam to że mój program może źle odtwarzać nagrane lub pobrane pliki, bo gdy te same pliki odtworzy się Windows Media Playerem albo jakimkolwiek innym programem np. Winampem - to jest tak samo źle
wykluczam to że jest błąd w kodzie, bo przecież nawet gdy przepiszę poradę z Serwisu Cyfbar dotycząca nagrywania, która kiedyś u mnie na 100% była ok, to teraz również będzie nagrywała za cicho i kiepsko
Dodam że podobnie tj. słabo, cicho, z szumami, program nagrywa u moich kolegów, no i u mnie. A kiedyś nagrywał perfekcyjnie.
Wspomnę też, że nie dawno (właśnie mniej więcej wtedy, kiedy odkryłem tę usterkę) zainstalowałem Microsoft SDK i DDK, które na pewno ingerują w biblioteki i sterowniki. Pomyślałem, że to one wywołały mój problem i usunąłem obydwa programy. Jednak błąd jest nadal. Co o tym myślicie? Może SDK i DDK pozostawiły po sobie jakieś biblioteki albo coś co mi popsuło program?
►
SDK - Software Development Kit DDK - Driver Development Kit
Przypuszczam że coś jest albo z Builderem albo z jakimiś bibliotekami albo sterownikami. Jednak najbardziej prawdopodobne są biblioteki albo sterowniki bo nawet najstarsza wersja programu, która buildowana była jeszcze przed usterką, a potem nie - też źle działa
Co o tym sądzisz CB i może ma ktoś jakiś pomysł?
Załączam przykładowe nagrania:
►
Są krótkie i małe, żeby się ściągnęło szybko. Trzy są dobrej jakości, a trzy słabej. W nazwie jest data i czas nagrania oraz pododawałem przedrostki oznaczające jakoś.
nagrania.rar
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
przez Cyfrowy Baron » sobota, 22 listopada 2008, 21:09
Usunięcie SDK nie przywraca bibliotek w których wprowadzone zostały zmiany, tutaj może pomóc tylko funkcja przywracania systemu (nie polecam - coś potem an pewno źle będzie działać), lub reinstalacja systemu.
Jeżeli masz taką możliwość, to spróbuj skompilować program w systemie, w którym nie instalowałeś tych dodatków.
Co do nagrać, to faktycznie źle działają.
Wrzuć tu jeszcze raz ten program, którym zrobiłeś te "złe" nagrania - tylko program, nie projekt. Nie zapomnij go skompilować razem z biblitekami.