|
Since you file has blank separated fields, for every single line you can extract such fields in a very simple way using String.Split method.
Alternatively, you can use the very powerful Regex Class
http://msdn2.microsoft.com/en-us/library/system.text.regularexpressions.regex(VS.71).aspx[^]
the effort needed to learn its usage is well worth.
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.
[my articles]
|
|
|
|
|
That's just horrible.
First: My brain gibbers at non-ISO 8601 date and time formats.
Second: As mentioned, the lack of delimiters in the file.
However, I'll suggest the use of a System.Collections.Generic.List<System.DateTime>
for each employee (which can be sorted if need be), then intime will be in the zeroth position and the outtime will be in the nth position.
I would likely also have a System.Collections.Generic.Dictionary<string,System.Collections.Generic.List<System.DateTime>> to contain all the employees' data.
Read the file, parse the data, insert it into the dictionary/list, when done, print it out or whatever. Really quite simple actually.
|
|
|
|
|
My earlier question leads to an intermediate goal of understanding delegates. From my readings, there is an important item left out of all the delegate articles I have been reading. The following is a short list of a few important points that I have garnered. I submit them in the hopes that my opinion will be confirmed or corrected.
1. A delegate is a type safe pointer to a function.
2. I will refer to the “pointed to” function as the target of the delegate.
3. A delegate can be used to call its target from outside the target’s name space. To explain my thoughts:
3a. A mouse click is an event that is within the space of the operating system, but outside the space of a program that I may write
3b. I want my program to be aware of the mouse click
3c. The operating system can use the delegate from outside my program.
3d. The arguments passed to the delegate are transported to within my program via the delegate’s call of the target.
3e. This is why the delegate must be a type safe pointer.
3f. By type safe, I mean that the signature of the delegate and its target must match.
4. There are three difficult parts of delegates:
4a. Understanding their purpose
4b. Understanding their capabilities (not a hard as the other two)
4c. Learning the syntax of preparing them for use.
4d. I will just note those items and defer elaboration for later.
I tired to indent the 3a type items but don't know how to do that.
Am I making any progress?
Thanks for your time
|
|
|
|
|
bkelly13 wrote: A delegate can be used to call its target from outside the target’s name space.
This is not clear. By prefixing namespace name, we can call delegates. Do you mean that ?
bkelly13 wrote: Am I making any progress?
Yes. Delegates are simple and I think you covered almost all.
|
|
|
|
|
This article on delegates, found here: http://www.codeproject.com/KB/cs/cs_delgates.aspx
Presents the following code:
<br />
class Del<br />
{<br />
delegate void dl1();<br />
public void fn1()<br />
{<br />
System.Console.WriteLine("Inside f1");<br />
}<br />
public void fn2()<br />
{<br />
dl1 obj = new dl1(fn1);<br />
} <br />
} <br />
I enter the code into C# Visual Express 2008 and select the help key for the phrase “obj” within the last line of code. The result I get contains this statement: “This API supports the .NET Framework infrastructure and is not intended to be used directly from your code.”
Obviously that is of no help. The book “C# in easy steps” does not contain an explanation. I found a two part article on key words and it did not help.
What does this last line accomplish? What does the key word “obj” do here?
Thanks for your time
|
|
|
|
|
A little bit later in the article the author has the code:
<br />
class Del<br />
{<br />
delegate void dl1();<br />
public void fn1()<br />
{<br />
System.Console.WriteLine("Inside f1");<br />
}<br />
public void fn2()<br />
{<br />
dl1 obj = new dl1(fn1);<br />
obj();<br />
} <br />
}<br />
class Example<br />
{<br />
public static void Main()<br />
{<br />
}<br />
}<br />
Why does he put Main inside a class?
Thanks for your time
|
|
|
|
|
The Main() function is called automatically on program start - create a blank Windows Forms Application and examine the Program.cs file - a Main function is created which runs the rest of the application. The author of the article is creating his own rather than using an auto-generated one.
|
|
|
|
|
A) obj is just a name, he could have chosen X or temp or Zaphod
B) All methods must be in a class. (Unlike C/C++)
|
|
|
|
|
Yeah, I see that now. Thank you for taking the time to reply.
Thanks for your time
|
|
|
|
|
obj in this case is simply the name of a new dl1 object (the delegate) - not a keyword.
|
|
|
|
|
I don't know if I am confused or enlightened. Let me try to explain and tell me if I follow you. Start with the code:
<br />
dl1 obj = new dl1(fn1);<br />
This tells the compiler to (left to right):
1. Create something called dl1.
2. Give this new entity the name obj.
3. Create it via the "new" process.
4. Create it in the likness of class dl1. (which has always seemed redundant because the first phrase of this line of code specified that to begin with)
5. Assign this object the target function fn1.
The way I see (saw) obj used so often, it just really seemed like a keyword. I would really like to see people use more descriptive names for classes, methods, and variables.
Thanks for your time
|
|
|
|
|
can someone help me with a program in C# that draws over a game that uses directx?
i want it to be kind of like fraps displays the framerate on the upper left corner of the game. can someone explain how i would do this in C#?
thanks in advanced
|
|
|
|
|
|
Do you just want to display some text in the top left corner (framerate)?.
The DirectX SDK has a common library included with it (under Samples/C#/Common) which has utilities to easily render text. The file you'll be after is D3DFont.cs. You can render text easily with 3 lines of code using the font class included in this.
If you want to know how to display the framerate take a look in the file D3DApp.cs (under the C# common files again), it has a method starting at line 1148 called "UpdateStats" which does what your looking for (if you can be bothered making sense of it).
Mark.
|
|
|
|
|
Hi
I have a bluetooth searching devices project wrote in C# , while I'm search for devices it`ll found a device, the MAC address of the device appear , how can I appear the name of the device....
|
|
|
|
|
Dear All,
I have a VB6 Application which throws events. How can I capture these events in my another C#.Net Application?
Please help me providing articles or links.
Thanks in advance.
Mehedi Hasan
|
|
|
|
|
What kind of events does VB6 application throw? Can you give us the example?
|
|
|
|
|
Like Michael said, how is the VB6 event being thrown. Without knowing, we can't really help.
"The clue train passed his station without stopping." - John Simmons / outlaw programmer
|
|
|
|
|
seem like this guy " M A A Mehedi Hasan" just want to post something in our forum.. I don't know why there are so many people like that.. they just post the question and if we ask them back, they never reply..
|
|
|
|
|
Michael Sync wrote: don't know why there are so many people like that.. they just post the question and if we ask them back, they never reply..
I figure I either made them feel really stupid or answered their inquiry.
"Real programmers just throw a bunch of 1s and 0s at the computer to see what sticks" - Pete O'Hanlon
|
|
|
|
|
Hi guys i had solution which im confusing that how a body of mail takes streamreader's colllection from a text file. How can i do this? can anyone give me a suggestion, would be great!
function readtext reads a myfile.txt and i want invoke this method to mail.Body. by send mail event.
private static void readtext()
{
FileStream fs = new FileStream("C:\\myfile.txt", FileMode.Open, FileAccess.Read);
StreamReader sr = new StreamReader(fs);
sw.BaseStream.Seek(0, SeekOrigin.Begin);
string str = sw.ReadLine();
while (str != null)
{
str = sr.ReadLine();
}
sr.Close();
fs.Close();
}
}
thanks!
so much of happy ending...
|
|
|
|
|
Rephrase it, you aren't making much sense.
"The clue train passed his station without stopping." - John Simmons / outlaw programmer
|
|
|
|
|
Look into System.Net.Mail (specifically the MailMessage and SmtpClient classes) to send the emails. Also, your method should return the string it is building. Perhaps you should do something like the following (be careful if the file can be large, as it may throw a memory overflow exception)...
private static string ReadText(string fullFilePath) {
FileStream fs = null;
StreamReader sr = null;
try {
fs = new FileStream(fullFilePath, FileMode.Open, FileAccess.Read);
sr = new StreamReader(fs);
return sr.ReadToEnd();
} finally {
if (sr != null)
sr.Close();
if (fs != null)
fs.Close();
}
} Alternatively, you could send the file as an attachment. Examples of this can be found when you examine the MailMessage class. Hope this helps,
Sounds like somebody's got a case of the Mondays
-Jeff
|
|
|
|
|
thanks, its really helpful!! jeff.
so much of happy ending...
|
|
|
|
|
Hi,
I'm having trouble in transferring arrays of short integers from C++ library to C# application.
I got the sources of a library, written in C++, that defines interface in IDL file.
The original methods transfer "basic" objects, such as BOOL and BSTR.
I need to add a new method to the interface for transferring two arrays of short integers.
For that purpose, I create two safe arrays and populate them with the numbers.
However, when I try to invoke the C# method I get TypeMismatch error code (when I pass only the string objects, it works OK).
The C++ code includes the following definition in IDL file:
library CodecLib
{
...
dispinterface _ILiveEvents
{
properties:
methods:
...
[id(4), helpstring("method DataReady")] HRESULT DataReady([in] BSTR strForward, [in] SAFEARRAY(short) FwdBuffer,
[in] BSTR strReturn, [in] SAFEARRAY(short) RetBuffer);
};
...
};
The following C# code implements the interface defined in the IDL file:
private void DataReady(string sForward, Array ForwardData,
string sRetrun, Array ReturnData)
{
...
}
The following C++ code prepares the data in the safe arrays:
void CLive::DataReady(short *pFwdBuf, short *pRetBuf, int nBufferSize)
{
long lIndex;
SAFEARRAYBOUND ArrayBound[2];
ArrayBound[0].cElements = nBufferSize;
ArrayBound[0].lLbound = 0;
ArrayBound[1].cElements = nBufferSize;
ArrayBound[1].lLbound = 0;
m_pFwdBuffer = SafeArrayCreate(VT_I2, 1, &ArrayBound[0]);
m_pRetBuffer = SafeArrayCreate(VT_I2, 1, &ArrayBound[1]);
// Set data in safe arrays
for (lIndex=0; lIndex<nBufferSize; lIndex++)
{
SafeArrayPutElement(m_pFwdBuffer, &lIndex, &pFwdBuf[lIndex]);
SafeArrayPutElement(m_pRetBuffer, &lIndex, &pRetBuf[lIndex]);
}
// Send data to clients
Fire_DataReady(m_strForward, m_pFwdBuffer, m_strReturn, m_pRetBuffer);
// Release safe arrays
SafeArrayDestroy(m_pFwdBuffer);
SafeArrayDestroy(m_pRetBuffer);
m_pFwdBuffer = NULL;
m_pRetBuffer = NULL;
}
The following C++ code distributes the data to the clients.
However, calling Invoke() returns TypeMismatch error, with uArgErr equals to 3:
HRESULT Fire_DataReady(BSTR strForward, SAFEARRAY *pFwdBuf,
BSTR strReturn, SAFEARRAY *pRetBuf)
{
HRESULT hr = S_OK;
T * pThis = static_cast<T *>(this);
int cConnections = m_vec.GetSize();
for (int iConnection = 0; iConnection < cConnections; iConnection++)
{
pThis->Lock();
CComPtr<IUnknown> punkConnection = m_vec.GetAt(iConnection);
pThis->Unlock();
IDispatch * pConnection = static_cast<IDispatch *>(punkConnection.p);
if (pConnection)
{
CComVariant avarParams[4];
avarParams[0] = strForward;
avarParams[0].vt = VT_BSTR;
avarParams[1] = pFwdBuf;
avarParams[1].vt = VT_ARRAY;
avarParams[2] = strReturn;
avarParams[2].vt = VT_BSTR;
avarParams[3] = pRetBuf;
avarParams[3].vt = VT_ARRAY;
CComVariant varResult;
unsigned int uArgErr;
DISPPARAMS params = { avarParams, NULL, 4, 0 };
hr = pConnection->Invoke(4, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, ¶ms, &varResult, NULL, &uArgErr);
}
}
return hr;
}
|
|
|
|