|
Jeeva Mary Varghese wrote: Can anyone plz tell me how to create a setup file(Project Deployment) for an application in VC++.
IN continuation with previous comment, here is the link :-
http://www.jrsoftware.org/isinfo.php[^]
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
|
|
|
|
|
you can use Visual Studio Installer for creating setup in vc++. this tool is available in visual studio tools.
|
|
|
|
|
Thanks for U'r Reply
Regards
Jeeva
|
|
|
|
|
I want to use eidt box to transmiss a file's name and path to a CFile object.
How to do it? Not use CFileDialog class. I have a problem about this. The debug tell me the type is not right. I'm a new ,so do not laugh me!
|
|
|
|
|
Take a look at this overload of the CFile constructor:
<br />
CFile(LPCTSTR lpszFileName, UINT nOpenFlags);<br />
lpszFileName is the full path to the File.
nOpenFlags contains the flags for opening the File. See the declaration of CFile for the
possible values.
|
|
|
|
|
Nobody in this forum laughs on anyone (one is not born wise )
else he is punished by the webmaster
This example might help u go through it
<br />
CFile f;<br />
CFileException e;<br />
char* pFileName = "test.dat";<br />
if( !f.Open( pFileName, CFile::modeCreate | CFile::modeWrite, &e ) )<br />
{<br />
#ifdef _DEBUG<br />
afxDump << "File could not be opened " << e.m_cause << "\n";<br />
#endif<br />
}<br />
<br />
<br />
#include <afx.h><br />
#include <afxwin.h><br />
#include <iostream><br />
<br />
using namespace std;<br />
<br />
CWinApp theApp;<br />
<br />
int main(int argc, char *argv[])<br />
{<br />
if (!AfxWinInit(GetModuleHandle(NULL), NULL, GetCommandLine(), 0))<br />
{<br />
cout << "panic: MFC couldn't initialize!" << endl;<br />
return 1;<br />
}<br />
<br />
<br />
CFile sourceFile;<br />
CFile destFile;<br />
<br />
<br />
if (argc != 3)<br />
{<br />
cout << "usage: " << argv[0];<br />
cout << " <source> <dest>" << endl;<br />
cout << endl;<br />
return 1;<br />
}<br />
<br />
<br />
CFileException ex;<br />
<br />
<br />
if (!sourceFile.Open(argv[1],<br />
CFile::modeRead | CFile::shareDenyWrite, &ex))<br />
{<br />
<br />
TCHAR szError[1024];<br />
ex.GetErrorMessage(szError, 1024);<br />
cout << "Couldn't open source file: ";<br />
cout << szError;<br />
return 1;<br />
}<br />
else<br />
{<br />
if (!destFile.Open(argv[2], CFile::modeWrite |<br />
CFile::shareExclusive | CFile::modeCreate, &ex))<br />
{<br />
TCHAR szError[1024];<br />
ex.GetErrorMessage(szError, 1024);<br />
cout << "Couldn't open source file: ";<br />
cout << szError;<br />
<br />
sourceFile.Close();<br />
return 1;<br />
}<br />
<br />
BYTE buffer[4096];<br />
DWORD dwRead;<br />
<br />
<br />
do<br />
{<br />
dwRead = sourceFile.Read(buffer, 4096);<br />
destFile.Write(buffer, dwRead);<br />
}<br />
while (dwRead > 0);<br />
<br />
<br />
destFile.Close();<br />
sourceFile.Close();<br />
}<br />
<br />
return 0;<br />
}<br />
Vikas Amin
Embin Technology
Bombay
vikas.amin@embin.com
|
|
|
|
|
I'm writing a C++ application that needs to compare two text files for differences (addition/changes/deletion of an line), so some source code for comparing is required that is fast (and accurate) as some files maybe more than 5MB in size, but usually will be several hundred KB.
The output could be either to another text file or a List Control.
Any recommendations as to what to use, or any examples available would be most appreciated.
|
|
|
|
|
Why don't you take a look at WinDiff?
Alternatively you could consturct 2 CStdioFile obejcts, ReadLine() 'em and store the values in CStringArray's. Those in memory representations can be read faster than the actual files.
Actually it reminds me of a similar task I had to do when I learend programming, so feel free to ask me any questions
|
|
|
|
|
To compare files as big as 5MB is crucial task ,
putting the data in memory & comparing will be
fast.
:->
can suggest one tip , keep a log of the file
last modified and check for the size and time
of modification . If there is not change in
size , then u dont need to compare the data of file.
Vikas Amin
Embin Technology
Bombay
vikas.amin@embin.com
|
|
|
|
|
You can find WinDiff sources, or have a look at WinMerge.sf.net. Comparison itself could be a hardest part, since there are plenty of algorithms. You can search for MYERS's Difference Algorithm.
Igor Green
http://www.grigsoft.com/
Compare It! + Synchronize It! - files and folders comparison never was easier!
Igor Green
http://www.grigsoft.com/ - files and folders comparison tools
|
|
|
|
|
P Gibson wrote: Any recommendations as to what to use, or any examples available would be most appreciated.
Go to the top of this page and type 'diff' into the Search field.
|
|
|
|
|
P Gibson wrote: so some source code for comparing is required that is fast (and accurate) as some files maybe more than 5MB in size, but usually will be several hundred KB.
What about using Memory Mapped Files, Link :-
http://www.codeproject.com/win32/cmemmap.asp[^]
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
|
|
|
|
|
How can i create an edit box that takes as keyboard input numbers(integer, float, double) and + and - signs only?
When i check marked the Numbers in the Edit Box properties only +ve integers could be entered.
|
|
|
|
|
nripun wrote: When i check marked the Numbers in the Edit Box properties only +ve integers could be entered.
Subclass the Edit Box, here is link concerning with it :-
http://www.codeproject.com/editctrl/validatingedit.asp[^]
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
|
|
|
|
|
Hi,
I created template class just like:
template < typename T > class DataList
{
AddNode(const T val) // Input data must be read only
{
// some codes
}
// some more functions
};
In main():
LPCSTR str = "Hello"; // Const char string
DataList<char*> data; // Data list for char strings
data.AddNode(str); // Add the string
When compiling I get the error as...
error C2664: 'AddNode' : cannot convert parameter 1 from 'const char *' to 'char *const '
What could be wrong?
Thank you.
<B>- NS -</B>
|
|
|
|
|
What do u actully want to do with
this type of declaration.
Can u tell me reason so that i can
help u to find some solution .
Vikas Amin
Embin Technology
Bombay
vikas.amin@embin.com
|
|
|
|
|
I am creating a general purpose linked list class.
It is basically used for numbers. In that case no problem.
I intended to use it for strings also. In that case the AddNode function is supposed to accept 'const char*' as input. In the template class I wrote some virtual functions that can be used for allocating memory for the strings, in the derived classe.
For example, in AddNode I will call a function like
virtual void SetVal(...);
In the base class, this function just copies the input value to the node value. But in the derived class, it will allocate memory needed for storing the input string to node value and copy the string using strcpy(...).
I think, you got what I want to do. I won doing this by excluding the const input string. But it is recommented that pass input strings as read only.
- NS -
|
|
|
|
|
<br />
template < typename T > class DataList<br />
{<br />
public:<br />
AddNode(const T val)
{<br />
}<br />
};<br />
<br />
<br />
IN Main function <br />
<br />
LPCSTR str = "Hello";
DataList< char *> data;
data.AddNode((char*)str);
the above code satisfies your demand , i just type casted the LPCSTR to char *
and to access the AddNode declared it with Public scope .
If u want to check just try changing the { val="v";} u will see an compiler
error for constant.
//////////////////////////////////////////////////////////////////////
Vikas Amin
Embin Technology
Bombay
vikas.amin@embin.com
|
|
|
|
|
I'm sorry, it will make every call to this function need a typecast, which is not acceptable...
Further more the input data is not sefe.
You wrote:
val="v";
In this, the pointer, val is become a const, that's why we cannot assign another pointer("v") to it. But we can change the contents, for example *val = 'a' or strcpy(val,"hi") is possible.
- NS -
|
|
|
|
|
template < typename T > class DataList<br />
{<br />
public:<br />
AddNode(const T val)
{<br />
*val='a';<br />
}<br />
};<br />
<br />
<br />
In Main function <br />
<br />
LPCSTR str = "Hello";
DataList<const char *> data;
data.AddNode(str); <br />
Now in this code there is not type casting and also
the *val='a' ; condtion is satisfied .
Vikas Amin
Embin Technology
Bombay
vikas.amin@embin.com
|
|
|
|
|
I'm afraid that you forgot my problem. Actually our discussion reached exactly at where we start from.
Could you please read it agian?
- NS -
|
|
|
|
|
replace LPCSTR with LPSTR.
you instantiate a DataList specialization on char* parameter, but you send incorrect parameter type to AddNode().
AddNode expect constant instance of type T (therefore, constant pointer to char, or char* const),
but you send a pointer to constant char (const char*).
although the syntax looks similar, semantics is quite different. please look it up in language reference.
hope this helps
-- modified at 6:06 Tuesday 20th December, 2005
of course, be aware that literal strings can't really be modified because they are placed in protected part of memory (executable image), so if you write
LPSTR str = "Hello";
str[1] = 'a';
you will get an access violation.
-- modified at 6:15 Tuesday 20th December, 2005
|
|
|
|
|
I think its because you are declaring:
DataList<char*> data;
And then using LPCSTR with it.
A char* is a pointer to a list of characters, terminated by NULL, while LPCSTR 's declaration is:
typedef CONST CHAR *LPCSTR, *PCSTR;
I think changing DataList<char*> data; to DataList<LPCSTR> data; etc should solve the problem.
this is this.
|
|
|
|
|
Hi to all,
I am having more than 20 dlls for my application. if i want to store those dlls in one folder and use them while running the application what i have to do?
For example all header files if I copy in one folder and giving this folder name in include folders of Tools->Options then it works fine. Is there any method like this for Dlls. Please help me.
Thanks in advance.
|
|
|
|
|
ActiveX Controls Test Container saves file as .tcs. If Activex Control is placed anywhere in container and save it and next time if we open that .tcs file activex controls are placed on same locations as it was at the time of saving in .tcs file. I want to implement this functionality (drag & Drop of activex controls in application)in my project. so how should i do this or if any other solution is there for this problem or if anybody could give me file format of this .tcs file of ActiveX Controls Test Container.
|
|
|
|