|
Try this:
^(?<hour>\d|([0-1]\d)|(2[0-3]))<span>:</span>(?<min>[0-5]\d)$
"These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer
|
|
|
|
|
If you really want to do all the error checking in the regular expression for Short Time format, try this:
^(([01]?\d)|(2[0-3])):[0-5]\d$
Or more explicitly:
^(([01]?[0-9])|([2][0-3])) 0-5][0-9])$
If you don't want to allow h:mm times, take out the ?.
|
|
|
|
|
Hi there...
Does anyone know how to get a picture from Excel in C#?
(The picture is pasted into a worksheet.)
Thanks in advance,
Michel van Meijer
|
|
|
|
|
Start with the VBA macro recorder in Excel, and record this. Then check out the resulting code, and translate the object model calls to C# : should be straight forward if you use the excel interop assemblies (mapping of names).
|
|
|
|
|
Thanks! That indead was a smart idea! Never thought of that...
Although I could get to the Excel.Shape but I have no clue on how to transform it to a Image. A can't simply typecast it.
In case you can help: thanks again.
|
|
|
|
|
mvmeijer wrote:
Although I could get to the Excel.Shape but I have no clue on how to transform it to a Image. A can't simply typecast it.
What you want to do is unclear.
Phase one was to get the right method call keywords. With that in hands, now you can fire Google and get your code snippet.
[edit]You've got stuff like this[^] for instance.[/edit]
Good luck!
|
|
|
|
|
The solution is (took me a lot of time to find out myself):
(ws = an Excel.Worksheet, index = Worksheet number)
Excel.Shape shape = ws.Shapes.Item(index);
Excel.Picture p = (Excel.Picture) shape.DrawingObject;
p.CopyPicture(Excel.XlPictureAppearance.xlScreen, Excel.XlCopyPictureFormat.xlBitmap);
if (shape.Type == Microsoft.Office.Core.MsoShapeType.msoPicture) {
IDataObject data = Clipboard.GetDataObject();
if (data.GetDataPresent(DataFormats.Bitmap)) {
Bitmap b = (Bitmap) data.GetData(DataFormats.Bitmap);
// Do something with the Bitmap
}
}
|
|
|
|
|
Hey this is neat! Congrats. I hope people answering on Cp will refer to this code anytime someone asks this question over and over again.
|
|
|
|
|
|
|
|
|
|
|
Hi All
I have a prototype developed colleagues in UK. When i run the exe, it is showing System.TypeInitializationException error.
Has it got something to do with regional settings or what is the cause of the app breakdown !??!!?
Any ideas ?
Thanks,
$iva
|
|
|
|
|
Hi everyone,
Would someone explain this to me, please? As fas as I know, there is no need to explicitly dispose the class instances (objects) created during program execution (using the new operator) after they are no longer needed. (In fact I didn't find a way to dispose them, no substitute for the C++ delete operator, is it possible at all?). So, all objects are disposed from the managed heap when they are not referenced anymore (is this correct?). How about threads? If I create a new instance of Class Dummy:
<br />
public class DummyClass <br />
{<br />
public DummyClass() {}<br />
public void DummyStart()<br />
{<br />
Thread.Sleep(2000);<br />
}<br />
}<br />
and start a new thread using the following code:
<br />
DummyClass SomeDummy=new DummyClass()<br />
thrSomeThread=new Thread(new ThreadStart(SomeDummy.DummyStart));<br />
thrSomeThread.Start();<br />
Let's suppose, that after the thread is started, the SomeDummy variable is no longer stored, and therefore this instance of the DummyClass class is no longer referenced. What will happend? Will the CLR keep track of this instance, and will the garbage collection find out that it is no longer needed when the thread has finished, or will it exist along with the thread, until the instance of the Thread class (which is thrSomeThread in this case) will be referenced? Any ideas, explanations are highly appreciated!
Best regards,
Rado
|
|
|
|
|
With regards to deleting objects, I don't think you can, at least not from the managed heap. With MC++ you can declare a class to be allocated outside of the managed heap using __nogc where you are then responsible for calling delete afterwards.
As for how it actually works, there's a PDF for debugging on .NET (a link was posted in the lounge not long ago -- I'll try and dig it out) it details how the GC works, I'd recommend it!
--
Paul
"If you can keep your head when all around you have lost theirs, then you probably haven't understood the seriousness of the situation."
- David Brent, from "The Office"
MS Messenger: paul@oobaloo.co.uk
Sonork: 100.22446
|
|
|
|
|
There is no delete operator, although if the class implements a Dispose() method, you can call that instead (some classes, such as streams, call Dispose() when their Close() method is called). Generally you do not have to bother, since it will get called eventually anyway. Even so, it would likely be quite some time before the GC sees any need to actually deallocate your object, unless a serious amount of memory has been used up, and space is tight. You are correct that objects are not disposed of until all references are gone, yet the GC is normally in no hurry.
Since the GC heap is fairly large to begin with, there is little gained by it hurrying to deallocate objects, since the heap itself will not normally shrink anyway. Small and moderate sized apps may never use all of that heap, so actually nothing is gained by quick destruction. Only when there is high heap-memory demand is there a need to destroy unused stuff, to make room for yet more objects.
rado wrote:
Let's suppose, that after the thread is started, the SomeDummy variable is no longer stored, and therefore this instance of the DummyClass class is no longer referenced. What will happend?
I hope I'm interpreting correctly here. SomeDummy has to be stored in order to create the ThreadStart object (otherwise an exception is thrown), and since DummyStart() is referenced in that constructor, the reference will remain, even if SomeDummy had a Dispose() method that was called, and it was set to null after calling thrSomeThread.Start().
rado wrote:
Will the CLR keep track of this instance, and will the garbage collection find out that it is no longer needed when the thread has finished, or will it exist along with the thread, until the instance of the Thread class (which is thrSomeThread in this case) will be referenced?
Yes to both cases. The GC will eventually find out if the object instance is no longer needed after the thread is done. Also, the object will exist along with the thread, because the thread itself references the SomeDummy object it was started with. In fact, the lifetime of the thread is determined by how long the DummyStart() call lasts. When DummyStart() ends, so does thrSomeThread. SomeDummy will stay around for at least that long (and possibly longer). I hope my explanation made some sense...
Cheers
|
|
|
|
|
Since this is a very common construct in Java and other GC environments, if I were MS implementing .NET, in the Thread contructor, I would keep and ArrayList of running threads and Add(this) , so it would keep them from being GC. The thread would be removed from this Array after running the delegate.
But I'm not MS, and I don't know how they've implemented it.
You could look at Rotor sources.
I see dumb people
|
|
|
|
|
Hello,
I'd like to thank everyone for their help, explanations and ideas!
Rado
|
|
|
|
|
I've been trying to develop an Explorer bar (band object) using C#. The BandObjectLib article has been very helpful. However, I've been having a few stumbling blocks and annoyances.
First, the annoyance. I've been testing the Explorer bar with Internet Explorer, and it seems to make sense to me to develop this project as an Explorer bar from the get-go, testing as I go,
instead of developing as an application and then later converting it to an Explorer bar. However, due to Windows' file locking habits and other such things, I have to mess around with moving around .PDB files before I can rebuild and register my Explorer bar solution. Is there a handy to debug Explorer bars that might make my life easier?
As for the stumbling blocks, I've been using Pavel Zolnikov's BandObjectLib code (http://codeproject.com/csharp/dotnetbandobjects.asp) which works fine, but when I try to try to register an event handler for a WebBrowser event, the Explorer bar stops working. In fact, the Explorer bar appears as a grey (unpainted) Explorer bar, instead of having the components and title that it should have.
This is the line that causes me trouble:
this.Explorer.NavigateComplete2 += new SHDocVw.DWebBrowserEvents2_NavigateComplete2EventHandler(this.OnNavigateComplete2 );
It seems like Pavel Zolnikov uses the event (the same line of code) in his Command Prompt Explorer Bar project, so I'm wondering if there's some magic that I'm missing in order for me to handle this event.
As another stumbling block, I've been trying to access the Internet Explorer user's history. I'm not sure if I should use the Travel Log interface or IUrlHistoryStg, and it's not really clear to me what the difference is, and that hasn't seemed to be documented in MSDN very well. Nevertheless, I decided to implement IUrlHistoryStg2 in C#, but I think I ran into a problem with converting the types properly for IEnumSTATURL and the STATURL struct. I'm having particular problems (I think) with choosing the correct types in C# for the parameters for IEnumSTATURL.Next(). Is there a translator from MIDL to C#? Has someone written a C# library to access Internet Explorer metadata like this? Are there any great resources to help me with this sort of thing?
Many thanks,
Arun
|
|
|
|
|
I am writing an application that supports a function to search through different types of documents, doc, txt, rtf, pdf, etc looking for a text string. It is to work very similar to the Windows “Find in files” function. I have not been able to find the Win32 API to access this function. I was hoping I could just use the Windows search function. Does anyone know if this is possible? Thanks.
david23g
|
|
|
|
|
I've done the sort of thing you're looking to do. In the Win32 API, you start with FindFirstFileEx(), FindNextFile(), and finally FindClose(), while walking the desired directory tree. That is exactly how the find/search applet in Windows does it, and it's very fast.
Once you have the desired file [by extension], just open it and search it. If the file is not too large, I recommend loading an entire buffer with the contents, then searching the whole thing. If the file is big, it's a little more complicated, because the beginning of the string to be found might lie at the end of one buffer full, and the end of it at the start of the next buffer full. Thus, you need to "overlap" the buffers, if you will, for at least the length of the string to search for. I did this with cyclic buffers, but there's no need to get fancy.
The CLR already wraps those Find* functions in the Directory class, with methods like GetFileSystemEntries() - the closest equivalent - and GetFiles(). Opening and searching the files is pretty much the same in .Net as in the Win32 API.
Cheers
|
|
|
|
|
Hello,
I have a ListView that is set in Details mode for the view. It has no headers though that's likely irrevalent. I have a SmallImageList set and I set an icon for a ListViewItem. When an Item is selected, it also highlights the icon on the left. How would I stop it from highlighting it? I know that I could catch the WM_PAINT but then would I have to repaint the whole control? Is there something that I'm missing?
Thanks,
Jonathan
|
|
|
|
|
Ok. This was a bad question. The standard ListView does not highlight the icon. I am trying to modify the TreeListView that was posted on CodeProject and it does highlight the icon using a ListView. I will have to investigate more.
|
|
|
|
|