How to increase portability of 7z.exe [closed] - c++

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 8 years ago.
Improve this question
I am working on a program that needs to unzip .zip files. After trying several different methods to do this, the only one I could find that worked for all my needs is 7z.exe. It works great as I'm developing since I can just hardcode the location of the executable into the code. However, if anyone else tries to use it, that part won't work. Is there any way to allow them to access this? Thanks!

I suggest you use a compression library (have a look at libarchive: http://www.libarchive.org). If you can't do that, you should ship 7z.exe and its dependencies with your application, putting them in a fixed relative location to your main executable.
Then you get your main executable absolute path using GetModuleFileName, strip and combine with the relative path using PathCchCombine:
char filename[MAX_PATH];
GetModuleFileName(NULL,filename,(sizeof(filename))/(sizeof char));
PathCchRemoveFileSpec(filename,(sizeof(filename))/(sizeof char));
PathCchCombine(filename,(sizeof(filename))/(sizeof char),filename,"./7zip/7zip.exe");
//the absolute path of 7z.exe is now in filename
Documentation for GetModuleFileName:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms683197(v=vs.85).aspx
PathCchRemoveFileSpec:
http://msdn.microsoft.com/en-us/library/hh707092(v=vs.85).aspx
and for PathCchCombine:
http://msdn.microsoft.com/en-us/library/hh707085(v=vs.85).aspx

Related

How to create an avi file from scratch? [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 4 years ago.
Improve this question
My task is to create an avi file by saving n number of frames in c++ .
There are many inbuilt function which can be used to create .avi file as given in below link .
https://learn.microsoft.com/en-us/windows/desktop/multimedia/avifile-reference
Using them we can create our own avifile , one such example.is
http://www.wischik.com/lu/programmer/avi_utils.html
But i want to create it without using Windows.h and vfw.h as they are very extensive.
So i need to make my own function of avifilewrite , appendframes etc
But i can't find any reference link on internet .
Can anyone please explain how can i build avifile without using Windows.h and vfw.h .
Thank you ,
How to create an ... file ...?
You can use the standard file stream API to create a file. To write a binary file, you'll need to use an unformatted output function such as std::ofstream::write().
... an avi file from scratch?
The AVI format is specified by Microsoft: https://learn.microsoft.com/en-us/windows/desktop/directshow/avi-riff-file-reference
However, you can save a lot of effort by using an existing API.

Statistica VB - Including an external macro [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 4 years ago.
Improve this question
I'm using Statistica 64 VB. I wrote a function "Public MyFunction()" in FileLibrary.svb (a collection of useful functions) that I want to be called by a function in FileDoStuff.svb (an analysis).
I tried to include FileLibrary.svb like this in FileDoStuff.svb:
'#Language "WWB-COM"
'#Uses "U:\TestSVB\FileLibrary.svb"
This is the result when I run Main() in FileDoStuff, and the result is the same even if I have FileLibrary open in the application.
"Script error in FileDoStuff.svb
Macro/module does not exist."
Statistica is on the E: drive. However, FileLibrary opens a spreadsheet on U: and has no problem with it. I am able to open FileLibrary from Statistica and test it.
Why would it work to open an external spreadsheet but not call an external macro? The FileLibrary is not saved within Statistica, but neither is the analysis in FileDoStuff. What am I doing wrong?
Also, what's the difference between an SVB and an SVX file?
You know what really helps, as I discovered after hours of trying everything?
Try spelling the entire path name and the entire file name correctly, including spaces, etc. And make sure the slashes go the right way, too. (In my real path/file there are spaces.)
As much as I'd like to delete this whole question, I'm leaving it here to remind us all that sometimes the answer is just that simple. Also, I want to draw more people out who are using Statistica VB because I know there will be more questions.

Open up text file in Notepad after it was just made [closed]

Closed. This question needs debugging details. It is not currently accepting answers.
Edit the question to include desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem. This will help others answer the question.
Closed 7 years ago.
Improve this question
I have a little program that I made which allows me to take in some text and sort it and make it look the way I want it to. One of my functions to save the new text file allows the user to input the name of the file using C++.
What I want to do is at the end of the program, I want it to open notepad displaying that new text file. I know you use " system("notepad.exe (txt file)")." But I can't add a string variable in place of the txt file. It requires the name of the text file, but the file name could be anything depending on the user.
Any help or a link to where I can read about it would be great!
Thanks
Assemble the command in a std::string and then use its c_str function to pass to system.

Reading, Searching, and Writing to XML using C++ [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 8 years ago.
Improve this question
I am being tasked to essentially write a potentially enormous function in C++ that deals with searching and writing to an XML file.
Is there a way in C++ to search through an XML file, either as an xml file or just raw text, take in a path and write a record at the end of that path. For example:
<File>
<Record>
<Name>Joe</Name>
<Age>52</Age>
</Record>
</File>
The function would search for the end of the latest record, then insert a line for a new Record, then next go through the loop, it finds the new record tag, inserts the name, then next time it inserts the age, then it closes the Record tag.
Any ideas or sources that could be helpful for this level of manipulation? Tips on how it should go?
To those calling this a duplicate, allow me to add that I cannot use a 3rd party DLL. I have to code everything on my own.
Use boost::property_tree it can handle XML and is quite nice in my opinion.
http://www.boost.org/doc/libs/1_41_0/doc/html/boost_propertytree/tutorial.html should give you a hint. I've written a small project using it and it was useful. There are other parsers like tinyXML which is also quite good.

How do you create headers for c++ within the sublime text 2 interface? [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 9 years ago.
Improve this question
I'm using Sublime text 2 to create a c++ program, but i do not know how to create and implement a new header in the interface.
Could someone help me out with this?
Well, for starters, it is important to realize that Sublime Text 2 is a text editor, not an integrated development environment. Sublime Text has syntax highlighting features, essentially making it a "smart" text editor. Atop of this, there are several plugins which enable the user to get common features of typical IDEs, such as text completion.
So, to answer your question, create a new file with an extension of .h and add appropriate header gaurds to it, and include it in your build system, whether it be c-make or make or whatever.
A header file is really no different to any other C++ file. By convention, they end in .h (or .hpp) and are only #included by other C++ files. So all you need to do is simply create a new file (File > New File or Ctrl+N) and then save it (File > Save or Ctrl+S) with a file name ending in .h.