int iFileHandle;
int iFileLength;
char *pszBuffer;
Lines->Clear();
try
{ //=======将文件读入pszBuffer字符串中
iFileHandle = FileOpen(FileName, fmOpenRead);
iFileLength = FileSeek(iFileHandle,0,2);
FileSeek(iFileHandle,0,0);
pszBuffer = new char[iFileLength+1];
FileRead(iFileHandle, pszBuffer, iFileLength);
FileClose(iFileHandle);
//=======查找标志
for( int i=0;i<=iFileLength+1;i++ )
{
if( pszBuffer[i] == 0x0b && \
pszBuffer[i+1] == 0x00 && \
pszBuffer[i+2] == 0x00 && \
pszBuffer[i+3] == 0x00 && \
pszBuffer[i+4] == 0x00 && \
pszBuffer[i+5] == 0x00 && \
pszBuffer[i+6] == 0x00 && \
pszBuffer[i+7] == 0x00 && \
pszBuffer[i+8] == 0x1e && \
pszBuffer[i+9] == 0x10 && \
pszBuffer[i+10] == 0x00 && \
pszBuffer[i+11] == 0x00 )
{
int h=(int)pszBuffer[i+12];
i=i+16;
for( int j=1;j<=h;j++)
{
char *TableName=new char[i];
strncpy(TableName,&pszBuffer[i+4],(int)pszBuffer[i]);
Lines->Add(TableName);
delete [] TableName;
i=i+(int)pszBuffer[i]+4;
}
}
} delete [] pszBuffer;
}
int iFileLength;
char *pszBuffer;
Lines->Clear();
try
{ //=======将文件读入pszBuffer字符串中
iFileHandle = FileOpen(FileName, fmOpenRead);
iFileLength = FileSeek(iFileHandle,0,2);
FileSeek(iFileHandle,0,0);
pszBuffer = new char[iFileLength+1];
FileRead(iFileHandle, pszBuffer, iFileLength);
FileClose(iFileHandle);
//=======查找标志
for( int i=0;i<=iFileLength+1;i++ )
{
if( pszBuffer[i] == 0x0b && \
pszBuffer[i+1] == 0x00 && \
pszBuffer[i+2] == 0x00 && \
pszBuffer[i+3] == 0x00 && \
pszBuffer[i+4] == 0x00 && \
pszBuffer[i+5] == 0x00 && \
pszBuffer[i+6] == 0x00 && \
pszBuffer[i+7] == 0x00 && \
pszBuffer[i+8] == 0x1e && \
pszBuffer[i+9] == 0x10 && \
pszBuffer[i+10] == 0x00 && \
pszBuffer[i+11] == 0x00 )
{
int h=(int)pszBuffer[i+12];
i=i+16;
for( int j=1;j<=h;j++)
{
char *TableName=new char[i];
strncpy(TableName,&pszBuffer[i+4],(int)pszBuffer[i]);
Lines->Add(TableName);
delete [] TableName;
i=i+(int)pszBuffer[i]+4;
}
}
} delete [] pszBuffer;
}
解决方案 »
- ToolBar控件按钮位置
- 120分求救。。。。。如何让fastreport在指定打印机打印
- 请帮我看下这个函数错在那里了.谢谢!(在线等,等到帮助直接结帖)
- oosmile进来,上次那张贴楼主加错分到我这里了,还给你
- DLL如何返回多个值
- 调查。。。。。
- DBGrid的问题,高手请进。
- 新手高分求解,问题有解后再给500分;((Delphi6针对Corba开发的支持提供了VisiBroker3.3和VisiBroker4.0,我现在手头关于Corba的资料都是针
- delphi中支持链表结构吗,是哪一个类?
- 我应该怎么做?
- 有人碰到过TTABLE的NEXT无效的情况吗?无法移动数据指针了,怎么办啊~
- 号召:深圳的朋友星期天到莲花山踏青去!
var
i: Integer;
S: TStringList;
tmp: String;
h,j: Integer;
TableName: String;
begin
try
try
Result := TStringList.Create;
S := TStringList.Create;
S.LoadFromFile(strFileName);
i := 0;
while i <= Length(S.Text) do begin
tmp := S.Text;
if( Word(tmp[i]) = $B ) and
( Word(tmp[i+1]) = $00 ) and
( Word(tmp[i+2]) = $00 ) and
( Word(tmp[i+3]) = $00 ) and
( Word(tmp[i+4]) = $00 ) and
( Word(tmp[i+5]) = $00 ) and
( Word(tmp[i+6]) = $00 ) and
( Word(tmp[i+7]) = $00 ) and
( Word(tmp[i+8]) = $1e ) and
( Word(tmp[i+9]) = $10 ) and
( Word(tmp[i+10]) = $00 ) and
( Word(tmp[i+11]) = $00 )
then begin // found flag
h := Word(tmp[i+12]);
i := i + 16;
for j:=1 to h do begin
TableName := Copy(tmp,i+4,Word(tmp[i]));
Result.Add(TableName);
i := i + Word(tmp[i]) + 4;
end;
end
else
Inc(i);
end;
finally
if Assigned(S) then S.Free;
if Assigned(Result) then Result.Free;
end;
except
Result := nil;
end;
end;
while i <= Length(S.Text) do begin
tmp := S.Text;
换成这句:
tmp := S.Text;
while i <= Length(S.Text) do begin