QUOTE(Snoopy @ 2007年 06月 08日 14时 11分) [snapback]334190[/snapback]
请问LZ源代码能不能共享?
我觉得C#没那么简单吧,比VB还简单?
下面的代码是提取字符串中核心代码的一部分,这些有 160 多行,提取字符串核心代码有近 400 行。我也不知道你认为难还是不难,那你参考一下吧。
CODE
if (i1 != 0 && i2 != 0)
{
do
{
fs1.Seek(-2, SeekOrigin.Current);
fs2.Seek(-2, SeekOrigin.Current);
i1 = br1.ReadByte();
i2 = br2.ReadByte();
} while (i1 != 0 && i2 != 0);
l1 = fs1.Position;
l2 = fs2.Position;
bool b1 = true;
bool b2 = true;
do
{
i1 = br1.ReadByte();
i2 = br2.ReadByte();
z++;
if (i1 == 0)
{
b1 = false;
}
if (i1 > 0 && b1 == false)
{
x++;
}
if (i1 > 0)
{
b1 = true;
}
if (i2 == 0)
{
b2 = false;
}
if (i2 > 0 && b2 == false)
{
y++;
}
if (i2 > 0)
{
b2 = true;
}
} while (i1 != 0 || i2 != 0);
fs1.Seek(l1, SeekOrigin.Begin);
fs2.Seek(l2, SeekOrigin.Begin);
i1 = br1.ReadByte();
i2 = br2.ReadByte();
fs1.Seek(l1, SeekOrigin.Begin);
fs2.Seek(l2, SeekOrigin.Begin);
if (x == 0 && y == 0)
{
i3 = i4 = 0;
do
{
i1 = br1.ReadByte();
bt1[i3] = (byte)i1;
i3++;
} while (i1 != 0);
do
{
i2 = br2.ReadByte();
bt2[i4] = (byte)i2;
i4++;
} while (i2 != 0);
fs1.Seek(-i3, SeekOrigin.Current);
u1 = br1.ReadUInt32();
if (u1 != 4294967295)
{
s1 = System.Text.Encoding.Default.GetString(bt1, 0, i3 - 1);
if (radioButton3.Checked == true)
{
if (i3 - 1 == s1.Length && i4 - 1 > 1)
{
list1.Add(s1);
list2.Add(System.Text.Encoding.Default.GetString(bt2, 0, i4 - 1));
}
}
else if (radioButton4.Checked == true)
{
if (i3 - 1 == s1.Length && i4 - 1 > 1)
{
list1.Add(s1);
list2.Add(System.Text.Encoding.UTF8.GetString(bt2, 0, i4 - 1));
}
}
}
}
else
{
for (int ix = 0; ix <= x; ix++)
{
if (i1 > 0)
{
i3 = 0;
do
{
i1 = br1.ReadByte();
bt1[i3] = (byte)i1;
i3++;
} while (i1 != 0);
fs1.Seek(-i3, SeekOrigin.Current);
u1 = br1.ReadUInt32();
if (u1 != 4294967295)
{
s1 = System.Text.Encoding.Default.GetString(bt1, 0, i3 - 1);
if (i3 - 1 == s1.Length)
{
if (i3 - 1 > 1)
{
list3.Add(s1);
}
}
}
fs1.Seek(i3 - 4, SeekOrigin.Current);
}
if (ix < x)
{
do
{
i1 = br1.ReadByte();
} while (i1 == 0);
fs1.Seek(-1, SeekOrigin.Current);
}
}
for (int ix = 0; ix <= y; ix++)
{
if (i2 > 0)
{
i4 = 0;
do
{
i2 = br2.ReadByte();
bt2[i4] = (byte)i2;
i4++;
} while (i2 != 0);
fs2.Seek(-i4, SeekOrigin.Current);
u2 = br2.ReadUInt32();
if (u2 != 4294967295)
{
if (i4 - 1 > 1)
{
if (radioButton3.Checked == true)
{
list4.Add(System.Text.Encoding.Default.GetString(bt2, 0, i4 - 1));
}
else if (radioButton4.Checked == true)
{
list4.Add(System.Text.Encoding.UTF8.GetString(bt2, 0, i4 - 1));
}
}
}
fs2.Seek(i4 - 4, SeekOrigin.Current);
}
if (ix < y)
{
do
{
i2 = br2.ReadByte();
} while (i2 == 0);
fs2.Seek(-1, SeekOrigin.Current);
}
}
}
fs1.Seek(l1 + z, SeekOrigin.Begin);
fs2.Seek(l2 + z, SeekOrigin.Begin);
}