PDA

View Full Version : تهيه فايل log



noshin156
شنبه 10 تیر 1391, 10:00 صبح
سلام
من مي خواهم از برنامه ام كه به زبان mfc نوشتم فايل log تهيه كنم چه جوري بايد اين كارو انجام بدم اصلا فايل log چي هست؟

#target
شنبه 10 تیر 1391, 12:07 عصر
فایل لاگ از فعالیت ها و اتفاقات برنامه خودتون ؟ یا منظور دیگه دارین ؟
اتفاقاتی از برنامه که قرار ثبت بشه راحت میتونید بعد از اتفاق اونو تو ی فایل متنی ثبت کنین !

noshin156
شنبه 10 تیر 1391, 12:14 عصر
فایل لاگ از فعالیت ها و اتفاقات برنامه خودتون ؟ یا منظور دیگه دارین ؟
اتفاقاتی از برنامه که قرار ثبت بشه راحت میتونید بعد از اتفاق اونو تو ی فایل متنی ثبت کنین !
آره منظورم همينه ميخوام روند اجراي برنامه رو با استفاده از يك فايل متني دنبال كنم
يعني يك دكمه بذارم كه وقتي روش كليك مي كنم شروع به تهيه log كنه ووقتي روش دوباره كليك كردم متوقف بشه
ميتونيد يه نمونه كد براي من بذاريد
با تشكر

zahmatkesh8519
یک شنبه 11 تیر 1391, 19:11 عصر
بعد از هر تکه کدی که حادثه ای در برنامه محسوب می شه متنی رو به فایل اضافه کنین .
در دکمتون یه متغییر سراسری بزارین که مقادیرش true و false عوض شه .
کد زیر رو به صورت عمومی بزارین تا در قسمت های مختلف به هندل فایل دسترسی داشته باشین :
CString Path=L"D:\\Reportes.txt";

m_DirectroryPath = Path;
HANDLE fhInitial;
DWORD dwBytesToWrite ;//= (DWORD)strlen(DataBuffer);
DWORD dwBytesWritten = 0;
bool ErrorFlag_WriteFile;

fhInitial = CreateFile(Path,GENERIC_WRITE,0,NULL,CREATE_ALWAYS , //مقدار دهی به هندل فایل
FILE_ATTRIBUTE_NORMAL|FILE_FLAG_SEQUENTIAL_SCAN,NU LL);


قسمت بالا رو در اجرای فرم برنامه قرار بدین .
زیر قسمت زیر :
// TODO: Add extra initialization here
هر کجای برنامه هم خواستین مقداری رو به فایل بفرستین تا در ادامش چاپ بشه از کد زیر استفاده کنین :
ASSERT(fh2 != INVALID_HANDLE_VALUE);
if (fhInitial != INVALID_HANDLE_VALUE)
{
CStringW TextInFile = L" \t بسم الله الرحمن الرحیم \r\n";
dwBytesToWrite = (DWORD) TextInFile.GetLength() * 2 ;
dwBytesWritten = 0;

ErrorFlag_WriteFile = WriteFile(
fhInitial, // open file handle
(LPCVOID)TextInFile , // start of data to write
dwBytesToWrite , // number of bytes to write
&dwBytesWritten, // number of bytes that were written
NULL ) ;
}

متن مورد نظرتون رو در متغییر TextInFile قرار بدین .

نکته :
از \r\n برای نوشتن در خط جدید فایل استفاده کنین .
مقادیر عددی رو مستقیم به رشته نمی شه تبدیل کرد از تیکه کد زیر استفاده می تونین بکنین :
CString ValueCString;
ValueCString.Format (L"%u", values);
value متغییری عددی هست و u به معنی عدد بی علامت هست .
و دیگر پارامتر های داخل این رشته : n عدد / یا c کاراکتر / یا x هگز هست .

noshin156
دوشنبه 12 تیر 1391, 12:58 عصر
خيلي ممنون جواب داد،فقط يه مشكلي از fh2 خطا ميگيره اين چي هست هندله؟ از چه نوع بايد تعريف بشه و در كجا؟