PDA

View Full Version : ساخته شدن فایل ناشناس در کنار برنامه



SEPIDEYESHAB
دوشنبه 03 شهریور 1393, 13:36 عصر
با سلام
من یه برنامه نوشتم که بعد از مدتی چندصد فایل ناشناس کنار برنامه ام ساخته میشه
کسی میدونه ماهیت این فایل ها چیه و برای چی ساخته میشه ؟
ممنون میشم جواب بدین

122658

arashsoft
دوشنبه 03 شهریور 1393, 13:47 عصر
سلام
سورس پرژه کجاست؟

SEPIDEYESHAB
دوشنبه 03 شهریور 1393, 13:55 عصر
سورسش رو نمیتونم بدم ولی احتما میدم از قسمت کدهای try catch باشه

در قسمت ارور لیست ها هم اینا هست.
احتمال داره برای اینا باشه ؟

122659

arashsoft
دوشنبه 03 شهریور 1393, 13:57 عصر
اینها مربوط به خطا نیست
پنداشون مربوط به استفاده نکردن است

alibilgats
دوشنبه 03 شهریور 1393, 14:11 عصر
دوست عزیز باید بیستر توضیح بدی! از کدها و کارایی که برنامت میکنه!
تا بشه بهتر کمکت کرد

SEPIDEYESHAB
دوشنبه 03 شهریور 1393, 16:05 عصر
برنامه من یه ارتباط با بانکه، کار خاصی هم نمیکنه از کامپوننت های خود مایکرو سافت هم استفاده کردم ،

ارتباط ADO هست . میشه یه unhandled exeption باشه؟؟

کسی تا حالا براش اتفاق نیفتاده؟

alibilgats
دوشنبه 03 شهریور 1393, 18:47 عصر
منم خیلی بررسی کردم ولی به نتیجه ای نرسیدم!
شما توی پروژتون گزارشگیری هم دارید؟!

fakhravari
دوشنبه 03 شهریور 1393, 20:57 عصر
متغیر هایی هستند که استفاده نشدن

SEPIDEYESHAB
سه شنبه 04 شهریور 1393, 10:23 صبح
سلام مجدد.
آقا من اینو فهمیدم که هر دفعه که این کد زیر اجرا بشه یه فایل کنار برنامه ساخته میشه

کسی مشکلی توی این تیکه کد میبینه ؟

اینم بگم که این تابع توی یه کلاسه که من تو کل برنامه ازش استفاده کردم .


public DataTable select (string Sqlcommands)
{
try
{
if (Con.State == ConnectionState.Closed) Con.Open();
Cmd.CommandText = Sqlcommands;
Cmd.Connection = Con;
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(Cmd);
//if (stordeprocedure) Cmd.CommandType = CommandType.StoredProcedure;
dt.Clear();
//if (Parameter != null && Parameter.Length > 0) Cmd.Parameters.AddRange(Parameter);
da.Fill(dt);
Con.Close();
return dt;
}
catch (Exception ex)
{
var mm = ex.ToString();
return null;
}
}




-------------------------------------------------------------------------------------------------------------------------------------------------------
این کد اشتباه بود. خیلی خیلی عذر خواهی میکنم و قتی کد زیر اجرا میشه اون فایل ها ساخته میشه



public Image select_pic_from_db(string pic_indx)
{
//SqlConnection con = new SqlConnection("server=(local);database=saved_pic_d b;trusted_connection=yes");
SqlCommand cmd = new SqlCommand();

Con.Open();
cmd.Connection = Con;
cmd.CommandText = "select pic_pic from saved_pic where id_pic= '" + pic_indx + "'"; // for this example only get top record
byte[] Img = (byte[])cmd.ExecuteScalar();

// Convert the image record to file stream and display it to picture control
string str = Convert.ToString(DateTime.Now.ToFileTime());
FileStream fs = new FileStream(str, FileMode.CreateNew, FileAccess.Write);

if (Img == null) return null ;

fs.Write(Img, 0, Img.Length);
fs.Flush();
fs.Close();
Con.Close();

return Image.FromFile(str);
}





دقیقا وقتی این خط کد اجرا میشه !!


FileStream fs = new FileStream(str, FileMode.CreateNew, FileAccess.Write);

SEPIDEYESHAB
چهارشنبه 05 شهریور 1393, 09:59 صبح
کسی نمیدونه مشکل از کجاس ؟ :ناراحت:

arashsoft
چهارشنبه 05 شهریور 1393, 13:44 عصر
شاید مشکل از mm است؟
یه بار غیر فعالش کن ببین چی می شه

SEPIDEYESHAB
یک شنبه 09 شهریور 1393, 10:58 صبح
با سلام.
اگر در اجرا مشکلی نباشه که اصلا قسمت catch اجرا نمیشه و دیتاتیبل پر شده رو return میکنه. اما بازم اون فایله ساخته میشه !!!

ینی کسی نمیدونه از چیه ؟!!

بعد از 4 -5 روز تعداد این فایل ها به 1000 تا هم میرسه !!! :ناراحت:

alibilgats
یک شنبه 09 شهریور 1393, 11:15 صبح
یه سوال!
دوست عزیز این فایل ها وقتی داری با ویژوال استادیو برنامه رو run میکنی ایجاد میشن یا فایل کامپایل شده برنامه ( همون فایل exe ) رو هم اجرا میکنی همین حالت پیش میاد؟!
فقط توی این پروژه ای که داری این اتفاق میفته یا توی بقیه پروژه هات هم اینطوری میشه؟

SEPIDEYESHAB
یک شنبه 09 شهریور 1393, 12:37 عصر
توی پروژه دیگه ای استفاده اس نکردم اما فایل اجرایی رو هم اجرا میکنم همینه.

این تابع رو برای استخراج اطلاعات از دیتابیس استفاده میکنم و هرجای برنامه ام که این کد اجرا میشه این فایل ها ساخته میشه.
breakpoint هم گذاشتم اصلا تو قسمت catch نمیره و کد به درستی اجرا میشه اما با هر بار اجرا (پر کردن دیتا تیبل) یه فایل اینجوری هم ساخته میشه.

تو سیستم مشتری هم همینه و ساخته میشه :متعجب:

SEPIDEYESHAB
یک شنبه 09 شهریور 1393, 12:52 عصر
آقا یه چیز جدید !!!
وقتی این کد اجرا میشه میسازه !!!!


public Image select_pic_from_db(string pic_indx)
{
//SqlConnection con = new SqlConnection("server=(local);database=saved_pic_db;trusted_conne ction=yes");
SqlCommand cmd = new SqlCommand();

Con.Open();
cmd.Connection = Con;
cmd.CommandText = "select pic_pic from saved_pic where id_pic= '" + pic_indx + "'"; // for this example only get top record
byte[] Img = (byte[])cmd.ExecuteScalar();

// Convert the image record to file stream and display it to picture control
string str = Convert.ToString(DateTime.Now.ToFileTime());
FileStream fs = new FileStream(str, FileMode.CreateNew, FileAccess.Write);

if (Img == null) return null ;

fs.Write(Img, 0, Img.Length);
fs.Flush();
fs.Close();
Con.Close();

return Image.FromFile(str);
}





دقیقا وقتی این خط کد اجرا میشه !!

FileStream fs = new FileStream(str, FileMode.CreateNew, FileAccess.Write);

من عکس رو در دیتابیس دخیره میکنم و با این تابع عکس رو از دیتابیس میکشم بیرون.

از همه دوستان عذر خواهی میکنم که کد قبلی رو اشتباهی و البته ناخواسته اشتباهی گذاشتم !

بازم ممنون که به سوالم جواب میدین:بوس:

یه چیز دیگه هم فهمیدم...
اون فایل هایی که ساخته میشه به همون نامی ساخته میشه که مقدارش در متغیر str قرار داره !

Ali.hitter
یک شنبه 09 شهریور 1393, 14:21 عصر
آقا یه چیز جدید !!!
وقتی این کد اجرا میشه میسازه !!!!


public Image select_pic_from_db(string pic_indx)
{
//SqlConnection con = new SqlConnection("server=(local);database=saved_pic_db;trusted_conne ction=yes");
SqlCommand cmd = new SqlCommand();

Con.Open();
cmd.Connection = Con;
cmd.CommandText = "select pic_pic from saved_pic where id_pic= '" + pic_indx + "'"; // for this example only get top record
byte[] Img = (byte[])cmd.ExecuteScalar();

// Convert the image record to file stream and display it to picture control
string str = Convert.ToString(DateTime.Now.ToFileTime());
FileStream fs = new FileStream(str, FileMode.CreateNew, FileAccess.Write);

if (Img == null) return null ;

fs.Write(Img, 0, Img.Length);
fs.Flush();
fs.Close();
Con.Close();

return Image.FromFile(str);
}





دقیقا وقتی این خط کد اجرا میشه !!

FileStream fs = new FileStream(str, FileMode.CreateNew, FileAccess.Write);

من عکس رو در دیتابیس دخیره میکنم و با این تابع عکس رو از دیتابیس میکشم بیرون.

از همه دوستان عذر خواهی میکنم که کد قبلی رو اشتباهی و البته ناخواسته اشتباهی گذاشتم !

بازم ممنون که به سوالم جواب میدین:بوس:

یه چیز دیگه هم فهمیدم...
اون فایل هایی که ساخته میشه به همون نامی ساخته میشه که مقدارش در متغیر str قرار داره !

با سلام ؛
خب اینکه مشخصه فایل های ساخته شده همون عکس هایی هستن که شما تو برنامه دارین استریم میکنین!
که به این خاطر ساخته شدن که شما توی آرگمان دوم filestream ، فایل مود رو create new قرار دادین !
که باعث میشه اون فایل ها ساخته هم بشن دوباره که این کار توی cyrrent directory انجام میشه !(یعنی همون پوشه ی Debug)
شما برای این که فقط عکس ها خونده بشن و دوباره تولید نشن FileMode رو برابر Open قرار بده

SEPIDEYESHAB
دوشنبه 10 شهریور 1393, 11:21 صبح
سلام علی آقا.
ممنون که پاسخ دادین.
این کاری که گفتین انجام دادم ولی اخطار داد.
برای همین فکر کردم باید از memorystream استفاده کرد تا فایلی ساخته نشه برای همین امتحان کردم و درست شد :لبخند:
اینم کدش :



public Image select_pic_from_db(string pic_indx)
{
SqlCommand cmd = new SqlCommand();

Con.Open();
cmd.Connection = Con;
cmd.CommandText = "select pic_pic from saved_pic where id_pic= '" + pic_indx + "'"; // for this example only get top record
byte[] Img = (byte[])cmd.ExecuteScalar();

MemoryStream ms = new MemoryStream(Img);
if (Img == null) return null ;

Con.Close();
return Image.FromStream(ms);
}