?? lline.cpp
字號:
#include <lutils.h>
#include <string.h>
//////////////////////////////////////////////////////////////////////
void Tline::CharacterCase(char *string,short mode)
{ short len=strlen(string),ch,i;
for(i=0;i<len;i++) {
ch=string[i];
if (mode) if (ch>='a'&&ch<='z') ch=ch-'a'+'A';
if (!mode) if (ch>='A'&&ch<='Z') ch=ch-'A'+'a';
string[i]=ch;
}
}
short Tline::GetPicIndex(short item,TLpcImage *lpc)
{ short page,num;
sscanf(Word[item],"%d",&page); sscanf(Word[item+2],"%d",&num);
return lGetLpcIndex(lpc,page,num);
}
void Tline::GetString(char *str,short item)
{ char *p=Word[item],d=0; short len;
if (p[0]=='\'') p++,d=1;
strcpy(str,p); len=strlen(str); str[len]=0;
if (d) str[len-1]=0;
}
//////////////////////////////////////////////////////////////////////
char *Tline::GetLine(short mode)
{ char *r; short count,i,j;
if (!fileflag) return NULL;
do { r=fgets(fline,LMAX_CHAR,lf); count=0;
if (r) count=ArrangeStr(fline);
} while (r&&count==0);
if (r) switch(mode)
{ case 1: for (i=0;i<count;i++) for (j=0;j<strlen(Word[i]);j++)
if (Word[i][j]>='a'&&Word[i][j]<='z') Word[i][j]=Word[i][j]-'a'+'A';
break;
}
return r;
}
char Tline::OpenFile(char *fname)
{ if (fileflag) fclose(lf);
if ((lf=fopen(fname,"r"))) fileflag=1;
else fileflag=0;
return fileflag;
}
void Tline::CloseFile()
{ if (fileflag) fclose(lf);
fileflag=0;
}
Tline::Tline()
{ line = new char[LMAX_CHAR+1];
outline = new char[LMAX_CHAR+1];
fline= new char[LMAX_CHAR+1];
Word=new char*[LMAX_CHAR]; fileflag=0;
}
Tline::~Tline()
{ if (line) delete line;
if (outline) delete outline;
if (fline) delete fline;
if (Word) delete Word;
}
char Tline::CheckChar(char c)
{ if (c==0||c=='`'||c=='\n') return 0;
if (c==' ') return 3;
if ( (c>='a'&&c<='z') || (c>='A'&&c<='Z') ||
(c>='0'&&c<='9') || (c=='_') ) return 1;
return 2;
}
short Tline::ArrangeStr(char *source)
{ register char *p0,*p1,c;
short i,j,k,count,done=0;
for (i=0;i<LMAX_CHAR;i++) list[i][0]=0,list[i][1]=0;
p0=source; p1=p0; i=0;
while (!done) {
while (*p1==' ') p1++; p0=p1; // Skip space
if (*p1=='\'') {
p1++; while(*p1!='\''&&*p1!=0) *p1++;
if (*p1=='\'') p1++; list[i][0]=p0-source; list[i][1]=p1-p0;
i++; p0=p1;
}
switch (CheckChar(*p1)) { // Get form
case 2: list[i][0]=p1-source; list[i][1]=1;
p1++; p0=p1; i++; break;
case 1: while (CheckChar(*p1)==1) p1++;
list[i][0]=p0-source; list[i][1]=p1-p0;
p0=p1; i++; break;
case 0: done=1; break;
}
}
count=i; k=0;
for (i=0;i<count;i++) {
Word[i]=line+k;
for (j=0;j<list[i][1];k++,j++) { c=source[list[i][0]+j];
outline[k]=c; line[k]=c;
}
if (i!=count-1) { outline[k]=' '; line[k]=0; k++; }
}
outline[k]=0; line[k]=0; WordCount=count;
return count;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -