开发者

Linq Pattern Matching Problem

The code below searches through a file to see if a pattern matches and stores the file offset in the 'result' variable. I then had a for each loop which cycles through the 'result' variable to display the offsets which worked fine ... Untill, I had some further code to read in the file contents at each offset and perform a calculation on each read in and output it in the console.

For some reason the for each loop is only outputing the first calculation, instead of continuing to do all the other offsets.

Any help to why this for each loop is stopping at the first offset?

Thanks in advance

 byte[] pattern = 00 00 00 08 00;
 byte[] file = "C:\\123.cfg";

 var result = Enumerable.Range(0, file.Length - pattern.Length + 1)
                   .Where(i => pattern.Select((b, j) => new { j, b })
                                      .All(p => file[i + p.j] == p.b))
                   .Select(i => i + pattern.Length - 1);


foreach (var value in result) {

    int startaddress1 = value + 1;
    int EndAddress1 = value + 4;

    int startaddress2 = EndAddressLong + 1;
    int EndAddress2 = EndAddressLong + 4;

    MyGlobals.123_filepath = "C:\\123.cfg";

    ///////////////////////////// Read in the selected //////////////

    BinaryReader br = new BinaryReader(File.OpenRead(MyGlobals.123_filepath),  
    System.Tex开发者_开发问答t.Encoding.BigEndianUnicode);

    for (int i = startaddress1; i <= EndAddress2; i++)
    {
        br.BaseStream.Position = i;
        MyGlobals.Hexbytes += br.ReadByte().ToString("X2") + ",";
    }


}


I think your problem is with Console.ReadKey() you will need to press a key in order to continue the foreach loop


There is only one reason possible to why the loop exits after one iteration:

  • result has only one value inside
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜