[ Pobierz całość w formacie PDF ]
.Nastêpn¹ rzecz¹ jest utworzenie za pomoc¹ statycznej funkcji MakeNewFile () nowego obiektu klasy CCompressedFile.Jako drugi argument funkcji podawany jest rodzaj stosowanej kompresji.Nastêpuje wywo³anie funkcji open().Jest ona wywo³ywana tak samo jak funkcja Open() klasy CFile.Pierwszym argumentem jest nazwa pliku, zaœ drugim znaczniki okreœlaj¹ce sposób jego otwarcia.Jeœli otwarcie pliku siê powiedzie, funkcja zwraca wartoœæ TRUE.Zapis wszystkich danych do pliku nastêpuje w wyniku pojedynczego wywo³ania funkcji write ().Jest ona wywo³ywana dok³adnie tak samo jak funkcja write () klasy CFile.Pierwszym argumentem jest wskaŸnik do bufora, zaœ drugim wartoœæ ca³kowita okreœlaj¹ca iloœæ bajtów przeznaczonych do zapisania.Nastêpnie aktualizowane s¹ zmienne widoku w celu odwzorowania zmian w stanie pliku, rozmiarze lub rodzaju kompresji.Otwieranie skompresowanego plikuAby otworzyæ skompresowany plik, wykonaj poni¿sze kroki:1.Zacznij od utworzenia za pomoc¹ statycznej funkcji MakeNewFile (} nowego obiektu klasy ccompressedFiie.Pierwszy argument nie jest potrzebny.Jest nim nazwa pliku, ale zwykle bêdziesz j¹ podawa³ dopiero przy otwarciu pliku.Drugim argumentem jest rodzaj kompresji.Mo¿e nim byæ HUFF, LZSS, LZW lub UNCOMP.Jeœli nie przeka¿esz ¿adnej wartoœci, domyœln¹ metod¹ kompresji bêdzie LZW:CCompressedFile *pFile = MakeNewFile( "TEST.TXT" );2.Nastêpnie musisz otworzyæ plik.Oto kod otwieraj¹cy plik TEST.TXT:pFile->Open( "TEST.TXT", CFile::modeRead );Jeœli dynamicznie alokujesz bufor, do którego bêd¹ odczytywane dane, u¿yj zmiennej pFile->m_dwUncompressedSize w celu okreœlenia rozmiaru tego bufora.Poni¿szy kod alokuje bufor do odczytu:char *pBuffer = new char[pFile->m_dwUncompressedSize];3.Teraz za pomoc¹ funkcji Read (} mo¿esz odczytaæ dane.Oto przyk³ad: pFile->Read( pBuffer, pFile->m_dwUncompressedSize );4.Na koniec musisz zamkn¹æ plik:pFile->Close(}Zapisywanie skompresowanego plikuAby zapisaæ skompresowany plik, wykonaj poni¿sze kroki:1.Tak¿e w tym przypadku zacznij od utworzenia za pomoc¹ statycznej funkcji MakeNewFile () nowego obiektu klasy CCompressedFile:CCompressedFile *pFile = MakeNewFile( NULL, LZW );2.Nastêpnie musisz otworzyæ plik.Oto kod otwieraj¹cy plik o nazwie TEST.CMP:pFile->Open( "TEST.CMP", CFile: :modeWrite | CFile:rmodeCreate) ;3.Teraz za pomoc¹ ftmkcji Write () mo¿esz zapisywaæ dane.Oto kod:char szEuffer[] = "To jest test klasy kompresji plików.pFile->Write( szBuffer, strlenf szBuffer ) );4.Na koniec musisz zamkn¹æ plik:pFile->Close();Klasa CSerialdla komunikacji szeregowejZdalna komunikacja znalaz³a powszechne zastosowanie w firmowych aplikacjach, które s³u¿¹ do œledzenia stanu zasobów i transakcji w sieci wielu oddzia³Ã³w.Na przyk³ad, sam kiedyœ pisa³em wielki program zwi¹zany z dystrybucj¹ leków, w którym wiele oddzia³Ã³w klinicznych wieczorami automatycznie sk³ada³o zamówienia na leki na podstawie informacji o transakcjach nawi¹zanych w ci¹gu dnia.Ka¿dego wieczora g³Ã³wny system odbiera³ od ka¿dego z oddzia³Ã³w informacje o zapotrzebowaniu na leki.Wiêkszoœæ czasu zwi¹zanego z tworzeniem tej aplikacji poœwiêci³em na pisanie procedur telekomunikacyjnych, które wysy³a³y i odbiera³y pakiety informacji.Jeœli mia³bym wtedy pod rêk¹ bibliotekê funkcji zawart¹ na do³¹czonej do tej ksi¹¿ki p³ytce CD-ROM, czas mojej pracy znacznie by siê skróci³.Nastêpne sekcje opisuj¹ klasê s³u¿¹c¹ do obs³ugi ³¹cza szeregowego poprzez porty COM komputera.Dziêki niej mo¿esz wzbogaciæ swoje aplikacje o wszystkie informacje dostêpne w œwiecie po³¹czonych komputerów.Komunikacja szeregowaKorty komunikacyjne komputera PC korzystaj¹ z komunikacji asynchronicznej.Ka¿dy bajt danych stanowi potencjalnie osobn¹ jednostkê.Komputer wysy³aj¹cy dane mo¿e zatrzymaæ siê co drugi bajt, jednak komputer odbieraj¹cy mo¿e odczytywaæ dane tak szybko, jak siê pojawiaj¹.Aby to osi¹gn¹æ, dane asynchroniczne wymagaj¹ zastosowania dodatkowego bitu oznaczaj¹cego pocz¹tek nowego bajtu (bit startu) oraz dodatkowego bitu oznaczaj¹cego koniec bajtu (bit stopu).Modem o prêdkoœci 9600 bodów mo¿e przekazaæ jedynie 960 bajtów danych na sekundê, gdy¿ ka¿dy z nich wymaga przes³ania co najmniej dziesiêciu bitów.Szybkie, nowoczesne modemy w rzeczywistoœci nie wysy³aj¹ bitów startu i bitów stopu.Zostaj¹ one odrzucone w wyniku ogólnej kompresji danych.Jednak bity startu i stopu s¹ generowane na przewodzie ³¹cz¹cym port COM z modemem zewnêtrznym (poprzez interfejs RS-232)
[ Pobierz całość w formacie PDF ]