Thanks, I will se how I go with that....
Cheers, Jeremy Coulter
> > Jeremy Coulter wrote:
> >
> > Hi all.
> > I have been doing some data conversion for work last few days, and one
> > thing I to do is searching for some text in a file, and thenget the offset
> > to the text. (the file is binary not text)
> >
> > Woulsd I be best to read in say 1024 bytes into a buffer, then search the
> > buffer for the text I want?
>
> The only problem with that is if the text you're searching for spans two
> reads. For example, if the text string is 20 bytes long and starts at
> offset 1020 in the file then you might not find it.
>
> To work around this, create a buffer that's (block_size + length_of_string)
> bytes long. For each block copy the top (length_of_string) bytes into the
> bottom of the buffer, and read the block from the file into the buffer at
> offset(length_of_string). This way you canbe sure that the data is always
> going to be fully in the buffer.
>
> Of course if you're searching for a large string then it might be better to
> just look for the start of it, then do a full check at that position in the
> file. Or once you've found the first bit make sure the next part is there,
> etc.
>
>
> In C++ it'd look something like this:
>
> int SearchFile(TFileStream* file, AnsiString text)
> {
> int len = text.Length();
> char* buffer = new char[1024 + len];
> memset(buffer, 0, 1024 + len);
> file->Position = 0;
> while (file->Position < file->Size)
> {
> memcpy(buffer, buffer + 1024, len);
> file->Read(buffer + len, 1024);
>
> for (i = 0; i < 1024; i++)
> if (AnsiString(buffer + i, len) == text)
> return (file->Position - 1024 - len + i);
> }
> return -1;
> }
>
> Hopefully that gives you an idea of what I'm talking about.
>
> --
> Corey Murtagh
> The Electric Monk
> "Quidquid latine dictum sit, altum viditur!"
> ---------------------------------------------------------------------------
> New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
> Website: http://www.delphi.org.nz
> To UnSub, send email to: [EMAIL PROTECTED]
> with body of "unsubscribe delphi"
---------------------------------------------------------------------------
New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
Website: http://www.delphi.org.nz
To UnSub, send email to: [EMAIL PROTECTED]
with body of "unsubscribe delphi"