|
Does anyone know how to get row after reading the text file. I have a code that read the text file but want get each row. Here is my code. Please help.
========================================================
// NewIdea.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
int main()
{
std::ifstream file("C:\\ProjectRead1.txt");
std::string s, s1,s2;
int row = 0;
int col = 0;
while (std::getline(file, s))
std::cout << "Got a line: " << s <<'\n';
=======================================================
I want to get the row here here and process.
========================================================
if (!file.eof())
std::cout << "Error reading file\n";
//return 0;
system("PAUSE");
}
|
|
|
|
|
msogun wrote: I want to get the row here here and process.
You already did, in s .
"Normal is getting dressed in clothes that you buy for work and driving through traffic in a car that you are still paying for, in order to get to the job you need to pay for the clothes and the car and the house you leave vacant all day so you can afford to live in it." - Ellen Goodman
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
Instead of reading each row, as you are doing now, and just sending it to the standard output (display), copy them to memory as well, so you can read them latter. The easest way to do that would be to declare a std::vector<std:string>, and just call push_back(s) to add them to it. Then you can read all the lines you want, from memmory, by simply using indexes: myVec[i].
I hope that points you in the right direction.
INTP
"Program testing can be used to show the presence of bugs, but never to show their absence."Edsger Dijkstra
|
|
|
|
|
How would I use the vector? Any sample? What you mentioned is exactly what I really want to do. Read each row and process it. Then next row and process it.
|
|
|
|
|
|
You've got two problems here. First, how to initiate a process on the target machine. Second, how to communicate parameters to that process, and to get the results back.
Initiating the process:
- Run a service on the target machine. The application runs continuously.
- Use DCOM (distributed COM), which uses the Windows RPC (Remote Procedure Call) mechanism.
- Use the Task Scheduler to start the application remotely.
All three of these options require that you pre-install software of some kind on the target machine. If you want to load and execute arbitrary code on the target machine, that's more difficult.
Communication mechanisms:
- Files in shared folders. Write a parameter file to a shared folder. The verification application reads it and writes a results file, which your local application then reads. Synchronization with this technique can be awkward.
- DCOM. DCOM includes the ability to pass data between the client and server.
- TCP/IP sockets; define your own messages to pass data back and forth.
Any of the initiation techniques can be used with any of the communication mechanisms. Naturally, if you're using DCOM to initiate the process, the easiest way to pass data back and forth is by using DCOM to pass the data as well.
I've used all of these methods at one time or another. They each have strengths and weaknesses. DCOM is the simplest from your application's point of view (DCOM calls look like ordinary function calls), but it has the worst error handling of all. The service and TCP/IP connection combination is the most robust and offers the best performance, but also takes the most effort to get working.
|
|
|
|
|
|
Since the application is running on the remote machine, it will access that machine's registry.
That said, you can use the RegConnectRegistry() [^] function to access the registry on other computers.
|
|
|
|
|
No, you misunderstand the point!
A Module is stored on a Disk on Machine 'A'. It's Location is visible on Networked Machine 'B' When the Module is started up, it reads startup info from the 'local' registry, i.e the module does not queery if it runs on a network, it just does RegOpenKeyEx, RegQueryValueEx etc.
Someone working on Network Machine 'B' because it can see the App stored on Machine 'A' decides to start the App. The question is: Which registry will be queeried for the values for the Module. The registry at Machine 'A' where the module is Stored, or the Registry at Machine 'B' where the module executes.
Regards
Bram van Kampen
|
|
|
|
|
Regardless of where the application's EXE file is stored, it accesses the registry on the machine where it executes.
The person working on machine 'B' runs the application located on a disk on machine A will see values in machine 'B's registry, since that's where the program will run.
|
|
|
|
|
Gary R. Wheeler wrote: Since the application is running on the remote machine, it will access that machine's registry.
Thanks,
For some reason, the above was not shown on my screen when I replied, so your answer made not much sense that it seemed to suggest to use RegConnectRegistry.
Hence my reply at that time.
While on the subject, I have an App that has to run absolutely the same way, independent of whichever user is logged on. Individual User settings for this App are Out of bounds, or, if a setting is applied it must also apply to all and every other user. I was inclined to store the settings under HKEY_LOCALMACHINE\Software\MyApp\...
I read all sorts of reports that under Vista these registry locations can no longer be written to, and are for now diverted to a User Registry key. The type of software I write is meant to take control of the machine, as it is EPOS Software. My software would not expect any external users on the hardware, and, ideed would like to be in a position not to tolerate it!. How do I work this under Vista, if Core Registry Keys cannot be used anymore
Thanks
Bram van Kampen
|
|
|
|
|
Under Windows XP, I would use SHGetFolderPath() to get the path to the common applications directory, and store my settings in a file. This location would be common to all users on that machine. Under Vista, that function has been superceded by SHGetKnownFolderPath() [^].
This doesn't quite address the problem you are having. If I understand correctly, your application is stored on a server machine, but may execute on client machines. You need to access settings from a common location. My suggestion would be to store your settings in a file in a known location on the server machine, and then use a UNC path to access the file. That way, if the application is executing on a client machine, it will still load the settings file on the server. Note that, if your application updates the settings file, you will need to take care to synchronize access to the file if more than one client can be executing the application at a time.
|
|
|
|
|
Thanks, Yes, that's the first part. Now the Second Part:- The 'Known' location is difficult, because that may be different on different Users Networks. That's why at Installation time, I want to write that info to the Registry. Under windows 98->->->XP I use 'HKLM\Software\MyCompany\IniFilePath=C:\...etc. I have also been informed that under Vista this RegKey would be diverted towards some User Key, (and that only for a shortwile). That surely defeats my purpose. because the location of the Ini File, and the info contained therein does not change depending on who is signed on as user.
So, the question becomes, what Reg Key to use in Vista in this case in stead of HKLM\Software
Thanks
Bram van Kampen
|
|
|
|
|
I need a good method to use for popping between 3 modal dialogs. (and I guess if the answer is the dialogs shouldn't be modal, I'll accept it, but not necessarily like it).
The dialogs each display a spreadsheet which may contain a significant amount of data, so load time is a factor.
The idea is to have the user wait only during the initial load of each dialog. If the user switches to one of the other 3 dialogs, hide the current one and show the new one(already loaded with data from its previous view).
The user should be able to cycle seemlessly between the 3 dialogs.
I have a method that works well in the development environment, but fails in the release/executable.
My method was to treat one of the dialogs as the master and have the other 2 send messages back to it to open the other dialogs. The code to pop to dialog2 from dialog3 looks something like the following:
if (pWndPrev = CWnd::FindWindow(NULL, csDialogName1))<br />
{<br />
pWndPrev->SendMessage(WM_DIALOG2CLICKFROMCHILD);
And, in the parent dialog, the code to call the child...
<br />
if( dlg2Exists() )<br />
{<br />
m_dlg2->ShowWindow(SW_SHOW);<br />
m_dlg2->SetWindowPos(&this->wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);<br />
}<br />
else<br />
{<br />
m_dlg2->Create(IDD_DLG_VARIANCE, AfxGetMainWnd());<br />
m_dlg2->ShowWindow(SW_SHOW);<br />
m_dlg2->SetWindowPos(&this->wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);<br />
m_dlg2->CenterWindow(); <br />
m_dlg2->UpdateWindow();<br />
m_dlg2->RunModalLoop();<br />
}<br />
And to be a little more specific, one of the dialogs is for Purchase Orders, the 2nd for Invoices, and the 3rd is the Variance dialog(to display differences between the PO and corresponding Invoice).
modified on Monday, March 3, 2008 9:54 AM
|
|
|
|
|
Maybe I'm missing something but your requirements description sounds like a TabControl solution to me, but if you are for some reason required to make things far more difficult than neccassary for both developer and user then go right ahead and use three dialogs.
led mike
|
|
|
|
|
Even though the 3 dialogs display a spreadsheet, the data and logic behind each is unique. Months of development activity has gone into each of these dialogs, so a TabControl approach isn't really an option at this point. The dialogs are part of a back office procurrement system. One is for Purchase Orders, the 2nd for Invoices, and the 3rd is the Variance dialog(to display differences between the PO and corresponding Invoice).
|
|
|
|
|
follow on question..... Why would it work consistently in the debug environment, and have problems in the EXE?
|
|
|
|
|
littleGreenDude wrote: follow on question..... Why would it work consistently in the debug environment, and have problems in the EXE?
The obvious answer based on what you indicated in reply to most post is that the developers lack fundamental skills. In my experience developers that don't have basic skills in best practices for analysis, requirements, and design create hard to use, buggy, sluggish, expensive software. Keeping things simple is a fundamental Best Practice, what has been developed in your case violates that principle. Not fixing it by changing, whatever the cost, to using a tabcontrol, continues to violate that principle and will continue to be costly in terms of maintenance and quality. You might want to get this book[^] and read it.
Also this interview with Beck[^] is interesting
led mike
|
|
|
|
|
I appreciate what you are saying, and I will definitely pick-up a copy of the book. However, managment wants 3 individual dialogs, and they are looking for a 1 to 2 day fix. Unfortunately, a re-write with a tab control approach isn't an option.
Thank you for the response/advice.
|
|
|
|
|
littleGreenDude wrote: However, managment wants
How it's supposed to work is, you are responsible for ensuring you are qualified as a "Professional" developer before you end up in a situation where you have "managers" that are paying you to develop software.
"Actually this book is build on a rather fragile premise: that good code matters…..
In the end, then, this is a book about responsibility. As a programmer you have been given time, talent, money, and opportunity. What will you do to make responsible use of these gifts?" - Kent Beck in Implementation Patterns
led mike
|
|
|
|
|
When did this become a personal attach on me?
The company existed 12 years before I walked through the door. Some of the code I inherited dates back to the 90's. And all of a sudden, you are making me responsible for something written years before me.
I was looking for some positive/helpful advice, creative ideas.
|
|
|
|
|
littleGreenDude wrote: And all of a sudden, you are making me responsible for something written years before me.
No you are responsible for taking the job with 12 year old code and for what you do now.
littleGreenDude wrote: I was looking for some positive/helpful advice, creative ideas.
I try to avoid providing people with lousy solutions. The solution I suggested is preferable to some hack that will just degenerate the situation even more.
led mike
|
|
|
|
|
Are you saying you are in the habit of denying management requests?
Also, out of curiousity what makes somebody a qualified professional?
28 years of programming experience? -got it
Computer Science degree from one of the top engineering universities in the country? -got it
Technical Training from Microsoft? -got it
Published in a Technical Journal? -got it
|
|
|
|
|
littleGreenDude wrote: Are you saying you are in the habit of denying management requests?
I am in the habit of helping them understand that when they think they can't afford to do it right it is at least partially because they don't know how much it's going to cost them to do it wrong.
littleGreenDude wrote: 28 years of programming experience? -got it
Computer Science degree from one of the top engineering universities in the country? -got it
Technical Training from Microsoft? -got it
Published in a Technical Journal? -got it
So are you comparing yourself to Kent Beck? -got it?
Also their is no way I would have guessed you have that background based on your original post
littleGreenDude wrote: (and I guess if the answer is the dialogs shouldn't be modal, I'll accept it, but not necessarily like it).
and the fact that you need help with this problem to begin with. I have worked with people with far less credentials than you claim to have who would have refactored that nightmare into a tab control solution in two to three days. Meanwhile here you are four days later still whining about it.
led mike
|
|
|
|
|
They don't want a tab control.
When it comes to software development, 98% of what we do is mundane and common. Every once in a while you come across something where you would like to know if there is some out of the ordinary solution/creative idea. I never said the problem wasn't resolved, I just was curious about other ideas/solutions. Isn't that what a forum is for?
Just to recap- you've insulted my career choice, called me a liar, and accused me of whining. Maybe you should check the parking lot to make sure I haven't stolen your car.
Man, what is your problem? Didn't your mother hug you enough as a child?
|
|
|
|
|