|
Alan Balkany wrote: As was pointed out earlier, a struct is less efficient to pass as a parameter because the whole object is pushed onto the stack. A class only has its reference (an address) put on the stack, so is faster to pass.
If the struct is small enough, it can be copied with a single instruction, making it just as efficient as copying a reference. It's recommended that a struct should not be larger than 16 bytes, so that it can be copied with a few instructions, without using a loop.
Despite everything, the person most likely to be fooling you next is yourself.
|
|
|
|
|
Unless you have a special reason to make a struct, make it a class.
Classes are easy to implement, just put a few properties in it and it works without problems. A struct needs more work and more knowledge to be implemented properly, or you may end up with a struct that does unexpected things.
Despite everything, the person most likely to be fooling you next is yourself.
|
|
|
|
|
If you think of it as a value, make it a struct.
If having operators for it makes sense, you're likely thinking of it as a value.
|
|
|
|
|
I have a form with 3 tab pages. On the first tab I have text and drop down boxes. Some boxes you insert data, some are bound to database tables that you pick items and customers from. I want to save all this info to a separate table in the same database as a new entry. My problem is I don't know how. If I was to use a datagrid and just change the info and save it back to the same table that I can do. But to move it all to a different table thats the tickler. Any help would be great.
Thanks Don
|
|
|
|
|
1) Make a stored procedure in the database to insert the row(s)
2) Make a SqlCommand object in code with CommandText set to the name of the stored procedure
3) Fill the command object's Parameters collection with the values from the form for the stored procedure
4) Call the command object's ExecuteNonQuery() function
Viola!
Keep It Simple Stupid! (KISS)
|
|
|
|
|
Hello everyone,
I have some phone to each user and I want to store all photos into memory with key-value pair. Key is the user name and value is the binary photo stream. Any ideas how to store binary photo content into memory? Which data structure is suitable to be used?
thanks in advance,
George
|
|
|
|
|
You can store images in byte[] or MemoRyStream.
|
|
|
|
|
Cool, Giorgi!
1.
And if total image size is large than physical memory size, Dictonary will automatically use Windows vistual memory? There is no size limitation for Dictionary data structure itself?
2.
How to read the full content of a binary file into byte[] or MemoRyStream? Confused. ??
regards,
George
|
|
|
|
|
You can use Binary Serialization to write an instance of Image class to memorystream. You can call ToArray() method of memoryclass to copy memorystream data to byte[]. You can also use BinaryReader to read file content in byte[].
Not sure about first question.
|
|
|
|
|
Thanks Giorgi,
1.
I am interested in "Binary Serialization to write an instance of Image class to memorystream". Could you show me some pseudo code or recommend me some samples please?
2.
If I read image into memorystream, then the whole image will be in memory? My confusion is for object stored in memorystream as you suggested solution, will all content be hold in memory or just a handle hold in memory which points to the physical image file?
regards,
George
|
|
|
|
|
George_George wrote: And if total image size is large than physical memory size
Then you shouldn't be storing it in memory.
George_George wrote: How to read the full content of a binary file into byte[] or MemoRyStream
As always, and as you've been told an obscene number of times, you read the bloody docs[^] and/or search for relevant examples[^]!
|
|
|
|
|
Thanks J4amieC,
1.
Could Dictionary use virtual memory?
2.
I read a couple of samples, but either for VB or for ASP.Net, which is not my needs. My purpose is simple, just write a console application is fine. And I do not care about the content of image, so I do not care whether use Image class or not. (the samples all use image class)
I read MSDN sample but seems not describing the same problem for me.
Are there an easy to use sample which just convert image file into memory stream or byte[]?
regards,
George
|
|
|
|
|
As far as I know, when you exceed physical memory, the OS will automatically start to use virtual memory. Your program won't know the difference; it will just start to slow down when you're accessing "memory" pages that have been written to disk.
|
|
|
|
|
Thanks Alan,
1.
So, Dictionary itself does not have any special memory limitations and rely on OS correct?
2.
Could you help to provide or recommend some pseudo code which read a full image into memory and store it in memory or byte[] please?
regards,
George
|
|
|
|
|
|
Thanks Alan!
The link in 2 you recommended is for BMP file, I am working on non-BMP file.
Actually I do not care about the specific file format, I just care about how to read the whole content of a binary file into memory, something like this.
Any ideas or sample recommendations?
regards,
George
|
|
|
|
|
It will work for any file type supported by .NET: .bmp, .jpg, .png, .gif, .tif. They all produce a Bitmap structure in memory. The extension tells .NET what file type it is.
|
|
|
|
|
Thanks Alan!
1.
But it does not work for arbitrary file type, like Word and ppt, correct?
2.
Currently, if I do not care about the content of the file, I think I could use the following method to read all content of a image into memory, correct?
byte[] imageData = System.IO.File.ReadAllBytes(filePath);
regards,
George
|
|
|
|
|
1. Correct; just the types supported by .NET.
2. Yes.
|
|
|
|
|
I think you need to read about the concepts of memory management in operating systems, especially about Virtual Memory[^] - there's no connection between a data structure and virtual memory. And thinking about using the full address space of a process is always a very bad idea
regards
modified 12-Sep-18 21:01pm.
|
|
|
|
|
Thanks Greeeg,
1.
It is good to know there is no special limitation of Dictionary itself -- previous I suspect whether Dictionary has special size limitation over OS, e.g. it has a hard coded value 1G size limitation. Good to know there is no such limitation.
2.
I have searched for quite some time to find an easy to learn intuitive sample about how to get the full content of image from physical file into memory, and then make it into disk. Do you have any pseudo code or recommend some samples?
regards,
George
|
|
|
|
|
George_George wrote:
I have searched for quite some time to find an easy to learn intuitive sample about how to get the full content of image from physical file into memory, and then make it into disk. Do you have any pseudo code or recommend some samples?
You can use a FileStream to read the bytes of the image into a byte array and use Image.FromStream() to convert the bytes into an actual Image object.
You can also use the byte array to save it back to the file, a database or whatever you wish.
regards
modified 12-Sep-18 21:01pm.
|
|
|
|
|
Thanks Greeeg,
1.
If I want to use FileStream and read all content of a image file into memory, I want to choose the solution to keep the image in the form of byte[], becaue this solution is extensible to store other type of files, like Word/Excel/etc.
2.
Which API could be used to read the content of all binary file into memory? In my experience, I just read file line by line.
Any hints?
regards,
George
|
|
|
|
|
George_George wrote: Could Dictionary use virtual memory?
All memory that you use is virtual. You don't know if and where in the physical memory the data is loaded.
George_George wrote: Are there an easy to use sample which just convert image file into memory stream or byte[]?
Why don't you store the Image objects in the Dictionary?
Despite everything, the person most likely to be fooling you next is yourself.
|
|
|
|
|
Thanks Guffa!
Guffa wrote: Why don't you store the Image objects in the Dictionary?
Because I want to make my code transparent and suitable for all situations, e.g. in the future I may use the same code to store Word and Excel files.
I have searched for quite some time to find an easy to learn intuitive sample about how to get the full content of image from physical file into memory, and then make it into disk. Do you have any pseudo code or recommend some samples?
regards,
George
|
|
|
|