テキストファイル(実際にはIntel Hexファイルですが、データはASCIIテキスト)があり、開始行と終了行をゼロで見つける方法がありませんでしたデータ。テキストファイル内のデータ行を検索する
ファイルはデータの行で始まり、次にゼロである行をいくつか持つことができます。私がしようとしているのは、ゼロの最後のグループの場所を見つけることです。
例としてファイルには、この含まれている場合があります。このファイルの
:1234567890
:0987654321
:0000000000
:0000000000
:ABCDEFABCD
:DCBAFEDCBA
:0000000000
:0000000000
:0000000000
:9999999999
を私は開始行と行の#7を返し、終了行として#9行したいと思います。
StreamReader srHexFile = File.OpenText(m_pathHexFile);
while ((readData = srHexFile.ReadLine()) != null)
....
しかし、私はループスルーするための最良の方法で精神的なブロックを有し、かつ、開始と終了の行をセット/リセットしています:
私は現在、このようStreamReaderをし、ReadLineメソッドを使用しています。ありがとうございました!
private int FindEndofFlashData()
{
int lineNumber = 0;
String readData;
String zeroRowData = "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";
int firstZeroRow = -1; // Will hold the location that starts the zero data
//int lastZeroRow = m_numberOfFlashRows - 2; // We know where to stop looking from m_numberOfFlashRows
int lastZeroRow = -1;
bool groupEnded = true;
StreamReader srHexFile = File.OpenText(m_pathHexFile);
/* Loop till the main flash row data ends, which will be used to calculate the number of lines in hex file for
* flash rows. Each line of hex file will have data for 1/2 th of a Flash row (64 bytes)*/
while (((readData = srHexFile.ReadLine()) != null) && (lineNumber < (m_numberOfFlashRows*4 - 4)))
{
if ((readData[HEX_FILE_RECORD_TYPE_CHAR_0_INDEX] == HEX_FILE_DATA_RECORD_CHAR_0) && (readData[HEX_FILE_RECORD_TYPE_CHAR_1_INDEX] == HEX_FILE_DATA_RECORD_CHAR_1))
{
lineNumber++;
if (readData.Substring(9, 128) == zeroRowData)
{
if(groupEnded)
{
firstZeroRow = lineNumber;
groupEnded = false;
}
lastZeroRow = lineNumber;
}
else
{
groupEnded = true;
}
}
else
{
if ((readData[HEX_FILE_RECORD_TYPE_CHAR_0_INDEX] == HEX_FILE_EXTEND_LINEAR_RECORD_CHAR_0) &&
(readData[HEX_FILE_RECORD_TYPE_CHAR_1_INDEX] == HEX_FILE_EXTEND_LINEAR_RECORD_CHAR_1))
{
if (readData[HEX_FILE_EXTENDED_ADDR_CHAR_1_INDEX] >= HEX_FILE_EXTENDED_ADDR_NON_FLASH_REGION)
{
break;
}
}
}
}
Console.WriteLine("First Zero Row is: {0}", firstZeroRow);
Console.WriteLine("Last Zero Row is: {0}", lastZeroRow);
return (firstZeroRow);
}
あなたはすでにループしていますが、次にあなたの問題は何ですか? –