Информатика и технология программирования


Шаг Строки -элементы таблицы - часть 2



char *String::Name() { return("Строка"); }


TElem *String::Copy()
{
String *p = new String;
return(p);
}


int String::Compare(TElem *p)
{
String *q = (String*)p;
if (Str==NULL || q-&#62Str==NULL) return(-1);
return(strcmp(Str,q-&#62Str));
}


BOOL String::FromString(char *p)
{
if (Str !=NULL) delete Str;
if ((Str = new char[strlen(p)+1])==NULL) return(0);
if (p==NULL) return(0);
strcpy(Str,p);
return(1);
}


char *String::ToString()
{
char *p;
if (Str==NULL) return(NULL);
if ((p = new char[strlen(Str)+1])==NULL) return(NULL);
strcpy(p,Str);
return(p);
}


//----- Динамический массив символов Str объекта класса


// "строка" сохраняется в файле в виде записи переменной


// длины, поэтому для работы с файлом используются


// соответствующие функции. Определенное по умолчанию зна-


// чение FNULL указателя в файле - p предполагает работу


// с файлом без позиционирования, то есть как с последова-


// тельным (или потоком).



int String::FSize()
{
if (Str==NULL) return(0);
return(strlen(Str) + 1 + sizeof(int));
}


FPTR String::Append(BinFile &#38F)
{
if (Str==NULL) return(FNULL);
return (F.VSZAppend((void *)Str, strlen(Str)+1));
}


BOOL String::Load(BinFile &#38F, FPTR p)
{
int sz;
if (Str!=NULL) delete Str;
Str = NULL;
if (p !=FNULL) if (!F.seekg(p)) return(0);
if ((Str=(char *)F.VSZLoad(sz)) ==NULL) return(0);
return(1);
}


FPTR String::Update(BinFile &#38F, FPTR p, int mode)
{
if (Str==NULL) return(FNULL);
if (p !=FNULL) if (!F.seekg(p)) return(FNULL);
return( F.VSZUpdate((void *)Str, strlen(Str)+1, mode));
}


//----- Переопределение операций над строками



String::String()
{ Str = NULL; }


String::String(char *s)
{ Str = new char[strlen(s)+1]; strcpy(Str,s); }


String::~String() { if (Str !=NULL) delete Str; }


BOOL String::IsValid() { return(Str !=NULL); }


String String::operator+(char *p)
{
String ss;
if (Str==NULL || p==NULL) return(ss);
ss.Str = new char[strlen(Str) + strlen(p) + 1];
strcpy(ss.Str,Str);
strcat(ss.Str,p);
return(ss);



Начало  Назад  Вперед