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

Podobne dokumenty