|
C 소스파일을 읽어서 메모컴포넌트에 나타내려고 하는데요....
나타낼때 키워드인경우에는 글자의 색을 다르게 나타내려고 합니다.
파일을 읽은후에 파일의 내용중...
문자가 아닌부분마다 나누어서 링크드리스트로 나타내려고 하는데...
컴파일시에는 에러가 없고, 실행시에 오류가 나는데...
오류난 부분은 찾았는데 뭐가 잘못됐는지 잘 모르겠습니다.
static int iFileHandle;
static int iFileLength;
static int iBytesRead;
char *pszBuffer;
struct ccon
{
int kind;
char *str;
ccon *next;
}*start, *p;
void __fastcall TForm1::Button3Click(TObject *Sender)
{
int k=0, first=0;
for(int i=0;i<iFileLength;i++)
{
if(pszBuffer[i]=='#')
{
if(i==k)
{
if(first==0)
{
p=new ccon;
start=p;
first=1;
}
else
{
p->next=new ccon;
p=p->next;
}
p->next=NULL;
p->str=new char[2];
p->str[0]='#';
p->str[1]=NULL;
k++;
}
}
else if((pszBuffer[i]>='a' && pszBuffer[i]<='z') ||(pszBuffer[i]>='0' && pszBuffer[i]<='9') ||pszBuffer[i]=='_');
else
{
if(i!=k)
{
i--;
p->next=new ccon;
p=p->next;
p->next=NULL;
p->str=new char[i-k+2];
int j;
for(j=0;k<=i;j++,k++)
{
p->str[j]=pszBuffer[k];
}
p->str[++j]=NULL;
}
else
{
p->next=new ccon;
p=p->next;
p->next=NULL;
p->str=new char[2]; //<<==이부분에서 오류가 납니다.
p->str[0]=pszBuffer[k++];
p->str[1]=NULL;
k++;
}
}
}
}
오류가 나는곳의 코드와 같은코드가 다른부분에도 있는데,
그부분에서는 오류가 발생하지 않습니다.
그리고 메모컴포넌트에 글자마다 색을 다르게 나타낼려고 하는데,
메모컴포넌트의 폰트 컬러를 바꾸어주면 메모컴포넌트 전체의 글자색이 다바뀌는데
어떻게 나타내야하는지도 좀 알려주시면 고맙겠습니다.
|