Čaues,
mám dotaz, co mám v tomto kódu změnit, aby to nečetlo pozici podle bytů, ale podle znaků? Pozice předaná se neshoduje přesně s pozicí získanou, protože čte po bytech.
Díky moc
private void timer1_Tick(object sender, EventArgs e)
{
FileStream fw = new FileStream(@"log.txt", FileMode.Open, FileAccess.Write, FileShare.ReadWrite);
StreamWriter writer = new StreamWriter(fw);
//fw.Seek(logpos, SeekOrigin.Begin);
//009
try
{
// cteni pokerstars.log.0 a zapisovani do log.txt
FileStream fr = new FileStream(pathlogfile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
StreamReader reader = new StreamReader(fr);
//nastaveni pozice
fr.Seek(pspos, SeekOrigin.Begin);
//prvni cyklus; cte radky z pokerstars.log.0, ktere se maji vytahnout do log.txt
//******************************************************************* 1. CYKLUS ********************************************************************
while (reader.EndOfStream == false)
{
string text = reader.ReadLine();
lenstring += text.Length;
if (text.Contains("MSG_0x0009-T"))
{
string cardtemp = text;
text = reader.ReadLine();
// iffirst:
if (text.Contains("::: "))
{
string cardtemp1 = text;
text = reader.ReadLine();
lenstring += text.Length;
// ifsecond:
if (text.Contains("::: "))
{
i++;
string cardtemp2 = text;
writer.WriteLine(i + " " + cardtemp + " " +
cardtemp1 + " " + cardtemp2);
listBox1.Items.Add(i + " " + cardtemp + " " +
cardtemp1 + " " + cardtemp2);
cislo1 = cardtemp.Split(' ');
break;
}
else
{
text = reader.ReadLine();
lenstring += text.Length;
// goto ifsecond;
}
}
else
{
text = reader.ReadLine();
lenstring += text.Length;
// goto iffirst;
}
}
}
//******* TADY VZNIKÁ PROBLÉM, PROTOŽE SE POZICE NEZAPÍŠE PŘESNĚ
pspos = reader.BaseStream.Position;
//******* TADY VZNIKÁ PROBLÉM, PROTOŽE SE POZICE NEZAPÍŠE PŘESNĚ
reader.Close();
fr.Close();
}
catch (Exception ex)
{
listBox1.Items.Add("***009*** " + ex.Message);
}
//007
bool ok = false;
int tiktak = 0;
while (ok == false && tiktak < 100)
{
try
{
FileStream fr2 = new FileStream(pathlogfile, FileMode.Open,
FileAccess.Read, FileShare.ReadWrite);
StreamReader reader2 = new StreamReader(fr2);
//******* TADY VZNIKÁ PROBLÉM, PROTOŽE SE POZICE NEPŘEDÁ PŘESNĚ
fr2.Seek(pspos, SeekOrigin.Begin);
//******* TADY VZNIKÁ PROBLÉM, PROTOŽE SE POZICE NEPŘEDÁ PŘESNĚ
pspos1 = fr2.Position;
while (reader2.EndOfStream == false)
{
string text = reader2.ReadLine();
cislo2 = text.Split(' ');
if (text.Contains("MSG_0x0007-T") && text.Contains(cislo1[2]))
{
string stacktemp = text;
text = reader2.ReadLine();
if (text.Contains("'F'") || text.Contains("'w'"))
{
string stacktemp1 = text;
text = reader2.ReadLine();
if (text.Contains("'C'") || text.Contains("'c'") ||
text.Contains("'W'"))
{
string stacktemp2 = text;
text = reader2.ReadLine();
if (text.Contains("'*'"))
{
string stacktemp3 = text;
writer.WriteLine(i + " " + stacktemp + " " +
stacktemp1 + " " + stacktemp2 + " " + stacktemp3);
listBox1.Items.Add(i + " " + stacktemp + " " +
stacktemp1 + " " + stacktemp2 + " " + stacktemp3);
ok = true;
break;
}
else
{
writer.WriteLine(i + " " + stacktemp + " " +
stacktemp1 + " " + stacktemp2);
listBox1.Items.Add(i + " " + stacktemp + " " +
stacktemp1 + " " + stacktemp2);
ok = true;
break;
}
}
}
}
}
reader2.Close();
fr2.Close();
}
catch (Exception ex)
{
listBox1.Items.Add("***007*** " + ex.Message);
}
if(ok == false)
{
System.Threading.Thread.Sleep(20);
tiktak++;
}
}
//logpos = fw.Position;
writer.Close();
fw.Close();
//druhy cyklus asociuje s promennymi veskera potrebna data z log.txt
//*********************************** 2. CYKLUS *******************