PDA

View Full Version : سوال: لطفا کمک کنید که ایراد این کد در کجاست



docendo
دوشنبه 25 دی 1391, 07:51 صبح
با درود

من این برنامه را از همین تالار برنامه نویس گرفتم موقع اجرای برنامه هیچ اشکالی ندارد و برنامه خوب کار میکند درضمن کار این برنامه ذخیره آخرین تغییرات فروم در XML است
اما اشکال برنامه درموقعی است بخواهی برنامه را آنالیز بکنید و موقع آنالیز 3تا ایراد در خطهای 10 و 104 و 239 میدهد که نتوانستم رفع ایراد بکنم

98369


و این هم کد برنامه


using System;
using System.Xml;
using System.Text;
using System.IO;
using System.Security;

namespace WindowsFormsApplication1
{

public abstract class XmlBased : Profile
{
private Encoding m_encoding = Encoding.UTF8;
internal XmlBuffer m_buffer;


protected XmlBased()
{
}


protected XmlBased(string fileName) :
base(fileName)
{
}


protected XmlBased(XmlBased profile) :
base(profile)
{
m_encoding = profile.Encoding;
}


protected XmlDocument GetXmlDocument()
{
if (m_buffer != null)
return m_buffer.XmlDocument;

VerifyName();
if (!File.Exists(Name))
return null;

XmlDocument doc = new XmlDocument();
doc.Load(Name);
return doc;
}


protected void Save(XmlDocument doc)
{
if (m_buffer != null)
m_buffer.m_needsFlushing = true;
else
doc.Save(Name);

}


public XmlBuffer Buffer(bool lockFile)
{
if (m_buffer == null)
m_buffer = new XmlBuffer(this, lockFile);
return m_buffer;
}


public XmlBuffer Buffer()
{
return Buffer(true);
}


public bool Buffering
{
get
{
return m_buffer != null;
}
}


public Encoding Encoding
{
get
{
return m_encoding;
}
set
{
VerifyNotReadOnly();
if (m_encoding == value)
return;

if (!RaiseChangeEvent(true, ProfileChangeType.Other, null, "Encoding", value))
return;

m_encoding = value;
RaiseChangeEvent(false, ProfileChangeType.Other, null, "Encoding", value);
}
}
}


public class XmlBuffer : IDisposable
{
private XmlBased m_profile;
private XmlDocument m_doc;
private FileStream m_file;
internal bool m_needsFlushing;


internal XmlBuffer(XmlBased profile, bool lockFile)
{
m_profile = profile;

if (lockFile)
{
m_profile.VerifyName();
if (File.Exists(m_profile.Name))
m_file = new FileStream(m_profile.Name, FileMode.Open, m_profile.ReadOnly ? FileAccess.Read : FileAccess.ReadWrite, FileShare.Read);
}
}


internal void Load(XmlTextWriter writer)
{
writer.Flush();
writer.BaseStream.Position = 0;
m_doc.Load(writer.BaseStream);

m_needsFlushing = true;
}


internal XmlDocument XmlDocument
{
get
{
if (m_doc == null)
{
m_doc = new XmlDocument();

if (m_file != null)
{
m_file.Position = 0;
m_doc.Load(m_file);
}
else
{
m_profile.VerifyName();
if (File.Exists(m_profile.Name))
m_doc.Load(m_profile.Name);
}
}
return m_doc;
}
}

internal bool IsEmpty
{
get
{
return XmlDocument.InnerXml == String.Empty;
}
}


public bool NeedsFlushing
{
get
{
return m_needsFlushing;
}
}


public bool Locked
{
get
{
return m_file != null;
}
}


public void Flush()
{
if (m_profile == null)
throw new InvalidOperationException("Cannot flush an XmlBuffer object that has been closed.");

if (m_doc == null)
return;

if (m_file == null)
m_doc.Save(m_profile.Name);
else
{
m_file.SetLength(0);
m_doc.Save(m_file);
}

m_needsFlushing = false;
}


public void Reset()
{
if (m_profile == null)
throw new InvalidOperationException("Cannot reset an XmlBuffer object that has been closed.");

m_doc = null;
m_needsFlushing = false;
}


public void Close()
{
if (m_profile == null)
return;

if (m_needsFlushing)
Flush();

m_doc = null;

if (m_file != null)
{
m_file.Close();
m_file = null;
}

if (m_profile != null)
m_profile.m_buffer = null;
m_profile = null;
}


public void Dispose()
{
Close();
}
}
}

docendo
دوشنبه 25 دی 1391, 18:49 عصر
لینک برنامه از همین سایت

write textBox to XML

http://barnamenevis.org/showthread.php?64210-%D9%86%D9%85%D9%88%D9%86%D9%87-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%87%D8%A7%DB%8C-%DA%A9%D9%88%DA%86%DA%A9-%D9%88-%D9%85%D9%81%D9%8A%D8%AF-%D8%AF%D8%B1-%D8%B3%D9%8A-%D8%B4%D8%A7%D8%B1%D9%BE&p=1294990&viewfull=1#post1294990

saied_hacker
دوشنبه 25 دی 1391, 19:22 عصر
اینا ارور نیست که اختاره...

خیلی مهمه ؟

plus
دوشنبه 25 دی 1391, 19:42 عصر
متن ها واضح هست ولی به هر حال من یه توضیحی میدم.
اولی مربوط به فایل profile.cs هست که شما کدش رو نگذاشیتن. میگه توی Contructor کلاستون، متد Virtual (که قابلیت Override شدن داره) رو فراخوانی نکنید.
دومی میگه کلاس XmlBased که فیلد m_buffer که از نوع XmlBuffer هست رو داره، چون این نوع یعنی XmlBuffer از نوع IDisposable هست، خود نوع کلاس XmlBased هم باید IDisposable باشه.
دوتا اخطار آخر هم در مورد درست پیاده سازی نکردن اینترفیس IDisposable هست.من دقت نکردم که چرا کلاستون این متد رو پیاده کردید، ولی میتونید اینجا (http://msdn.microsoft.com/en-us/library/system.idisposable.aspx)نمونه صحیح پیاده سازی این اینترفیس رو ببینید.

bosslost
جمعه 30 فروردین 1392, 18:03 عصر
سلام دوستان ایراد کارم کجاس من می خوام شماره فاکتور ایجاد کنم ولی وقت اضافه کردن یک محصول به بانکم دوباره شماره فاکتور جدید صادر میشه
[
PrivateFunction ShFact() AsString
Dim conn AsNewSqlConnection(sds.ConnectionString)
Dim da AsNewSqlDataAdapter("select ShFactor from Table_3 ", conn)
Dim ds AsNewDataSet
da.Fill(ds, "tmp")
If ds.Tables("tmp").Rows.Count = 0 Then
Return 1
Else
da.SelectCommand.CommandText = "select max(ShFactor)+1 as fff from Table_3 "
da.Fill(ds, "tmp2")
Return ds.Tables("tmp2").Rows(0).Item(0).ToString.Trim()
EndIf
 
EndFunction
]