|
Why don't you just read the double from the file to memory and print it with printf or some other function? Then you should see if it is IEEE 754 (and I'm expecting that it is).
Don't try it, just do it!
|
|
|
|
|
hi, I try it - doesn't work well.
I am afraid that this double value is some modification of IEEE 754
Because file is dBase7 I can not read it in ODBC so
I just open this file in DBF Viewer (just see it) the double values are interpreted incorrectly (positive number bigger than zero are ok)
But for example White Town dbf tools interpret it well.
viliam
|
|
|
|
|
I want to make a small XO game (where you put XO or in my case * and - in order to win you need to have them in a line). For the insertion of a symbol in a place i figured out one way:
using namespace std;
int main() {
char matrix[3][3];
int a,b,choice,i,j;
for( i=1;i<4;i++) {
for(int j=1;j<4;j++) {
matrix[i][j]='0';
}
}
for(i=1;i<4;i++) {
cout<<endl;
for(j=1;j<4;j++) {
cout<<matrix[i][j]<<" ";
}
}
for (int k=1;k<10;k++) {
if ((k % 2) ==0) { cout<<"Choose a field for an '*' :"<<endl;
cin>>choice;
a= (choice / 3) + 1;
b= (choice % 3);
matrix[a][b]='*';
}
else {
cout<<"Choose a field for an '-' :"<<endl;
cin>>choice;
a= (choice / 3) + 1;
b= (choice % 3);
matrix[a][b]='-';
}
for( i=1;i<4;i++) {
cout<<endl;
for(j=1;j<4;j++) {
cout<<matrix[i][j]<<" ";
}
}
cout<<endl;
}
return 0;
}
When i run the program and fill the whole matric with symbols it displays an error :
Runtime check failure #2 : Stack around variable "matrix" was corrupted
Does anyone have a clue what its about>
|
|
|
|
|
Hi
I don't know much about c++, but as far as i know, array indexes in c++ are zero based.
in your code there are several lines where you try to access index 3 of your array which is problematic because it accesses the 4th item. it's not a big problem if you read.
(like here: cout<<matrix[i][j]<<" "; ).
but you're trying to write to some index higher than 3 with this: matrix[a][b]='*'; .
this is because of this line here: a= (choice / 3) + 1; if i enter 9, the result of choice / 3 will be 3 + 1 is 4 which is definitely out of the range of your array.
and i'm not even sure if entering '9' into the console will give you an integer value of 9 or the charcode of '9' which would be 57.
so there are 3 things you should keep in mind by takeing a closer look to your code
1. make sure that you don't access indexes < 0 or > 2
2. check the converting from char to int values. maybe you'll have to use a fuction for this.
3. handle wrong inputs like characters and so on..
greets
m@u
|
|
|
|
|
Hi..Me just a beginner in c++ programming.
I have come acroos a program which is as follows :
I have to prepare a file which contains the information in block format. as an example, the file will look like so:
BEGIN PANELDATA
BEGIN TITLE
Panel Method for Saras Analsis.
Run number 22.
END TITLE
END PANELDATA
this information will be stored in a file. let us call this file SampleInput.dat. our program must scan this information as blocks. we have two blocks in this example. the outermost block has name PANELDATA. this block contain one block named TITLE. title block contains information. in this case the information is stored as multiline text.
consider another example of an input file. let us call this SampleInput2.dat. It may look like so:
BEGIN PANELDATA
BEGIN TITLE
Panel Method for Saras Analsis.
Run number 22.
END TITLE
BEGIN FLIGHTPARAMETERS
3
Mach_number (d) Flight_speed (d) num_Panels (i)
0.8 1.0 2287
END FLIGHTPARAMETERS
END PANELDATA
in this case, the main block, viz., PANELDATA, has two block in it. the FLIGTHPARAMETERS block contains information. the first entry, viz., 3, tells us that there are 3 entries. the next line shows the names and type of those entries. for instance, the name of the first data is Mach_number and its type is double indicated by (d). similarly, num_Panels is the name of the third entry whose type is integer. the next line contains the numerical values. thus, the FLIGHTPARAMETERS block has more extensive structure. The application should first be able to scan through such files, figure out how many blocks are there and what are their types. if the type of a block is TITLE, then we expect multiline text. if the type of block is FLIGHTPARAMETERS, then we expect number of entries, description of entries and the entries themselves. in the same way, more blocks will be added as we go on.
So how to do the coding for this ? Me just clueless..
Pls do help me out...
|
|
|
|
|
I would go for XML and using all it's advantages to perform what you want to do...
There are plenty of examples in the MSDN or in the codeproject itself.
If you want to make it by yourself, then you can always use the serialization methods available (look for serialization in the help system you prefer). you can always make a parser, but again, XML is the way to go to store structured data in an easy way.
Hope this helps...
PS:
Writing VERY URGENT!!! won't get the desired effect here... probably you won't get much answers... after some time navigating the CodeProject you'll see that it is a great community with its own dark side... (specially avoid asking programming questions in the lounge...).
|
|
|
|
|
What is the serialization method u r talkin about ?
can u pls detail me abt it ?
|
|
|
|
|
harish2rock wrote: can u pls detail me abt it ?
Besides the fact that your query is very urgent (which nobody cares about), don't you have a full QWERTY keyboard? Why do you have to TXTSPK here?
Nobody can give you wiser advice than yourself. - Cicero
.·´¯`·->Rajesh<-·´¯`·.
Codeproject.com: Visual C++ MVP
|
|
|
|
|
What have you tried to solve the problem, besides posting your entire program requirements on the internet?
Nobody can give you wiser advice than yourself. - Cicero
.·´¯`·->Rajesh<-·´¯`·.
Codeproject.com: Visual C++ MVP
|
|
|
|
|
Guys,
I did work out on the code and finally came with this output :
#ifndef _SAMPLEINPUT1_
#define _SAMPLEINPUT1_
/**
*File: Sampleinput1.dat
*Description: This file contains the information in block format which is as
BEGIN PANELDATA
BEGIN TITLE
Panel Method for Saras Analsis.
Run number 22.
END TITLE
END PANELDATA
**/
#include<iostream>
#include<string>
#include<fstream>
using namespace std;
int main()
{
int i;
string s1;
ifstream.in("sampleinput1.dat");
if(!in)
{
cerr<<"Unable to open file";
exit(-1);
}
while(in)
{
in.getline(s1,100,'\n');
i=s1.find("BEGIN");
i=s1.find("PANELDATA");
i=s1.find("BEGIN");
i=s1.find("TITLE");
if(i!=string::npos)
{
cout<<"TITLE is a multiline text";
while(!s1.find(END"))
{
cout<<s1;
}
}
i=s1.find("END");
i=s1.find('TITLE");
if(i!=string::npos)
{
cout<<"End of TITLE Block";
}
i=s1.find(END");
i=s1.find("PANELDATA");
if(i!=string::npos)
{
cout<<"End of PANELDATA Block";
}
}
}
in.close();
return 0;
}
#endif
Can u ppl atleast now pls tell me whether it is correct and what modifications are needed for it ?
Also, given the below data in a file,
BEGIN FLIGHTPARAMETERS
3
Mach_number (d) Flight_speed (d) num_Panels (i)
0.8 1.0 2287
END FLIGHTPARAMETERS
How to identify 3 as an integer and (d) or 0.8 as double from the file to the code i have written above ??
Hopefully, u wud help me out guys..
|
|
|
|
|
Pls do help me guys..
isn't there anyone ????
|
|
|
|
|
I recently discovered that Visual Studio 2008 puts its runtime libraries in the side-by-side assemblies directory. A lot of my projects have dependencies on the runtime DLLs. According to what I've read about side-by-side, it "requires" the use of Windows Installer to deploy them. However, I've invested significant time in learning and using Inno Setup and don't really like the Windows Installer for various reasons (some personal, some professional).
I guess my question is: How does redistribution of side-by-side assemblies work (behind the scenes)?
I should point out that my projects are being imported from older versions of VS and I'm wanting to fully update them to the latest version of VS. Side-by-side is new to me.
|
|
|
|
|
I don't use innosetup, so not sure how you implement this, but it's possible to include the side-by-side assemblies in your distribution.
If you have your application in a directory c:\myapps and your exectuable "myapp.exe" is in this folder, you can put the side-by-side assemblies in that folder also.
You'll find the correct distributables for the side-by-side assemblies in the \Program Files\Microsoft Visual Studio 8\VC\redist folder - there are several subfolders there (e.g. x86, ia64, amd64 and so on). Inside the x86 folder, you'll find a folder named Microsoft.VC80.MFC and another folder called Microsoft.VC80.CRT. Copy those complete folders to your c:\myapps directory.
When done, your c:\myapps directory would contain
myapp.exe - executable you wrote
Microsoft.VC80.CRT - folder with the side-by-side C Runtime for VC80
Microsoft.VC80.MFC - folder with the side-by-side MFC 80
That should allow your app to run.
Hope that helps.
Karl - WK5M
PP-ASEL-IA (N43CS)
PGP Key: 0xDB02E193
PGP Key Fingerprint: 8F06 5A2E 2735 892B 821C 871A 0411 94EA DB02 E193
|
|
|
|
|
VC8 is Visual Studio 2005 (not what I have).
VC9 is Visual Studio 2008 (what I have). And MFC has some weird stuff involving language separated DLLs (MFC directory AND a MFCLOC directory). What do I do for those? How do I get my old VC++ 2003 projects to start using side-by-side? Right now the compiler is looking for the 7.1 version of the runtimes (msvcr71.lib), not finding it, and therefore the linker is failing. Remember, these are imported solutions and projects from VC++ 2003.
|
|
|
|
|
VS2005 also has the MFCLOC and such. I believe the same basic instructions I gave you will work with VS2008 to use the side-by-side assemblies.
If the compiler is looking for the 7.1 version, that's a completely different problem from the installation of the assemblies.
Karl - WK5M
PP-ASEL-IA (N43CS)
PGP Key: 0xDB02E193
PGP Key Fingerprint: 8F06 5A2E 2735 892B 821C 871A 0411 94EA DB02 E193
|
|
|
|
|
With VS2005 it is possible to include the file vcredist_x86.exe within your installer. Have Inno run and then delete that file at setup and the all the necessary files will installed on the users machine in the proper location. VS2008 should have the same method.
|
|
|
|
|
Is there any way to prevent CFileDialog from changing forlders ?
Or at least to always default to a given folder.
I want to use CFileDialog just to look at files in one folder and one folder only.
a) can I disable/remove the folder choices from the CFileDialog window.
b) if not can I force CFileDialog to only look in one folder ?
c) even if user changes folder, when done can I force CFileDialog next time to go back to my given folder ?
I could not find an option to disable CFileDialog browsing, so I tried to force it to always look at my folder only, like so.
CFileDialog dlg(TRUE, "pfl", name, ..., ... | OFN_NOCHANGEDIR)
SetCurrentDirectory ("My Fixed Choice");
dlg.m_ofn.lpstrInitialDir = "My Fixed Choice";
if (dlg.DoModal() == IDOK) {
}
If the user changes folders, it next time goes back to that folder and ignores the above ????
Thanks
Henri
|
|
|
|
|
Hi Henri,
I was faced with a similar question some time ago and decided to use CFileFind(er?) and put the results into a ListBox. That seemed to be the simplest approach because I only wanted to select a file from a list anyway.
Regards,
Andreas
|
|
|
|
|
There used to be a OFN_NOCHANGEDIR flag you could use, but it is no longer supported.
Check the (current) docs for the OPENFILENAME.lpstrInitialDir member and see if any of the algorithms
the system uses to set the initial directory apply to you (it varies by OS).
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
before domodal() use SetCurrentDirectory()
|
|
|
|
|
HI all.
I have some problem with some old program (ARCZV.COM) this program open *.arc file.
problem is:
<br />
system("F:\\temp\\ARCZV.COM");<br />
output is:
<br />
F:\temp\ARCZV.COM<br />
Insufficient memory<br />
but if I write this "F:\temp\ARCZV.COM" in 'cmd ' program runs,
sow I dont get whot I am doing wrong
help if can
thanks
|
|
|
|
|
Did you try with SellExecute?
|
|
|
|
|
Hello!
When writing to an USB stick, Windows caches all writes. We are therefore required to safely eject the USB stick in Windows before removing it. Unfortunately it frequently happens that users remove USB sticks without ejecting it first.
I would now like to force Windows to flush a file immediately when it's closed programmatically, i.e. I'm looking for an API function that allows such flushing. I am not looking for a way to completely disable the caching. The file is written using CreateFile/WriteFile.
Is there such an API or way to achieve flushing?
Thanks and best regards
Dominik
|
|
|
|
|
I've done that before. IIRC, you have to delve into DeviceIoControl().
|
|
|
|
|
Do you remember the control code you used?
I've only found IOCTL_STORAGE_EJECT_MEDIA and such things, but no code to only flush write buffers.
Thanks for your reply, best regards
Dominik
|
|
|
|