|
Owner drawn wrote: Why are you commenting about that here
Didn't you read my side bar? I am asleep, I just looked at the window and realised that the sun is coming up. Besides, I thought I was asking a question and not commenting on anything (my mistake).
After all your answer to the original question was not and answer. But on the other hand, the question was not realy a question.
INTP
Every thing is relative...
|
|
|
|
|
|
dokhtarakekebritfroosh wrote: i don't know about fractal
See here.
"The greatest good you can do for another is not just to share your riches but to reveal to him his own." - Benjamin Disraeli
|
|
|
|
|
Hi guys, Iam very frustrated at this stage & I want help.
Iam working on a project its in MFC (Visual Studio 2005), the backend is MSDE.I have a table called Files the design is as follows
Files(FileID int,FileData text,..);
Iam supposed to accept the file name from user & store the file details into the DB. The problem is that how to store the file data into DB.
can any one tell me whether the FileData field should be text,ntext or image.
Also how to read data back from DB.
please send me ur suggestions & codes at
patel.shoaib@gmail.com
Thanks.
|
|
|
|
|
Hi! iam working on an mfc sdi project in which , i hav to read ini file and to change it into its corresponding xml file.
I am doing it with the help of
GetPrivateProfileSectionNAmes and
GetPrivateProfileSection functions.
My sample ini file is:
[SECTION1]
KEY1=500
KEY2=VALUE
[SECTION2]
key3=500
key4=100
[SECTION3]
key5=xyz
My code is like dis:
void CNewIni2XmlDlg::OnBConvert()
{
// TODO: Add your control notification handlcode here
FILE *fpr,*fpw;
CHAR buffer[50];
DWORD nSize=50;
LPTSTR lpszReturnBuffer;
CHAR buff[50];
fpr = fopen("C:\\users\\SG\\SWATI.INI","r");
fpw = fopen("C:\\users\\SG\\Ss.txt","w");
lpszReturnBuffer = buff;
fprintf(fpw,"");
GetPrivateProfileSectionNames(buffer,nSize,"C:\\users\\SG\\SWATI.INI");
fprintf(fpw,"\n<%s>",buffer);
fflush(fpw);
GetPrivateProfileSection(buffer,buff,nSize,"C:\\users\\SG\\SWATI.INI");
fprintf(fpw,"\n%s",buff);
fclose(fpr);
fclose(fpw);
AfxMessageBox("ok");
}
Now, the problem is , this method is returning only the SECTION1 and KEY1=500.
##How to get names of all the remaining sections??
##What should , I do to get all the key value pairs for any section??
Thanx a lot for ur kind support.
"If you change then change for the good."
|
|
|
|
|
I suggest to check the buffer again after this statement.
GetPrivateProfileSectionNames(buffer,nSize,"C:\\users\\SG\\SWATI.INI");
fprintf(fpw,"\n<%s>",buffer);
you might be getting all the names but problem is in the fprintf statemet. fprintf will end at the first occurance of a null charachetr.
but GetPrivateProfileSectionNames fill the buffers with section names separated with null characters and the last one with two null characters.
|
|
|
|
|
Hello Anil!
But, I need more help. Could u Plz tell me how should i write in the file, if with fprintf, it is not possible. I am new to VC++.
Thanx a lot
"If you change then change for the good."
|
|
|
|
|
don't know XML at all.
tell me in which format do you want?
I changed your program as I guess your requirment.
FILE *fpr,*fpw;
CHAR buffer[50];
DWORD nSize=50;
LPTSTR lpszReturnBuffer;
CHAR buff[50];
fpr = fopen("C:\\SWATI.INI","r");
fpw = fopen("C:\\Ss.txt","w");
lpszReturnBuffer = buff;
fprintf(fpw,"");
memset(buffer, 0x00, 50);
GetPrivateProfileSectionNames(buffer,nSize,"C:\\SWATI.INI");
char* pBuffer = buffer;
int nWrite = 0;
while(strlen(pBuffer) > 0){
nWrite = fprintf(fpw,"\n<%s>",pBuffer);
memset(buff, 0x00, 50);
GetPrivateProfileSection(pBuffer,buff,nSize,"C:\\SWATI.INI");
char* pBuff = buff;
int nWrt = 0;
while(strlen(pBuff) > 0){
nWrt = fprintf(fpw,"\n%s",pBuff);
pBuff = pBuff + nWrt;
}
pBuffer = pBuffer + nWrite - 2;
fflush(fpw);
}
fclose(fpr);
fclose(fpw);
AfxMessageBox("ok");
|
|
|
|
|
Hello Anil!! I m providing u here with a sample ini file and its converted form in XML.
For Ini File:
[SECTION1]
KEY1=500
KEY2=VALUE
[SECTION2]
KEY3=500
KEY4=100
[SECTION3]
KEY5=XYZ
This is the XML format:
<section1>
<key1>500
<key2>VALUE
<section2>
<key3>500
<key4>100
<section3>
<key5>xyz
Thanx a lot for ur so kind support.Bye
"If you change then change for the good."
|
|
|
|
|
Try to understand the above code.
There are lots of way to do. May be you are new to VC thats why getting problem.
the format you posted is not right as <> are not displayed.
Change the above code, if not able to do then ask again.
|
|
|
|
|
Hi!!
The above code is also not working.
Wat to do now?
Thanx
"If you change then change for the good."
|
|
|
|
|
mail me the output format
if you post it then click the ignore HTML tags and then post.
or modify your previous post with HTML tag ignored.
|
|
|
|
|
Hi!!
For INI file:
[SECTION1]
KEY1=500
KEY2=VALUE
[SECTION2]
KEY3=500
KEY4=100
[SECTION3]
KEY5=xyz
The corresponding XML file would be:
<SECTION1>
<KEY1>500</KEY2>
<KEY2>VALUE</KEY2>
</SECTION1>
<SECTION2>
<KEY3>500</KEY3>
<KEY4>100</KEY4>
</SECTION1>
<SECTION3>
<KEY5>xyz</KEY5>
</SECTION3>
"If you change then change for the good."
|
|
|
|
|
Try this one...
{
FILE *fpr,*fpw;
CHAR buffer[50];
DWORD nSize=50;
LPTSTR lpszReturnBuffer;
CHAR buff[50];
fpr = fopen("C:\\SWATI.INI","r");
fpw = fopen("C:\\Ss.txt","w");
lpszReturnBuffer = buff;
fprintf(fpw,"");
memset(buffer, 0x00, 50);
GetPrivateProfileSectionNames(buffer,nSize,"C:\\SWATI.INI");
char* pBuffer = buffer;
int nWrite = 0;
while(strlen(pBuffer) > 0){ // For all Section Name
nWrite = fprintf(fpw,"\n<%s>",pBuffer); // Print the SectionName < SECTION >
memset(buff, 0x00, 50);
GetPrivateProfileSection(pBuffer,buff,nSize,"C:\\SWATI.INI");
char* pBuff = buff;
int nWrt = 0;
while(strlen(pBuff) > 0){ // For all KEY=VALUE
CString strToken;
strToken = pBuff; // The the KEY with Value "KEY=VALUE"
// Find the = character inside the string
INT nPosEql = strToken.Find('=');
if(nPosEql == -1){
break;
}
CString strKey = strToken.Left(nPosEql); // Get the Key
CString strVal = strToken.Mid(nPosEql + 1); // Get the value
fprintf(fpw, "\t\n<%s>", strKey); // Print <KEY>
fprintf(fpw, "%s", strVal); // Print VALUE
fprintf(fpw, "</%s>", strKey); // Print </KEY>
pBuff = pBuff + strlen(pBuff) + 1; // Move to next key
}
fprintf(fpw,"\n</%s>",pBuffer); // Print the </SECTION>
pBuffer = pBuffer + strlen(pBuffer) + 1; //Move to next section
}
fclose(fpr);
fclose(fpw);
}
|
|
|
|
|
Hi!!!!!!!!!!!!
Yes, it`s working.
Thanx a lot for ur kind support.
"If you change then change for the good."
|
|
|
|
|
I have to create a console text menu that is written from values from an INI file.
The menu entry would be something like:
1) Pencil
2) Pen
3) Typwriter
Select choice -->
The INI file has
[Writing Tools]
1 = Pencil
2 = Pen
3 = Typewriter
Can you modify the example to create a buffer (or array of struct) that uses this? I don't need values written to an output file.
Thanks
Jer 29:11
|
|
|
|
|
The output buffer from GetPrivateProfileSectionNames is filled with all the section names and are seperated by a null character. The last section name is followed by two null characters. Similarly output buffer in GetPrivateProfileSection is also filled with all the key name, value pairs seperated by null character.
So modify your program accordingly...
"A robust program is resistant to errors -- it either works correctly, or it does not work at all; whereas a fault tolerant program must actually recover from errors."
XMinds
|
|
|
|
|
HI!!
Could u plz tell me how to modify the program , to print all the section names.
Thanx
"If you change then change for the good."
|
|
|
|
|
Checkout this URL.
http://www.codeguru.com/Cpp/data/data-misc/inifiles/article.php/c4577/
"A robust program is resistant to errors -- it either works correctly, or it does not work at all; whereas a fault tolerant program must actually recover from errors."
XMinds
|
|
|
|
|
Using INI files is one of the simpilist things in the world. If you read the documentation, you'll note that the names returned by GetPrivateProfileSectionNames() are each null terminated, that means when you pass it to GetPrivateProfileSection(), it only sees the first one in the list. You need to take into account the return value of GetPrivateProfileSectionNames(), which is the number of characters retreived, and parse it to get each section name.
Example of what GetPrivateProfileSectionNames() should return: "SECTION1\0SECTION2\0SECTION3\0\0".
The same applies to what is returned by GetPrivateProfileSection(). In your case the buffer should actualy contain something like: "KEY1=500\0KEY2=VALUE\0\0". This is anouther case where you need to pay attention to the return value, and manualy parse buffer.
Some Notes:
1) There are other functions that read the specific values given the section and key names, they are easier to use. This assumes that your program already knows the section names and the key names.
2) After the first call the .INI is loaded into memory, so there is almost no overhead associated with reading the file on subsiquent calls. Because it is already loaded into memory space.
3) Your code is written in 'C' not 'C++', so you should provide a define statement ("#define") that specifies the maximum size of the buffer. That way you can change it by simply changing the value defined. In this case you do have a second option, if you dinamicaly allocate the buffer and the value return is rediculously high, then the value returned is actualy the negitive size of the required buffer. The only reason that it is rediculoulsy high, is that both functions return a DWORD, which is unsigned. If you take that value and convert it to a long and subtract it from 0, then you should have the required number of bytes needed to hold all the data, at which point you can reallocate the buffer and recall the function.
What all the above amounts to, is that you need to read and understand the documentation, before you use the functions. It also means that I have never had a reason to use those two particular functions, because of note 1.
I hope you understand what I said, because it is very important that you understand what I consider the fundamentals of programming. After a while you'll be seeing these things in your sleep.
Good Luck,
John R. Shaw
INTP
Every thing is relative...
|
|
|
|
|
Hello -
I think my problem stems from converting a project from an earlier version (6.0?) to MS Visual C++ 7.1. Everything compiles and links (with warnings 4075 and 4098 [conflicting lib]) just fine. These errors didn't occur in 6.0 though.
The program runs fine until the end where Windows encounters an error. The debugger says a user breakpoint was called from the code. Additionally, a thread has exited with a code 0. It also says that the variable 'temp' is being used without being defined.
I hope this wasn't too vague. Thanks in advance for any help!
Chris
|
|
|
|
|
I am not sure what is going on, but both of these appear to be warnings, if they where not then they would be much higher values, or much lower in decimal (negative). That is the Most Significant Bit (MSB) would be set. If I am correct and slapping a 'C' in front of the number gives the actual messages you are seeing, then C4098 (Level 1) progably just copies the return value to a register, which is simple to fix. I am suprised that 'C++' did not report that as an error. The other warning, and it is a warning, C4075 (Level 1) has to do with the order in which global objects are created. That one worries me a little, but there is a good chance that the initializations are occuring in an order that that will do no harm.
As for the value 'temp', that depends on how it is being used. If it is not in your code then you can probably ingnore it.
If the thread is exiting with code 0, then that means nothing went wrong while executing that thread. That does not mean that some thing could not go wrong.
The fact that the code from Microsoft stopped at a user defined break point does not mean there is an error in your code.
What you need to do is test the code compiled in realise mode. That is more difficult, but we do not get warnings when running in realise mode, only errors (if we are lucky).
The first version a Bounds Checker I bought, allowed me to reject an out sourced program repeatedly until they gave me the source code. It took me five minutes to figure out why Bounds Checker was objecting to the program. My manager did not believe me util I said "if I was to do this, the program would crash". He said "Ok do it", when I did the whole system crashed.
What you are seeing are warnings, that does not mean you can ignore them. What it means is that you should understand them, at least well enough to realise if they are actualy a problem or not.
Blast, I did it again! I tend to get carried away with my explinations. I do not know if any of the above helped you, but I hoped it did.
Good Luck,
INTP
Every thing is relative...
|
|
|
|
|
Hey thanks. I'll try that realise mode.
|
|
|
|
|
Hi All,
I am implementing Drag n Drop between My Namespace extension and Windows folders.The data in "My Namespace extension" does not exist on the user's machine. When the user drags a file from "My Namespace extension" and drops it on a windows folder, I am downloading that file to a specific directory on the users machine and from there putting it in the DataObject.
But the whole thing is not working. I am getting the following error message.
"Cannot Copy file: cannot read from source file or disk"
Can someone tell me what could be going wrong here?
Thanks and Regards,
Anil
|
|
|
|
|
It would depend on from where you are trying to download the data?
just a wild guess, are you trying to put a namespace extention interface for a symbian phone ?
|
|
|
|
|