|
spalanivel wrote: How to do this?
You can't. You can, however, reduce file I/O by reading the entire file once into a buffer and then process that buffer instead. See Stuart's suggestion.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
Hi
I want a free class or utility that can open a PDF file and sets its field's value(for use in a MFC app).
Any idea or suggestion or guide?
Thanks
www.logicsims.ir
|
|
|
|
|
You can give OpenPDF[^] a try.
1300 calories of pure beef goodness can't be wrong!
|
|
|
|
|
It's a java based application.
I want a utility not an application!
www.logicsims.ir
|
|
|
|
|
It's a java based application not a library!
I want a library to use it from my MFC program!
www.logicsims.ir
|
|
|
|
|
Hadi Dayvary wrote: I want a library to use it from my MFC program!
Take a look at DynaPDF[^] and PoDoFo[^]
1300 calories of pure beef goodness can't be wrong!
|
|
|
|
|
search google with this term "PDF writing library c++ "
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow Never mind - my own stupidity is the source of every "problem" - Mixture
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
Support CRY- Child Relief and You
|
|
|
|
|
int main() {
char * lpszData = "file=abcdefg&info=&x=3&4=5";
int count = 0;
char * pt = strchr(lpszData, '&');
while ( pt != NULL ) {
count++;
pt = strchr(++pt, '&');
};
cout << "Data: " << lpszData << "\n";
cout << "Count: " << count << "\n\n";
char ** split = new char * [count + 1];
char * start = lpszData;
for (int i = 0; i <= count; i++) {
pt = strchr(start, '&');
if ( pt == NULL )
pt = lpszData + strlen(lpszData);
split[i] = new char[pt - start + 1];
strset(split[i], 0);
strncpy(split[i], start, pt - start);
start = pt + 1;
};
for (int i = 0; i <= count; i++) {
cout << "split[" << i << "] = " << split[i] << "\n";
};
for (int i = 0; i <= count; i++)
delete [] split[i];
delete [] split;
} First, the delte [] split[i]; in the for loop at the end gives me an error, but when I remove this line the code leaks.
Second, the output is:
Data: file=abcdefg&info=&x=3&4=5
Count: 3
split[0] = file=abcdefg
split[1] = info=[extended_char]3
split[2] = x=3
split[3] = 4=5 Try as I might I can't figure out where the extra characters are coming from in split[1] .
Can anyone help with either of these problems?
Thanks for any assistance you can give,
MZR
|
|
|
|
|
Mike the Red wrote: strset(split[i], 0);
Replace with
split[i][pt - start]='\0';
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
|
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
Mike the Red wrote: split[i] = new char[pt - start + 1];
strset(split[i], 0);
The second statement is effectively canceling out the first.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
Just for your information: you might be interested in the strtok[^] function. It could ease your life a lot in this case
|
|
|
|
|
I can't tell you how many times I've tried to find this function - I KNEW there had to be one...
I always looked at the list of "String Manipulation Routines", saw strtok and its description, and said to myself "What the hell is a token?"
Thankfully, I followed your link and looked at the example. You're right - this could ease my life in a LOT of cases!
Thank you, sir!
MZR
|
|
|
|
|
Hi,
In my application I need to extend the size of a NTFS volume. I use IOCTL_DISK_GROW_PARTITION to grow partition boundary this executes successfully. But after this FSCTL_EXTEND_VOLUME fails with error #87 (incorrect parameter).
Please anyone give me some idea that why this control code is failing.
Thanks
|
|
|
|
|
Hello,
I want to have a custom return value of a dialog box application.
We can change the return value by overriding ExitInstance().
Is it possible to have a string as return value? If yes how to achieve this?
Thank you..
|
|
|
|
|
The DoModal function returns an integer so you won't be able to change that (except if you create your own function to create the modla dialog). But anyway, this is in general not needed: you could simply add a function that returns you the string. The return of DoModal is used to return informatino about how the dialog has been closed to the user. It doesn't make a lot of sense to return some kind of data there.
|
|
|
|
|
Do you really want to return a string value to the OS ?
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
maybe it's called from another process ?
This signature was proudly tested on animals.
|
|
|
|
|
Do you really want to return a string value to another process?
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
nope; but maybe the OP wants to.
This signature was proudly tested on animals.
|
|
|
|
|
Well, he should know then there are a lot of IPC mechanisms.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
Requirement is to return a String? So have to find a soultion for it ..
It is used by other process and that is already defined to take String as input..
|
|
|
|
|
You may, for instance, return a integer value and then call the other process with a string appropriate to such a integer return value, e.g. (pseudocode):
int r = call(myProcess);
switch( r )
{
case eOK:
call(theOtherNastyProcess, "OK");
break;
...
}
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
Did you get your question fully answered by Cedric's response? I couldn't tell from your reply. If not, here's a little code snippet to demonstrate what (I believe) he was suggesting:
CMySpecialDialog MyDialog;
const int Status = MyDialog.DoModal();
if (Status == IDOK)
{
const CString MyString = MyDialog.GetMyString();
}
This will work if you define a GetMyString method in your CMySpecialDialog class. Just remember to keep the string value in a member variable of the CMySpecialDialog class so that it still exists after the return from DoModal.
HTH
|
|
|
|