|
Hi, i'm very interessed also
I would like to know the physical starting position of file on the disk and in priority for the CDFS and NTFS to make a "fast" multiple file copy function. The idea is to sort files to be copied in the physical arragement of media support.
Cheers
Patrick Bricout
|
|
|
|
|
I'm looking to write some code that will convert between 3 different file formats. I'm thinking of coding something really generic such that it's easy to add new formats. However, before I do a lot of work designing and writing this, I wanted to see if anyone here knows of a design pattern or set of classes that already provides this capability.
Cheers,
Tom Archer
Never be afraid to try something new. Remember that a lone amateur built the Ark. A large group of professionals built the Titanic.
* Inside C# -Second Edition
* Visual C++.NET Bible
* Extending MFC Applications with the .NET Framework
|
|
|
|
|
Have you read 'Design Patterns' ? I would have thought any of the factory type patterns would be candidates, depending on how complex the conversion is. Obviously what you want to end up with is a format where you have a class that handles the conversions and you can just keep writing 'plug in' classes for any file formats that may come up.
Christian
I have drunk the cool-aid and found it wan and bitter. - Chris Maunder
|
|
|
|
|
|
Tom Archer wrote:
It's been a while
Well, I confess to reading it for the first time recently, half way through the section on factories when the worlds coolest ASP.NET book intervened, plus a couple of Michael Moore books distracted me. I couldn't remember names, but the two that sprung to mind were the one that someone else has suggested ( which is basically what I was first suggesting, too, a central class that operates with instances of classes that know how to read or write a specific format ), or the pattern where a more complex structure is built, so a lot of different methods are needed to build it, such as building a PDF.
Christian
I have drunk the cool-aid and found it wan and bitter. - Chris Maunder
|
|
|
|
|
|
Christian Graus wrote:
when the worlds coolest ASP.NET book intervened
Which one is that???
-Nick Parker
DeveloperNotes.com
|
|
|
|
|
Essential ASP.NET with examples in C#[^], a terrible title for a book that essentially provides a guided tour of the inner workings of ASP.NET, and all the points at which you can tap in to customise it.
Christian
I have drunk the cool-aid and found it wan and bitter. - Chris Maunder
|
|
|
|
|
Tom,
I use a Transformer pattern to do this. My reader and writer classes instantiate a transformer (based on the input and output format) to read and write 3 disparate versions of files. The instantiation is parameterized via a factory.
/ravi
Let's put "civil" back in "civilization"
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
More than meets the eye !!!
Christian
I have drunk the cool-aid and found it wan and bitter. - Chris Maunder
|
|
|
|
|
|
|
Anyone know of a utility which will let me compare two compiled libraries (not DLLs) and tell me if there are any differences in the actual code (not time stamps, etc.)
Anyone who thinks he has a better idea of what's good for people than people do is a swine.
- P.J. O'Rourke
|
|
|
|
|
|
Problem with fc is that it catches the changed time stamps inside the library. My kludged solution is to build the entire huge project after the changes and use fc to compare the old and the new executable. This generally works.
Anyone who thinks he has a better idea of what's good for people than people do is a swine.
- P.J. O'Rourke
|
|
|
|
|
I have my fields in a set and I call insertColumn in a loop:
for (int j = 0 ;j < pDoc->m_keySet.size(); j++ , it++)
{
CString& field = *it;
headingWidth = field.GetLength() * 10;
myList.InsertColumn( j,field, LVCFMT_CENTER, headingWidth )
but this isnt good enough because a 3 letter field is only 30 pixels wide --- its not enough, and a 11 letter field with width 110 actually comes out looking good. So short of testing to see if the length is under some minimum, and defaulting to a reasonable width, is there a smarter way to set widths according to field length?
thanks,ns
|
|
|
|
|
Have you tried LVSCW_AUTOSIZE or LVSCW_AUTOSIZE_USEHEADER with SetColumnWidth() ? Another alternative is to call GetStringWidth() and add 10-15 pixels to it.
Five birds are sitting on a fence.
Three of them decide to fly off.
How many are left?
|
|
|
|
|
Ah! Thanks so much! I didnt know there was such a function GetStringWidth! I will use it!\ns
|
|
|
|
|
ANd armed with this info:
I now have a dialog with 5 labels with differing lengths of some CStrings populating them (at runtime). I want to size the dialog to be just as wide as the longest string. SO I am going to put an invisible listCtrl on the dialog and use the getsstringwidth to figure out the largest number of pixels I need and movewindow it... I didnt see anything in CString that would help me......
I wonder if this is the simplest way........it just occurred to me in light of your response ....
Thanks,
ns
|
|
|
|
|
See if the text-related functions of the CDC class help:
GetTextExtent()<br />
GetTabbedTextExtent()<br />
GetOutputTextExtent()<br />
GetOutputTabbedTextExtent()
Five birds are sitting on a fence.
Three of them decide to fly off.
How many are left?
|
|
|
|
|
What is the advantage of using a reference over the variable.
Can't you just pass the variable name instead of passing a reference to the variable.
KAI_YPO
|
|
|
|
|
When you pass a variable, a copy of that variable is made. When you pass a reference, the original variable is passed in. This means two things:
1. If the variable is big, you save some effort in making a copy
2. Anything you do to the variable in your function will effect the variable that was passed in
so if you have two functions:
void Inc(int i)
{
++i;
}
and
void IncRef(int & i)
{
++i;
}
In your main code you can do this:
int i = 0;
Inc(i); // i still = 0, because only the i in the function was incremented
IncRef(i); // i now = 1, as this i is the same one that was incremented in the function. Note, the variable names do not need to be the same.
Christian
I have drunk the cool-aid and found it wan and bitter. - Chris Maunder
|
|
|
|
|
Here's a question though...
Which is more efficient...
void IncRef(int & i)
{
++i;
}
or this...
void IncRef(int i)
{
++i;
}
The way I think about it is we are still passing pointer to another variable in a previous stack frame. Therefore in this case would it make any difference performance wise since we are still just dealing with a number whether it be a memory location or an integer. I know that if this was a pointer I would be correct in this case but I'm not sure about references. Please feedback though I may be wrong.
|
|
|
|
|
In this case, it would only be barely more efficient to pass a reference. It's not just passing a number, it's also allocating and deallocating the memory. But your app won't hang on this, it's more if you have huge data structures that you want to pass into a function to be read ( and this is what keyword 'const' is for ), that you can make some serious gains in efficiency by using references.
Christian
I have drunk the cool-aid and found it wan and bitter. - Chris Maunder
|
|
|
|
|
I'm testing it out and it seems that order of inserting is preserved but I wanted to confirm this:
If I do insertColumn in a CListCtrl, the columns get named in the sequence they were put in. So its more like an addcolumn -- I thought insertcolumn would put it in a certain position -- amybe even sorted somehow. I need 2 columns to always be #1 and 2, and want to be sure that if I just do inserColumn (heading1), then heading2, they will come out in order, regardless of the headings of the rest of the columns..
Also what exactly is a subitem in this context?
int InsertColumn( int nCol, LPCTSTR lpszColumnHeading, int nFormat = LVCFMT_LEFT, int nWidth = -1, int nSubItem = -1 );
If we are inserting a column number ncol, then what is its subitem? I had thought that the first col was a 'real' column and the rest were subitems. But in InsertColumn i dont know what subitem is. i put in a subitem number nsub = 3 etc in my call:
if( InsertColumn( m_iNumColumns++, strHeading, LVCFMT_CENTER, iWidth ) == -1, nsub )
return FALSE;
but it acted the same as:
if( InsertColumn( m_iNumColumns++, strHeading, LVCFMT_CENTER, iWidth ) == -1 )
return FALSE;
Thanks for the help,
ns
|
|
|
|