|
Thanks, Carlos buddy!
Geo
|
|
|
|
|
If I add a text file as a resource, how can I write a new text file from that resource. Example... I have text files in my app, but I dont want to have to distribute the text files with it. I want to write temporary files and read from them, then delete them.
Thanks,
Daniel
|
|
|
|
|
I'm not sure I understand. You say that you do not want to distribute the text file.
Do you mean that you don't want to have separate files?
If so, then resources is the way to go!
How big are these text files?
Assuming that you have added the text files as resources to your app, you can simply call LoadResource() to get your text and from there create the temp files (if you actually need them).
Normally, there would be no reason to have a predetermined binary pattern (your text files) that would be written to disc and then read from. Why not just read the files' data directly from memory?
|
|
|
|
|
Well... What I have is a listbox. Each line in the file is a line in the listbox.
For my purposes, this is what I'm doing...
CStdioFile MyFile;
CListBox MyListbox;
MyFile.ReadSrting(String);
MyListBox::AddString(String);
Thats in a loop until EOF is reached. If I could do this directly from the resource, that would be great.
Thanks for the reply.
|
|
|
|
|
Daniel1324 wrote:
Each line in the file is a line in the listbox.
...
Thats in a loop until EOF is reached. If I could do this directly from the resource, that would be great.
Do you already know the value of the data? If not, resources probably aren't the answer.
|
|
|
|
|
I already know the valus... its all in a text file. Basically, what I want to do is read one line, and add that line to the listbox. Rightnow, i'm doing it by reading the text file. But, I want to add the text file into the resources so I wont have to distribute the text files with the app.
|
|
|
|
|
You can extract a resource to a file in this way:
bool ExtractResourceFile(const CString& resourceID, const CString& filename)
{
bool bOK = true;
HANDLE hRes = ::LoadResource(AfxGetResourceHandle(), ::FindResource(AfxGetResourceHandle(),
resourceID, "YOUR_RESOURCE_TYPE"));
if (hRes != INVALID_HANDLE_VALUE)
{
DWORD sizeOfResource = ::SizeofResource(AfxGetResourceHandle(),
::FindResource(AfxGetResourceHandle(), resourceID, "YOUR_RESOURCE_TYPE"));
char *lpRes = (char*)::LockResource(hRes);
CFile file;
if (file.Open(filename, CFile::modeCreate | CFile::modeWrite))
{
file.WriteHuge(lpRes, sizeOfResource);
file.Close();
}
else
{
bOK = false;
}
::UnlockResource(hRes);
::FreeResource(hRes);
}
return bOK;
}
Its up to you to delete the file once you have finished with it ::DeleteFile(filename)
Roger Allen
Sonork 100.10016
Death come early, death come late,
It takes us all, there is no reason.
For every purpose under heaven,
To each a turn, to each a season.
A time to weep and a time to sigh,
A time to laugh and a time to cry,
A time to be born and a time to die.
Dust to dust and ashes to ashes,
And so I end my song.
|
|
|
|
|
Thanks Mr. Allen. Will this also work for binary files?
Edit...
Cant get it to work... always produces a zero byte file.
|
|
|
|
|
Hi,
I have MDI project. In one of the dialog boxes, I have a Combo Box,
and according to a file (this file is read before the dialog is opened),
I have to add items to the combo box, and the number of items is different according to the read file.
how can I add dynamically to the Combo Box?
Ehsan Behboudi
|
|
|
|
|
|
|
Combo boxes only work with strings. They are "dumb" as far as data types, formating, etc. are concerned. If you want data from the file to go to a combo box, then you are responsible for reading in the data from the file, parsing the data, and adding the data to the Combo Box.
|
|
|
|
|
I'm making a program to losslessly cut commercials from WMV files, and I'm trying to figure out the best way to display the current position in the video. I'm using a TrackBar control, and it works fine, but I'd like it to highlight the part of the slider to the left of the current position, like WMP9 or other video players do. How can I do that using straight Win32?
|
|
|
|
|
|
It would, but it uses MFC; I want to avoid a huge exe size, so I can't use MFC
|
|
|
|
|
IGx89 wrote:
I want to avoid a huge exe size
Your app is huge even if you link dynamically with the MFC DLLs?
/ravi
Let's put "civil" back in "civilization"
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
Well, it's about ~40kb now; with MFC (static) it'd probably be close to 200kb, and MFC (dynamic) would be a LOT bigger because I'd have to include the whole mfc70.dll file (or whatever it's called now). I don't think it's worth it when I'm using MFC just for one simple trackbar
|
|
|
|
|
Ah. I didn't realize you meant the app's footprint vs. its size. But if you're using VC7 (as it appears), don't you have to include the new MSVCRTL (and possibly other) DLLs anyway? Just curious.
/ravi
Let's put "civil" back in "civilization"
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
I have it staticly linked to those DLL's; including wmvlib and other DShow lib's, and using UPX compression, the final exe is exactly 60kb, and isn't dependent on any DLL's (besides standard DirectShow ones that come with DirectX).
|
|
|
|
|
hi again,
msdn tells, that select will return a recv event, when the connection is closed, terminated or reseted, not only when there is data to read.
is there an easy way to distinguish between a close and a read event?
thx for help
Don't try it, just do it!
|
|
|
|
|
Yes, do a read on the socket and it will return 0 - the socket is closed.
|
|
|
|
|
hi,
i have a dll, exporting a c++ class(u know all these crazy export names), and i want to code a software, to link them runtime! So GetProcAddress will get problems!
any solution?
thx
Don't try it, just do it!
|
|
|
|
|
Alexander M. wrote:
and i want to code a software, to link them runtime! So GetProcAddress will get problems!
What do you mean? Are you having problems accesing the functions with GetProcAddress() now, or do you intend to write functions which cannot be accessible using GetProcAddress()?
--
They're out get me, I can't escape cos' they won't let me
They won't forget me, they'll get me in their grip and sweat me
They'll wait me out, and then move in under my skin
They'll make me doubt, they're out to make me let them in
|
|
|
|
|
Hi,
How can I get the current username from a NT service?
GetUserName() and WNetGetUser() returns allways "SYSTEM"
tx
|
|
|
|
|
it's not that easy as u think!
it is possible, that multiple users are logged on at one machine!
Don't try it, just do it!
|
|
|
|