|
OK, and what exactly is the problem?
|
|
|
|
|
This is one of the most common problems we get asked, and it's also the one we are least equipped to answer, but you are most equipped to answer yourself.
Let me just explain what the error means: You have tried to use a variable, property, or a method return value but it contains null - which means that there is no instance of a class in the variable.
It's a bit like a pocket: you have a pocket in your shirt, which you use to hold a pen. If you reach into the pocket and find there isn't a pen there, you can't sign your name on a piece of paper - and you will get very funny looks if you try! The empty pocket is giving you a null value (no pen here!) so you can't do anything that you would normally do once you retrieved your pen. Why is it empty? That's the question - it may be that you forgot to pick up your pen when you left the house this morning, or possibly you left the pen in the pocket of yesterday's shirt when you took it off last night.
We can't tell, because we weren't there, and even more importantly, we can't even see your shirt, much less what is in the pocket!
Back to computers, and you have done the same thing, somehow - and we can't see your code, much less run it and find out what contains null when it shouldn't.
But you can - and Visual Studio will help you here. Run your program in the debugger and when it fails, it will show you the line it found the problem on. You can then start looking at the various parts of it to see what value is null and start looking back through your code to find out why. So put a breakpoint at the beginning of the method containing the error line, and run your program from the start again. This time, the debugger will stop before the error, and let you examine what is going on by stepping through the code looking at your values.
But we can't do that - we don't have your code, we don't know how to use it if we did have it, we don't have your data. So try it - and see how much information you can find out!
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
Thank you for your detailed reply.
But I did have debugged the code and it breaks at pnlTextbox.Controls.add(txt); under createtextbox function. What I assume is the problem is occurring with the panel ID (pnlTextbox) which contains textbox. The same code when I run without content panel it runs (like if remove content panel and use form1 and body).
|
|
|
|
|
If you use the debug they you either know it is the pnlTextbox that is null, it's Controls collection that is null, or the txt is null.
So take that knowledge back to the debugger, and look at where those values are set - i.e. where they become null - to start looking at why.
Debuggers don't fix code, they let you gather information on why it's wrong, and that lets you fix it.
Saying "this is null" is a symptom, not the disease - and you don't treat symptoms when the disease is what's killing you!
And we can't do that for you - we just don't have any way to run your code under the same circumstances!
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
Solved the issue finally 😅.
Actually the problem was with page_preint event... My master page file contains a content place holder and preint event was generating the Panel ID with ContentPlaceholder1_pnlTextboxes. Issue resolved by shifting the code from preint to page load event. Thanks everyone
|
|
|
|
|
Nine posts to this thread and yet not a single error code as diagnostic.
|
|
|
|
|
You don't get error codes for "object reference not set to an instance of an object".
|
|
|
|
|
Well ... ok, TECHNICALLY you're right. But in defense of ram and cram coders like myself around the world: service visible[^]
"NullReferenceException" would have been more descriptive; if not because it contains quotation marks around the offending sovereign then because any one of us could have responded by dropping a dime on IT using the help documentation of VS thus verifying he had eyeballs in his head.
CP is not a classless society, as Shep surely is aware. 
|
|
|
|
|
Update: revised code to use full Type names, not var; used hard-coded filepath.
Now, in VS 2019 using FW 4.8, File.Create terminates the app with no error message. I tried wrapping the call in a Try/Catch: terminates the app without ever reaching the Catch clause.
Note: i can't find any error reports on the behavior of File,Create described here.
A few years ago, the code shown here was a standard part of the serialization library i wrote, and worked fine. The other part of the library, which uses XML serialization, works without errors.
Note: the code shown compiles, but, fails in the first 'using block. File,Create moved outside the using statement also fails the same way. So, there's nothing specifically GZippy where the code fails.
// reqiured usings
using System.IO;
using System.IO.Compression;
using System.Runtime.Serialization;
public static void GZSerialize<T>(T instance, string baseFolderPath, string filename1)
{
dcs = new DataContractSerializer(typeof(T));
string fullfilename = baseFolderPath + "/" + filename1 + (usegzip + @".gz";
string fullfilename = @"C:\Users\Win-Ten\Desktop\fordata\test4.gz";
using (FileStream compressedFileStream = new FileStream(fullfilename, FileMode.OpenOrCreate, FileAccess.Write))
{
using (GZipStream compressionStream =
new GZipStream(compressedFileStream, CompressionLevel.Optimal, true))
{
dcs.WriteObject(compressionStream, instance);
compressionStream.Close();
}
}
}
«The mind is not a vessel to be filled but a fire to be kindled» Plutarch
modified 8-Mar-22 16:14pm.
|
|
|
|
|
Do you know what the filename is at that point? I'm not sure what you were trying here, but that fullfilename creation line looks dodgy; it could just be the way you entered it here.
You don't need to delete a file before you call File.Create. If you call File.Create on an existing filename, it will overwrite the existing file.
|
|
|
|
|
Hi Pete,
Thanks, I double-checked using a hard-coded file name: same behavior observed; serializing to xml works, to gz closes app.
fyi: in output window after app closed: has exited with code 0 (0x0).
It may interest you to know that the original idea for my library came from code you posted here in 2015 in response to a question on serializing a TreeNode [^] Strange that I can't see your code for serializing on that thread now.
«The mind is not a vessel to be filled but a fire to be kindled» Plutarch
|
|
|
|
|
I've tried your code with a hardcoded path and it works okay for me. The only failure I get is if I write to a protected location, or to a directory that doesn't exist.
|
|
|
|
|
Thanks, Pete,
Since saving XML to the same directory works, I can exclude the possible file errors you mention ... which I'd expect to throw errors.
Here's something really strange: after installing the latest VS 2019 Community update, to Version 16.11.11 ... the code worked once .. after that same behavior as before. Same app opened in VS 2022 latest: same fail.
There's one possible wild-card here i'll test today: PostSharp is installed in this solution (licensed version), although the code I am testing does not use it.
Will start a new solution w/o PostSharp and ReSharper turned off, and re-test.
cheers, Bill
«The mind is not a vessel to be filled but a fire to be kindled» Plutarch
|
|
|
|
|
|
Thanks, Richard, "process corrupted state" reminds me of what I see in the mirror these days
I'm retesting today in a new solution with PostSharp and ReSharper not in use.
«The mind is not a vessel to be filled but a fire to be kindled» Plutarch
|
|
|
|
|
|
Thanks, David,
I think I can exclude that hypothesis based on the fact that using standard DataContract/DataMember serialization to XML to the same folder is reliable.
cheers, Bill
«The mind is not a vessel to be filled but a fire to be kindled» Plutarch
|
|
|
|
|
Ok,
Just keep in mind that Windows Defender now performs behavioral analysis so it might allow certain actions while blocking others.
Good Luck. 
|
|
|
|
|
Thanks, David,
I have checked both Win-Def and EmsiSoft (my active malware filter/firewall), no evidence for this rather improbable scenario.
cheers, Bill
«The mind is not a vessel to be filled but a fire to be kindled» Plutarch
|
|
|
|
|
Alright,
Then you should have no problems determining why your process is exiting. Did you try to attach a debugger? Did you check the event log and get the exit code[^]? Have you tried using Gflags[^]?
The path you gave in your top level post:
string fullfilename = @"C:\Users\Win-Ten\Desktop\fordata\test4.gz"; would be protected by controlled folder access (if enabled).
Best Wishes,
-David Delaune
|
|
|
|
|
@Randor
Thanks to David (aka Randor) !
Well, turns out I did not look deeply enough into the EmsiSoft AV/Firewall records, as David suggested.
Note: size of test file saved as .xml 1017; size saved as .gz 369.
EmsiSoft was quarantining the WinForm app .exe. I set permission for the entire folder containing my C# work in progress ...code works ... ... setting permission for VS 2019 and 2022 had no effect. Why the whole folder ? I was too lazy to set it for one specific project.
Here's what the kinks were:
1. no run-time notification pop-up from EmsiSoft which is normally ... a frequent popper-upper. And, once quarantined, why should the app run partially at all ? I will write about this to them, and, aaso ask them what could happen if I were using GitHub storage.
2. why should standard XML writing:
using (var writer = new FileStream(fullfilename, FileMode.OpenOrCreate, FileAccess.Write
))
{
dcs.WriteObject(writer, instance);
} work, but, why does this:
using (FileStream compressedFileStream = new FileStream(fullfilename, FileMode.OpenOrCreate, FileAccess.Write))
{
using (GZipStream compressionStream =
new GZipStream(compressedFileStream, CompressionLevel.Optimal, false))
{
dcs.WriteObject(compressionStream, instance);
compressionStream.Close();
}
} trigger AV interception ? Is there an MS bug here ?
«The mind is not a vessel to be filled but a fire to be kindled» Plutarch
modified 11-Mar-22 6:08am.
|
|
|
|
|
Happy to see you solved it. 
|
|
|
|
|
@Randor
Well, Sir, i think it is ... You ... who solved it !
But, please indulge my OCD re language: i do consider understanding the source of an anomaly as not equatable with "solved." Yet, it was moi who used thr word "solved: End of rant.
What a wonderful education code that worked for years ... and then, breaks ... can offer
Please come to Chiang Mai asap so i can take you for a scrumptious Thai dinner.
cheers, Bill
«The mind is not a vessel to be filled but a fire to be kindled» Plutarch
modified 12-Mar-22 3:58am.
|
|
|
|
|
Queues:
A queue is a "first in first out" data structure. Inserting elements is called 'enqueuing'.
Removing/deleting elements from a queue is called 'dequeueing'.
If you enqueue (insert) elements in this order, then when you call dequeue, the
first element removed is . The second element would be and so on.
Input:
Each input line will look like one of the following:
E \n
D\n
where is a number that will fit inside int on the server.
Goal:
Maintain a queue of elements. Enqueue elements when input starts with "E". Dequeue when
the input line is "D".
Output:
If the input line said "E ", then enqueue (insert) the number into . No output!
If the input line said "D", then dequeue from and print the number that was dequeued.
If a dequeue was requested on an empty queue, print "Empty".
Terminate all your output lines with \n .
Implementation Rules:
You must use a struct to maintain your queue.
Use convenient typedef(s).
Create supporting functions.
Although in practice, you would create separate header file(s), we require you to put everything
into just one .c file so that our evaluation server can be used.
|
|
|
|
|
You forgot to ask a question. Just posting your homework assignment is kind of useless.
|
|
|
|
|