PDA

View Full Version : سوال: درخواست کمک فوری فوری در مورد ادیتور



mgro5862
چهارشنبه 04 دی 1387, 12:52 عصر
با سلام خدمت همه دوستان
مطلبی که در این تاپیک راجع بهش سوال کردم رو قبلا هم در تاپیک دیگری به نوع دیگری عنوان کردم . اما با توجه به اینکه موضوع یک مقداری تغییر کرده فکر کردم شاید اگه دریک تاپیک جدید بزارمش زودتر جواب می گیرم .
من می بایست در قسمتی از پروژه کلاسیم ادیتور متنی که در Console آماده شده بود رو قرار می دادم. دوستان فایلهایی رو برام گذاشته بودند اما نتونست مشکلم رو حل کنه. خلاصه تونستم یه فایلی رو از یک سایت بگیرم که به چیزی که نیاز داشتم نزدیک تره اما وقتی اون رو تو ویژوال سی پلاس پلاس اجرا می کنم بهم کلی Error می ده و چون من خیلی کم تجربه ام نمی دونم چطوری باید حلش کنم . با توجه به اینکه برای تحویل این پروژه 3 روز فرصت دارم این موضوع هم یک قسمتی از کل پروژه است ، اگه کسی می تونه بهم کمک کنه و اشکالاتش رو پیدا کنه و اگه تونست رفعش کنه و یا اگه نخواست خودش زحمتش رو بکشه بهم بگه که باید چیکارش کنم ، ممنون می شم. امیدوارم بتونم تو قسمتهای دیگه این سایت منم کمکتون رو جبران کنم. فایل دریافتیم رو هم برای بررسی گذاشتم.

Nima_NF
چهارشنبه 04 دی 1387, 15:21 عصر
همان طوری که قبلا هم گفتم، این امکانات برای کامپایلرهای قدیمی است. در فایلی که ضمیمه کردید از امکانات dos استفاده شده است که در کامپایلرهای قدیمی borland مانند ++Turbo C یا در کامپایلر های جدید آن مانند C++builder وجود دارد.

پیاده سازی همه آن ها در ++VC قابل انجام نیست. مانند textmode . با توجه به آن، بقیه موارد با مطالب این لینک ها قابل حل هستند:
http://barnamenevis.org/forum/showthread.php?t=92264
http://www.barnamenevis.org/forum/showpost.php?p=471409&postcount=7

به جای delay هم می توانید از Sleep در VC استفاده کنید با استفاد از هدر فایل Windows.h

ضمنا سوالاتی که مربوط به برنامه نویسی کنسولی و غیر GUI هستند در همین بخش باید پرسیده شوند.

موفق باشید

mgro5862
چهارشنبه 04 دی 1387, 16:33 عصر
نیما جان
من تغییراتی رو که توی اون تاپیک ها گفته بودی انجام دادم اما هنوز Error دارم
متن Error رو براتون می ذارم بهم بگین چی کار کنم.
ممنون

ompiling...
Notepad.cpp
warning C4518: 'char ' : storage-class or type specifier(s) unexpected here; ignored
error C2146: syntax error : missing ';' before identifier 'ch'
fatal error C1004: unexpected end of file found
Error executing cl.exe.
Notepad.obj - 2 error(s), 1 warning(s)


اینم متن کل برنامه که تغییرش دادم
هر جا که چیز جدیدی اضافه کردم آخرش این توضیح رو دادم Add mr//


#include<Windows.h>
#include<dos.h>
#include<process.h>
#include<string.h> // for various functions of strings like gets or puts
#include<fstream.h> // for files
#include<stdio.h>
//#include<iostream.h>
#include<iostream> //Add mr
#include<conio.h>
#include <stdlib.h> //Add mr
using namespace std; //Add mr

void starting();
void typing();
void openfile(char *);
void newfile(char *);
void print(char i[],int x,int y);
void gotoxy(int,int) //Add mr
char ch;
char s[20];
char xs[20];
char ys[20];

void main()
{
// clrscr();
system("cls");//Add mr
textmode(BW40);
print(" MY NOTEPAD ",3,14);
print(" Presented",6,14);
print(" By ",7,17);
print(" Zahid Ashfaq",8,13);

textmode(BW80);
starting();

typing();
getch();
}

void starting()
{ textcolor(1);
textbackground(WHITE);

// clrscr();
system("cls");//Add mr
for(int i=0 ;i<45;i++)
{if(i==0||i==44)
cout<<"||";
else if(i==4)
cout<<" ctrl+O(Open file)";
else if(i==24)
cout<<" ctrl+n(New file)";
else
cout<<"=";}
gotoxy(80,24); cout<<endl;
for( i=0 ;i<37;i++)
{if(i==0||i==47)
cout<<"||";
else if(i==4)
cout<<" ctrl+s(save file)";
else if(i==16)
cout<<" ctrl+k(Help)";
else if(i==26)
cout<<"ctrl+q(Quit)";
else
cout<<"=";}
}

void typing()
{ int i=0;
char *p=new char[2000];
step1 : int row=2 ,col=1;
while(ch!=19)
{
gotoxy(col,row);
step2: if(col==79)
{col=1;row++;}
else if (row==24)
goto step1;
int a;
ch=getch();
if(ch == 0)
ch = getch();
a=ch; // To convert character to its ascii code
switch(a)
{
case 13 : row=row++;col=1; // case for press enter for next line
gotoxy(col,row);
ch='\n';
break;
case 8 :
if(col==1) // case for backspace
{row--;col=78;}
else
{col--;
cout<<" ";
i--;
}
continue;
case 9 : col=col+8; // case for tab function
if(col>79)
{row++;col=col-79;
}
continue;
case 72 : row--; //upper arrow key
continue;
case 77 : col++; continue; //right arrow key
case 75 : col--; continue; //left arrow key
case 80 : //down arrow key
row++;
continue;
case 14 : clrscr(); //to creat new file ctrl+n
cout<<"Enter File`s Path ";
gets(s);
newfile(s);
starting();
break;
case 15 : clrscr(); //to open existing file ctrl+o
cout<<"Enter file`s path to be open :" ;
gets(xs);
starting();
openfile(xs);
continue;


case 11 : clrscr();
gotoxy(20,3);
cout<<"~`~`~`~`~ HELP PORTION ~`~`~`~`~";
gotoxy(20,4);
cout<<"Following Are the Keys Used in My-Note PAD : ";
int za=10;
for(int i=0;i<46 ;i++ )
{
gotoxy(za,5);
cout<<"=";za++;}
za=6;
for(i=0;i<15;i++)
{gotoxy(10,za);
cout<<"|"<<endl;
za++;}
za=10;
for( i=0;i<46 ;i++ )
{
gotoxy(za,21);
cout<<"=";
za++;}
za=6;
for(i=0;i<15;i++)
{gotoxy(56,za);
cout<<"|"<<endl;
za++;}
gotoxy(13,6);
cout<<" 1-To Open File Press ( ctrl + o ) ";
gotoxy(13,8);
cout<<" 2-To create New File Press(ctrl+n) " ;
gotoxy(13,10);
cout<<" 3-MOve Arrow keys (up,down,right,left)" ;
gotoxy(13,12);
cout<<" 4-Back Space ";
gotoxy(13,14);
cout<<" 5-Save File(ctrl+s)";
gotoxy(13,16);
cout<<" 6-Enter For new line ";
gotoxy(13,18);
cout<<" 7-Enter ctrl+q(Quit)";
gotoxy(13,20);
cout<<"Press any key to Go back " ;
getch();
clrscr();
starting();
continue;

case 17 :
//clrscr();
system("cls");//Add mr
gotoxy(24,6);
cout<<"Thank You For using PIcs-soft Word ";
cout<<endl;
gotoxy(24,8);
cout<<"Have A NIce Time ";
getch();
exit(0);
}
cout<<ch;
p[i]=ch;
col++; i++;
p[i]='\0';
}
clrscr();
cout<<"enter path where you want to save the file ";
gets(ys); int j=0;
ofstream f1(ys,ios::out);
while(p[j]!='\0')
{f1.write((char*)&p[j],sizeof(p[j]));
j++;}
f1.close();
delete [] p;
exit(0);

}

void newfile(char *s)
{
ofstream file(s,ios::out);
file.close();
}
void openfile(char *xs)
{ char ch; int col=3,row=2;
gotoxy(col,row);
ifstream file(xs,ios::in);
while( file.read((char*)&ch,sizeof(ch)))
cout<<ch;
file.close();
}

void print(char i[],int x,int y)
{
char far* ptr=(char far*) 0xB8000000+(160*x)+(2*y) ;
for(int a=0; i[a]!='\0'; a++)
{
*ptr=i[a];
*(ptr+1)=16;
ptr=ptr+2;
//delay(250);
Sleep (250); //Add mr
}
ptr=ptr+2;
}


void gotoxy(int x,int y) //Add mr
{
COORD pos;
HANDLE hConsole = GetStdHandle ( STD_OUTPUT_HANDLE );
if (INVALID_HANDLE_VALUE != hConsole)
{
pos.X = x;
pos.Y = y;
SetConsoleCursorPosition( hConsole, pos );
}
}

Saeed_m_Farid
چهارشنبه 04 دی 1387, 17:15 عصر
آقا mgro5862 (http://barnamenevis.org/forum/member.php?u=82588)؛ اصلا متن error رو میخونی؟
1- تو
void gotoxy(int,int) //Add mr ; رو فراموش کردی
2-
for( i=0 ;i<37;i++) متغیر i رو تعریف نکردی
3- تو case 11 ات کدها رو بذار تو {...} (البته همه رو بذاری تو براکت بهتره) مثلا :

case 15 :
{
clrscr(); //to open existing file ctrl+o
cout<<"Enter file`s path to be open :" ;
gets(xs);
starting();
openfile(xs);
}continue;

4- کد خیلی نا مرتبه! :متفکر:

Nima_NF
چهارشنبه 04 دی 1387, 17:46 عصر
علاوه بر موارد ذکر شده در بالا،

- همه clrscr را حذف کنید.

- fstream هم .h ندارد.

- وقتی در case متغیری تعریف می کنید باید از ابتدا تا انتهای آن { } قرار دهید.

- textcolor و textbackground و textmode را هم پاک کنید، در صورت نیاز از توابع معادل مایکروسافتی برای کنسول استفاده کنید، لینک لیست آن ها در همان لینک های بالا وجود دارد.

- بخش print و char far هم اشکال دارد، خودتان کد آن قسمت را مجددا بنویسید، در ++C و به دنبال آن در ++VC دیگر far وجود ندارد. (البته وجود دارد اما هیچ و بی تاثیر درنظر گرفته می شود)
بهتر هست از عنوان دیگری مثلا printCH یا هر عنوانی متفاوت از دستورات استاندارد C استفاده کنید.

mgro5862
یک شنبه 08 دی 1387, 11:48 صبح
سلام دوستان
من بالاخره تونستم با کمک از شما و قسمتی از فایلهایی که از جاهای مختلف گرفته بودم ، این کار رو به یه جایی برسونم . با توجه به اینکه برای ارسال این کار به استادم تا 16 دی ماه فرصت ازش گرفتم خواهش می کنم به کدهای زیر یه نگاهی کنید و بگین اشکالاتم کجاست.

اشکالی که دارم تو اجرای برنامه است . وقتی که برنامه رو اجرا می کنم یه فایلی رو توی پوشه این پروژه ذخیره می کنه و هر چی من تایپ کردم می شه نام اون پوشه . من اصلا نیازی به ذخیره چیزایی که تایپ می شه ندارم.
چون بیشتر کد های برنامه رو از جای دیگه ای کپی کردم نمی دونم باید چیکارش کنم
تنها چیزی که من از این برنامه می خوام اینه که بتونم چیزایی رو تایپ کنم و بعد هم بتونم با کلید های تعریف شده تو قسمت ُswitch عملیاتی رو روش انجام بدم.
تو قسمت switch هم یکی از مشکلاتم اینه که کلید Enter درست کار نمی کنه.



#include<Windows.h>
#include<fstream.h>
#include<stdio.h>
#include<conio.h>
#include <iostream.h>

void typing();
void gotoxy(int,int);

char ch ;
char s[20];
char xs[20];
char ys[20];


int main()
{

system("cls");

typing();

getch();

return 0;
}




void typing()
{
int i=0;
char *p=new char[2000];

step1 : int row=1 ,col=1;

while(ch)
{
gotoxy(col,row);

if(col==79) {col=1;row++;} else if (row==24) goto step1;

int a;
ch=getch();
if(ch == 0) ch = getch();


a=ch;

switch(a)
{

case 13 : // case for press enter for next line
{row=row++;col=1; gotoxy(col,row); ch='\n';}
break;
//continue;



case 8 : // case for backspace
{
if(col==1) {row--;col=78;} else {col--; cout<<" "; i--;}
gotoxy(col,row);
}
continue;
//break;


case 9 : // case for tab function
{
col=col+8; if(col>79) {row++;col=col-79;}
gotoxy(col,row);
}
continue;
//break;

case 72 : //upper arrow key
row--;
gotoxy(col,row);
continue;
//break;



case 77 : //right arrow key
col++;
gotoxy(col,row);
continue;
//break;


case 75 : //left arrow key
col--;
gotoxy(col,row);
continue;
//break;


case 80 : //down arrow key
row++;
gotoxy(col,row);
continue;
//break;

}




cout<<ch;
p[i]=ch;
col++; i++;

p[i]='\0';
}

system("cls");
//cout<<"enter path where you want to save the file ";
//gets(ys);
int j=0;

ofstream f1(ys,ios::out);
while(p[j]!='\0') {f1.write((char*)&p[j],sizeof(p[j])); j++;}
f1.close();


delete [] p;
exit(0);
}








void gotoxy(int x,int y)
{

COORD pos;
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);

if(INVALID_HANDLE_VALUE != hConsole)
{
pos.X=x;
pos.Y=y;

SetConsoleCursorPosition(hConsole,pos);

}
}


اشکال دیگه اینکه نمی دونم این قسمت از کد که در زیر آوردم چیکار می کنه ؟

system("cls");
cout<<"enter path where you want to save the file ";
gets(ys);
int j=0;

ofstream f1(ys,ios::out);
while(p[j]!='\0') {f1.write((char*)&p[j],sizeof(p[j])); j++;}
f1.close();

mgro5862
یک شنبه 08 دی 1387, 12:00 عصر
بازم سلام
الان که داشتم چک می کردم دیدم کلید upper arrow key که همون case 72 تو Switch هست هم درست کار نمی کنه . خواهش می کنم راهنماییم کنین

mgro5862
یک شنبه 08 دی 1387, 15:56 عصر
کسی امروز قصد کمک به من رو نداره ؟

mgro5862
چهارشنبه 11 دی 1387, 13:10 عصر
نیما جان سلام
به نظرم می رسید که اگر بروم و کاری را انجام دهم و اشکالی داشته باشم می توانم روی کمک این سایت و شما دوستان عزیز حساب کنم . شاید منم مثل بعضی از دوستانی که الان دارن توی این سایت به بغیه کمک کنن از جمله شما ، حرفه ای بشم و بتونم به دیگران کمک کنم. اما الان نیاز به کمک شما دوستان دارم. ظاهرا یکی از دوستان مطلبی رو برام گذاشته بود که دیدم شما حذفش کردید. اگه قصد کمک به من رو دارید ممنون می شم اگه الان کمکم کنید. اگر هم فکر می کنید که با سوالات تکراری خستتون کردم حداقل بهم بگید که یه راه حل دیگه ای برای حل مشکلم پیدا کنم. به هر حال شاید این انتظار زیادی بود که من داشتم .
در هر صورت من از کمک شما و دوستانتون تو این مدت خیلی چیزا یاد گرفتم و بابت این موضوع هم خیلی ممنونم.
خسته نباشید.

mgro5862
چهارشنبه 11 دی 1387, 17:01 عصر
سعید جان و دوست عزیزی که جو ابی برای من فرستادید . من نتونستم مطالبتون رو بخونم اما به هر حال از شما هم متشکرم .

Nima_NF
چهارشنبه 11 دی 1387, 20:56 عصر
تا اینجا بیشترین کاری که انجام دادید تبدیلاتی است که در پست های قبلی اشاره شده بود.
حال شما به عنوان یک دانشجو، وظیفه دارید که تغییرات لازم را بدهید و برنامه را بنویسید.

متاسفانه با توجه به اینکه سرم خیلی شلوغ هست، سایر دوستان اگر توانستند به شما راهنمایی خواهند کرد.
در مورد upper arrow key هم اگر دقیق تر با debugger برسید کنید متوجه می شوید که اشکال از متغیر col هست که تغییری نمی کند.با F10 مرحله به مرحله جلو بروید. پس برای شروع کار با debugger را یاد بگیرید:
http://www.barnamenevis.org/forum/showthread.php?t=127644

ضمنا 2 پستی که پاک شدند جواب سوال شما نبودند و به قولی Off-topic (خارج از بحث شما) بودند.

Saeed_m_Farid
چهارشنبه 11 دی 1387, 21:39 عصر
سلام دوست عزيز:

اگر هم فکر می کنید که با سوالات تکراری خستتون کردم حداقل بهم بگید که یه راه حل دیگه ای برای حل مشکلم پیدا کنم. به هر حال شاید این انتظار زیادی بود که من داشتم .
كسي همچين فكري نميكنه ولي شما حتي h. رو كه آقا نيما گفتن هم بر نداشتيد! و ضمنا اكثر اعضاء سايت (اگه با ترازوي خودم نسنجم) اكثرا شبها وقت خالي واسه مراجعه به اينجا دارن و شما نبايد انتظار داشته باشيد كه كاري كه خودتون هيچ تلاشي تو اين 3 روز روش انجام ندادين ما وقت كنيم سريع واستون جفت و جورش كنيم! از طرف ديگه سعي كنيد از اين حرفا نزنيد

با توجه به اینکه برای ارسال این کار به استادم تا 16 دی ماه فرصت ازش گرفتم
چون علاوه بر اينكه مخالف قوانين سايته يه نوع بي احترامي به بچه هاي سايت هم محسوب ميشه، يعني شما فكر ميكنين سرتون اينقدر شلوغه كه حتي وقت نكردين يك بار هم قوانين سايت رو مطالعه كنين! (باور كنين ما هم فقط همين چند ساعت شب رو وقت داريم كه اونم ...)
بگذريم : اون قسمتي كه گفتين نميدونين معنيش چيه همونيه كه تو فايل مينويسه و من گذاشتمشون تو يه تابع جدا كه ميتونين اگه نخواستين كامنتش كنيد.


//---------------------------------------------------------------------------

#include<fstream>
#include<stdio.h>
#include<conio.h>
#include<Windows.h>
#include <iostream.h>

//---------------------------------------------------------------------------

void typing();
void gotoxy(int,int);
void save2File(char *buff);
char ch = '-';

//---------------------------------------------------------------------------

int main()
{
system("cls");
typing();
getch();
return 0;
}
//---------------------------------------------------------------------------

void typing()
{
int i=0;
char *szBuffer = new char[2000];

step1 :
int row=1 ,col=1;

while(ch)
{
gotoxy(col,row);
if(col==79)
{
col=1;
row++;
}
else if (row==24)
goto step1;

int a;
ch=getch();
if(ch == 0)
ch = getch();

a=ch;

switch(a)
{
case 13 : // case for press enter for next line
{
row=row++;
col=1;
gotoxy(col,row);
ch='\n';
}break;

case 8 : // case for backspace
{
if(col==1)
{
row--;
col=78;
}else
{
col--;
cout<<" ";
i--;
}
gotoxy(col,row);
}continue;

case 9 : // case for tab function
{
col=col+8; if(col>79) {row++;col=col-79;}
gotoxy(col,row);
}continue;

case 72 : //upper arrow key
{
row--;
gotoxy(col,row);
}continue;

case 77 : //right arrow key
{
col++;
gotoxy(col,row);
}continue;

case 75 : //left arrow key
{
col--;
gotoxy(col,row);
}continue;

case 80 : //down arrow key
{
row++;
gotoxy(col,row);
}continue;

case 27: // Esc for EXIT!
{
ch = '\0';
}break;

}
cout<<ch;
szBuffer[i]=ch;
col++; i++;

szBuffer[i]='\0';
}
system("cls");
save2File(szBuffer); // if you don't want to save to file comment this Line!!!
exit(0);
}
//---------------------------------------------------------------------------

void gotoxy(int x,int y)
{
COORD pos;
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);

if(INVALID_HANDLE_VALUE != hConsole)
{
pos.X=x;
pos.Y=y;
SetConsoleCursorPosition(hConsole,pos);
}
}
//---------------------------------------------------------------------------

void save2File(char *buff)
{
cout<<"enter path where you want to save the file ";
char ys[20];
gets(ys);
int j=0;
ofstream f1(ys,ios::out);
while(buff[j]!='\0')
{
f1.write((char*)&buff[j],sizeof(buff[j]));
j++;
}
f1.close();

delete [] buff;
}
//---------------------------------------------------------------------------

mgro5862
پنج شنبه 12 دی 1387, 10:34 صبح
سلام سعید جان
حقیقت رو بخواهید من 2 روز برای ماموریت رفته بودم اهواز و به همین دلیل کاری تو این 2 روز نتونستم انجام بدم چون دسترسی به اینترنت و کامپیوتر نداشتم.
ممنون از اینکه همون وقتی هم که شبها برای استراحت باید صرفش کنید و رو برای کمک به ما قرار می دهید. شاید نتونم هیچ وقت کمکی به شما بکنم . اما قول می دم منم وقتی به شرایطی رسیدم که بتونم تو این سایت به کسی کمک کنم ، این کار رو انجام بدم . الان هم سعی کردم تو بخش Access که یه کم به شغلم مربوطه و یه مقداری هم تجربه دارم به سایر دوستان کمک کنم. به هر حال ممنون از کمکتون
الان مطلبتون رو خوندم و همه سعی ام رو می کنم که خودم تمومش کنم.

از نیمای عزیزم هم ممنونم به خاطر راهنمایی های همیشگیش.

mgro5862
شنبه 14 دی 1387, 11:46 صبح
سلام دوستان
من یه مشکل کوچولو دارم . اونم اینه که نمی دونم چرا تو این برنامه هر چی تایپ می کنم کاراکتر به کاراکتر بعد از تایپ بهم نشون نمی ده.