Aleksander Timofiejew
Transkrypt
Aleksander Timofiejew
Projekt z programowania obiektowego. Wskazówki W przypadku operacji z plikiem można zastosować funkcje standardowego języka C: #include #include #include #include #include #include <string.h> <stdio.h> <io.h> <direct.h> <stdlib.h> <vcclr.h> //.... char folder[512]; char nazwa[512]; //--_getcwd(folder,512);//odczyt ścieżki do foldera z projektem strcpy_s(nazwa,512,folder); //formowanie nazwy pliku strcat_s(nazwa,512,"\\dane.txt"); //formowanie nazwy pliku FILE* pf=fopen(nazwa,"rt+"); // otwarcie pliku int handle=_fileno(pf); // deskryptor pliku long filesize=_filelength(handle); // rozmiar pliku char* buf=new char[filesize]; //alokacja bufora fread(buf,1,filesize,pf); // odczyt do bufora fclose(pf); // zamknięcie pliku //--//... operacje nad tekstem z buforu //---// Wyswietlenie w RichTextBox'e System::String^ s=gcnew System::String(buf); richTextBox2->Text=s; //--delete [] buf; _________ Operacje na tekstach można wykonywać za pomocą stosowanych w języku C funkcji dla wierszy. Przykładowo konstruktor klasy Tekst z argumentem może być realizowany następująco: Tekst::Tekst(char* pch) { if (pch!=NULL) { int size=strlen(pch); t=new char[size+1]; strcpy_s(t,size+1,pch); t[size]='\0'; } } 1 W przykładzie zaznaczono przez "t" atrybut klasy Tekst: class Tekst { char* t; //atrybut - tablica public: Tekst(void); //konstruktor bez argumentów Tekst(char* pch); //konstruktor z argumentem ~Tekst(void); //destruktor void Clear(); //metoda do oczyszczenia tablicy "t" int Rozmiar(void); //metoda do obliczenia rozmiaru tablicy "t" char* Dane(void); //metoda zwracająca adres tablicy "t" void Assign(char* pass); //metoda do wpisywania zawartosci tablicy "t" virtual Tekst& operator+(Tekst& ob2)=0; // czysto wirtualna metoda "operator+" }; _________ Klasę Tekst można zdefiniować jako abstrakcyjną przez czysto wirtualne metody operatorowe. Na przykład virtual Tekst& operator+(Tekst& ob2)=0; ________ W graficznych obiektach środowiska Visual C++ stosują się wierszy typu String w kodzie UNICODE UTF-16. Aby teksty z takich obiektów przekształcać w tablicy z elementami typu char można stosować następne przykładowe instrukcje: System::String^ s=textBox->Text; //wiersz z graficznego obiektu int size=s->Length; char buf[100]; for (int k=0;k<size;k++) buf[k]=(char)s[k]; //młodszy bajt dwubajtowego znaku buf[size]='\0'; //w tablicę buf wiersz w kodzie ASCII Wadą takiego przekształcenia jest to, że w graficznych obiektach nie można stosować znaki polskie. 2