|
mpapeo wrote:
what is the loop for in the above code
For dimenstartion puposes only! It should produce a file containing the following:
"this is test string number 0this is test string number 1this is test string number 2this is test string number 3this is test string number 4this is test string number 5this is test string number 6this is test string number 7this is test string number 8this is test string number 9"
Note: All variables must be declared at the start of the scope in C programs.
You can not do things like for(int i=0;i<10;++i).
int DoFileOutTest1()
{
int i;
char buffer[64];
FILE *file = fopen("test.txt","w");
if( !file )
return 0;
for(i = 0 ; i < 10 ; ++i) {
sprintf(buffer,"this is test string number %d\n",i);
fputs(buffer,file);
}
fclose(file);
return 1;
}
int DoFileOutTest2()
{
int i;
FILE *file = fopen("test.txt","w");
if( file )
return 0;
for(i = 0 ; i < 10 ; ++i) {
fprintf(file,,"this is test string number %d\n",i);
}
fclose(file);
return 1;
}
INTP
"The more help VB provides VB programmers, the more miserable your life as a C++ programmer becomes."
Andrew W. Troelsen
|
|
|
|
|
<br />
FILE *file = fopen("test.txt","w");
<br />
E:\process.c(147) : error C2275: 'FILE' : illegal use of this type as an expression<br />
<br />
once i declared the FILE i get errors
oam
|
|
|
|
|
You need to find a book or sight on C programming.
Here:
1) Create and empty console project.
2) Create a new new file named simple.c.
3) Copy the following into simple.c.
#include "stdio.h"
int main(int argc, char* argv[])
{
FILE* fp = fopen("test.txt","wt");
if( fp )
{
int i;
for( i=0; i<10; ++i )
fprintf(fp,"Line %d\n",i);
fclose(fp);
}
return 0;
}
4) Press F5.
5) Open the file test.txt in you editor to see results.
That is all!
INTP
"The more help VB provides VB programmers, the more miserable your life as a C++ programmer becomes."
Andrew W. Troelsen
|
|
|
|
|
Well the thing worked and thanks. But now i want to specify the name of the input file on the commandline.
oam
|
|
|
|
|
Hi,
I have to Classes: CMyFirstClass, CMySecondClass. Now i need to get acces to a variable defined in CMySecondClass from CMyFirstClass, but CMyFirstClass also has a variable which i need to access from CMySecondClass. How to do ? Please Help
MFG
RedDragon2k
|
|
|
|
|
Declare each variable to be public .
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
Both variables are public. I believe i was to unprecise. The Problem are the #include directives. if i include MyFirstClass.h at CMySecondClass and include MySecondClass.h at CMyFirstClass. I get compiler errors
MFG
RedDragon2k
|
|
|
|
|
what are the errors you get?
|
|
|
|
|
|
RedDragon2k wrote:
I get compiler errors
Sounds like a case of circular dependency.
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
|
|
|
|
|
Yes, it is a common problem. The compiler, in order to construct an object, needs to know the size of each objects inside. So, if one class include another class that includes the first one, the compiler will never know how to construct the objects.
The solution to that is to use pointers to objects. In CMyFirstClass:
class CMyFirstClass<br />
{<br />
CMySecondClass* pPointer;<br />
You then just need to specify the compiler that the class exists and will be 'defined' latter by adding
class CMySecondClass;
above the the declaration of your first class.
Don't forget to include MySecondClass.h in the cpp file (MyFirstClass.cpp)
|
|
|
|
|
Ravi Bhavnani wrote:
Declare each variable to be public.
No hurries, no worries.
|
|
|
|
|
V. wrote:
Ravi Bhavnani wrote:
Declare each variable to be public.
Could you Please state , Whats the problem in code before using such icon in front of great personality like Mr Ravi Bhavnani.
[Vote One Here, Complete my Survey....]
Alok Gupta visit me at http://www.thisisalok.tk
"I Think Believe this Will Help"
|
|
|
|
|
The "problem" is that public variables are usually frowned upon. A cleaner approach is to make the member variables private and provide public set/get methods.
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
|
|
|
|
|
|
It is one of the basic fundamentals of OOP - access control.
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
|
|
|
|
|
Like David Crow states:
incapsulation is one of the pilers of O-O programming.
declaring variables public is generally a bad idea.
No hurries, no worries.
|
|
|
|
|
Friend!
But here problem is about two classes accessing each other variable.
for that Why can't we use pointer approach which i have stated above.
I am Sorry,if you angry with my above quote.I am just asking you to respect a decent man who help every body here!!!..
[Vote One Here, Complete my Survey....]
Alok Gupta visit me at http://www.thisisalok.tk
"I Think Believe this Will Help"
|
|
|
|
|
ThatsAlok wrote:
if you angry with my above quote
Angry? it will take a lot more to get me angry, it was only an expression of surprise. (besides if I'm angry you'll see this icon: )
respect for trying to help, always, but in my opinion this time you made a mistake (like everybody does btw), I only pointed that out.
ThatsAlok wrote:
But here problem is about two classes accessing each other variable
getters, setters, properties. Why? Suppose your variable changes value unexpectedly, where start looking? When using a setter for example. You only have to set your breakpoint there, wait for the change and follow the stack trace.
so do something like this as good practice:
class something{<br />
private int number = 0;<br />
<br />
public SetNumber(int num){<br />
number = num;<br />
}<br />
public GetNumber(){<br />
return number<br />
}<br />
}
in C# getters and setters are equal to properties.
Please don't be agitaded so quickly, nobody's attacking you.
No hurries, no worries.
|
|
|
|
|
|
Hi,
I have problems to refresh my application when it is recovered by another window. In fact, I display images, (.ppm format), in CStatic controls, and everything is refreshed, except the images. I display the images in the OnPaint() function, so that is OK when I move the window on the edges of the screen. But when the window is hidden and then sets visible, the images disappear...I have tried to add UpdateWindow, UpdateData, Invalidate, etc... in OnPaint()... but it failed.
Can someone help me please?
Thanks
Isabelle
|
|
|
|
|
Perhaps you're overriding OnShowWindow() , causing the default behavior (that would eventually cause OnPaint() to be called) to not occur? Try overriding OnShowWindow() in the following manner:
CMyDialog::OnShowWindow (BOOL bShow, UINT nStatus)
{
CWnd::OnShowWindow (bShow, nStatus);
Invalidate();
UpdateWindow();
}
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
Thanks for your answer Ravi!
In fact I had already tried that, unsuccesfully...
I don't know exactly when this function is called, but I thought it is only when the application is opened for the first time... no??
Thanks again
Isabelle
|
|
|
|
|
pl-isa wrote:
but I thought it is only when the application is opened for the first time... no??
Actually, WM_SHOWWINDOW is sent whenever the window is shown, hidden, minimized, maximized or restored, not only at startup. But you're right - what I should have said is, add these lines to your OnPaint() handler:
CMyDialog::OnPaint (...)
{
m_myPicStaticCtrl.Invalidate();
m_myPicStaticCtrl.UpdateWindow();
}
This should force an immediate repaint of the static control. If this doesn't work, I'd put TRACE() statements in your static control's OnPaint() handler to see if it's doing anything funky. It might be getting called, but not painting after the first invocation.
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
Hi,
Did you tried the RedrawWindow() of your CStatic control in your OnPaint()?
Regards,
Eli
|
|
|
|