|
Does the exception not give a class and line number?
Normally the Exception.ToString() lists the Exception.StackTrace, which gives this.
You should never use standby on an elephant. It always crashes when you lift the ears. - Mark Wallace
C/C++ (I dont see a huge difference between them, and the 'benefits' of C++ are questionable, who needs inheritance when you have copy and paste) - fat_boy
|
|
|
|
|
thanks a lot for your help.i've found the error...
public int getRequestedFunctionID(string strFunctCode)
{
SQLiteCommand SQLComm;
SQLiteDataReader sqlDR = null;
int intFuncNameID = 0;
string strSQL = "SELECT FuncNameID " +
"FROM tblFuncName WHERE FunctCode = '" + strFunctCode + "'";
try
{
cnn = new SQLiteConnection(strConn);
cnn.Open();
SQLComm = new SQLiteCommand(strSQL, cnn);
sqlDR = SQLComm.ExecuteReader();
sqlDR.Read();
if (sqlDR.HasRows)
{
intFuncNameID = Convert.ToInt32(sqlDR["FuncNameID"]);
}
}
catch
{
intFuncNameID = 100;
}
finally
{
sqlDR.Dispose();
cnn.Close();
}
return intFuncNameID;
}
this is where the error is coming from...can you tell me what's the problem with this code?thanks again...
by the way, i'm calling that function in the main module..like so..
int intFunctID = cProc.getRequestedFunctionID(strFunctCode);
modified on Wednesday, April 21, 2010 4:58 AM
|
|
|
|
|
Ice_Freez05 wrote: what can i do if the function returns a null or 0 value?
Either change the method you are calling, or check for null returns and behave appropriately!
It is perfectly valid to return a null; many methods do when they have no data to return. It is always worth checking for - there is very little performance overhead, and it saves a lot of hassle for everybody.
Unless the guy who wrote the class didn't mention it in the documentation, in which case: hit him! (Then check for nulls anyway...)
You should never use standby on an elephant. It always crashes when you lift the ears. - Mark Wallace
C/C++ (I dont see a huge difference between them, and the 'benefits' of C++ are questionable, who needs inheritance when you have copy and paste) - fat_boy
|
|
|
|
|
i'm sorry...my mistake...the problem is not the function returning a null or zero value. i've pasted the code above your reply.can you please help me figured out the problem...thanks again..
|
|
|
|
|
Before we get to the problem, a couple of things!
Firstly, when you post a code fragment, use the "code block" wdiget - it preserves teh formatting and makes it easier to read, like this:
public int getRequestedFunctionID(string strFunctCode)
{
SQLiteCommand SQLComm;
SQLiteDataReader sqlDR = null;
int intFuncNameID = 0;
string strSQL = "SELECT FuncNameID " +
"FROM tblFuncName WHERE FunctCode = '" + strFunctCode + "'";
try
{
cnn = new SQLiteConnection(strConn);
cnn.Open();
SQLComm = new SQLiteCommand(strSQL, cnn);
sqlDR = SQLComm.ExecuteReader();
sqlDR.Read();
if (sqlDR.HasRows)
{
intFuncNameID = Convert.ToInt32(sqlDR["FuncNameID"]);
}
}
catch
{
intFuncNameID = 100;
}
finally
{
sqlDR.Dispose();
cnn.Close();
}
return intFuncNameID;
}
Secondly, don't do DB access like that - always use parameterised queries. They help to make the code more readable, and remove the chances for a SQL Injection Attack.
cnn = new SQLiteConnection(strConn);
cnn.Open();
string strSQL = "SELECT FuncNameID FROM tblFuncName WHERE FunctCode = @FC";
SQLComm = new SQLiteCommand(strSQL, cnn);
SQLComm.Parameters.AddWithValue("@FC", strFunctCode);
sqlDR = SQLComm.ExecuteReader();
Thirdly, don't use anonymous exceptions unless you document well why it shoudl be anonymous! Why not? Because when an exception occurs, it is really handy to know why it happened, so that a problem can be averted... At the least, explain why you can ignore the error, if any.
OK, your problem:
There are three ways that the method can return zero:
1) If strFunctCode does not exist in the DB. The reader will then return with no rows, and the value given when intFuncNameID was declared will be returned.
2) If strFunctCode exists in the DB, but has an FuncNameID of zero.
3) If strFunctCode is not what you think it is...
Add some logging: If necessary put
if (intFuncNameID == 0)
{
LogToSomewhereTheDBIfNecessary(strFunctCode, sqlDR["FuncNameID"], "It returns zero!");
}
Immediately before the return statement. (Obviously, that code won't work since sqlDR is out of scope, but you get the general idea...)
You should never use standby on an elephant. It always crashes when you lift the ears. - Mark Wallace
C/C++ (I dont see a huge difference between them, and the 'benefits' of C++ are questionable, who needs inheritance when you have copy and paste) - fat_boy
|
|
|
|
|
thanks a bunch for your help and detailed explanation.;)
|
|
|
|
|
hello every one i am doing a project on jpeg..
please tell me how to free a variable in C#.
please tell me a code which will reinitialize variable value to zero.
or free the memory allocated for a variable just like free() in C.
|
|
|
|
|
.Net (and in your particular case C#) does autmatically memory management. There is a component called Garbage Collector that handles memory related stuff. This garbage collector (GC) releases the memory of an object if it determines that tha object will not be used anymore. In other words you should not worry about memory allocation an freeing.
As an alternative you could use the managed language in an unmanaged manner (which is not encouraged) with the unsafe keyword.
There are a couple of articles on CP with this unmanaged stuff, like Unmanaged Arrays in C# - No Problem[^].
I have no smart signature yet...
|
|
|
|
|
ya i know GC releases memory.
but in case of prog first picture is being compressed with no prob but from 2nd on i am getting high distortion in terms of color.
there are lot of static arrays in prog i think the values from prev pic is causing the porb. is there any effiecient method that will set array value to ZERO w/o using loop.
|
|
|
|
|
System.Array.Clear will work for value types. If you have a reference types (ie. an array of classes) the previous method will set all the elements to null.
Check out this reference[^].
I have no smart signature yet...
|
|
|
|
|
try using .dipose()...good luck...
|
|
|
|
|
It depends on what the variable is:
If it is a value type, then to zero it, assign zero to it:
int i = 0;
If it is a reference type, then is gets more complex. If it implements the IDisposable interface, then it makes some sense to zero it by calling Dispose() - however, this alone will not free memory. However, it is very good practice to use Dispose() (or a using block) where possible to minimize the drain on system resources.
The only way to truly free the memory used by a variable is to remove all references to to it, and allow the garbage collector to do its' thing. This means setting all references to the variable to null, or allowing them to go out of scope.
Unlike C, you have little direct control over memory use in C# - by design, as it is intended that you "can't get the memory leak problems" that C and C++ exhibit. I promise not to laugh at this point...
You should never use standby on an elephant. It always crashes when you lift the ears. - Mark Wallace
C/C++ (I dont see a huge difference between them, and the 'benefits' of C++ are questionable, who needs inheritance when you have copy and paste) - fat_boy
|
|
|
|
|
hi,
i am trying to send multiple sms one after one programatically using skype api with c# language.
my code is
--------------
for (int i = 0; i <= arr.Count - 1; i++)
{
SKYPE4COMLib.SkypeClass oSms = new SKYPE4COMLib.SkypeClass();
oSms.SendSms(arr[i].ToString(), strMsg, "");
System.Threading.Thread.Sleep(60000);
oSms = null;
}
so i am trying to send multiple sms in loop one after one but the problem is after sending two sms one error message i am getting and the error is
SMS: CREATE SMS takes a list of phone numbers.
so i just do not understand what is wrong is there in my code.
so please help me to fix this error as a result i can send the same text message to many person one after one from my c# code.
awaiting for ur answer..........
thanks in advance.
tbhattacharjee
|
|
|
|
|
hi,
i want to add auto update feature in my app..which is the best way?
|
|
|
|
|
Deploying it by using ClickOnce allows you to have your application check for updates. That's one way of doing it (though I'm not gonna say for sure that it's the best ).
|
|
|
|
|
I our product needs hardware protection level ... we are planned use dongle protection level . now we was purchase HASP device ..
We was get serial no of storage device USB using WMI ( PNPdevice Id), its unique for all system . But these same device id not gave unique for all system in Aladdin HASP device .... its correct way for secure protect using dongle .... or want use another way for these scenario .... if u have any idea related these please share with us...
Thank you...
|
|
|
|
|
try to get process id and insert it into your program
EASY COME EASY GO
|
|
|
|
|
Follow the HASP API documentation. If I remember correctly, there should be a function to retrieve the dongle HASP ID or some other way to identify that it is indeed your product's dongle.
To secure your product with the dongle, the best strategy is to use the dongle to store or encrypt part of your product's code or a critical data file. Do as little validation on the decrypted code/data as you can in order to prevent an attacker from being able to reconstruct what the code or data should be.
|
|
|
|
|
Hi,
I've created the following code:
AutoResetEvent CheckQ = new AutoResetEvent(false);
public void Q_Insert( QEntry entry )
{
lock( My_Q )
{
My_Q.Enqueue( entry );
CheckQ.Set();
}
}
public QEntry Q_Pop()
{
lock ( My_Q )
{
if( My_Q.Count > 0 )
return (QEntry) My_Q.Dequeue();
}
CheckQ.Reset();
CheckQ.WaitOne();
lock ( My_Q )
{
if( My_Q.Count > 0 )
return (QEntry) My_Q.Dequeue();
}
}
Basically, if there is nothing in the queue, it will just wait until something comes into the queue.
However, my code never wakes up from CheckQ.WaitOne even though CheckQ.Set() was called. I later check the Handle ID in "CheckQ" from both function Q_Insert and Q_Pop, found out that the same variable has different Handle IDs ( as well as WaitHandle ID ) in 2 different functions. That might be the reason that WaitOne never wakes up, but my question is: how did this happen ? I only created one variable CheckQ in the file. I am so puzzled. Really appreciated if someone can explain this. Thanks in advance !
|
|
|
|
|
Assuming you have two or more threads (and probably a multi-core CPU), where one thread is doing one or more Inserts, another thread trying one or more Pops, you may end up in a situation where:
1. inside Pop, the first lock finds no entries
2. then Insert() gets the lock, inserts, and sets CheckQ
3. only now Pop resets CheckQ and waits forever
solution:
either put the CheckQ.Reset() inside the existing lock
or, much better, use an AutoResetEvent rather than a ManualResetEvent
|
|
|
|
|
I a trying to have a hashtable class to populate all the variables from my database to be saved and used in my application as public variables.
this is my public class
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
namespace cure_hospital_management
{
class public_class
{
public Hashtable _sysem_parameters_hash;
public void get_system_parameters()
{
_sysem_parameters_hash = new Hashtable();
_sysem_parameters_hash.Add("Name", "Jassim Rahma");
}
}
}
In my MainFom_Load I am calling:
public_var.get_system_parameters();
public_var._sysem_parameters_hash.Add("Age", "36");
then I am trying to read the hashtable value like this:
MessageBox.Show(public_var._sysem_parameters_hash("Name").ToString());
but getting this error on the reading line (the MessageBox):
System.NullReferenceException was unhandled by user code<br />
Message="Object reference not set to an instance of an object."<br />
Source="cure"<br />
StackTrace:<br />
at cure_hospital_management.frmDoctorDashboard.frmDoctorDashboard_Load(Object sender, EventArgs e) in C:\Users\Jassim\Documents\Visual Studio 2008\Projects\Cure\Cure\doctor_dashboard.cs:line 2050<br />
at System.EventHandler.Invoke(Object sender, EventArgs e)<br />
at System.Windows.Forms.Form.OnLoad(EventArgs e)<br />
at System.Windows.Forms.Form.OnCreateControl()<br />
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)<br />
at System.Windows.Forms.Control.CreateControl()<br />
at System.Windows.Forms.Control.WmShowWindow(Message& m)<br />
at System.Windows.Forms.Control.WndProc(Message& m)<br />
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)<br />
at System.Windows.Forms.ContainerControl.WndProc(Message& m)<br />
at System.Windows.Forms.Form.WmShowWindow(Message& m)<br />
at System.Windows.Forms.Form.WndProc(Message& m)<br />
at DevExpress.XtraEditors.XtraForm.WndProc(Message& msg)<br />
at cure_hospital_management.frmDoctorDashboard.WndProc(Message& m) in C:\Users\Jassim\Documents\Visual Studio 2008\Projects\Cure\Cure\doctor_dashboard.cs:line 84<br />
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)<br />
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)<br />
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)<br />
at DevExpress.Utils.Win.Hook.ControlWndHook.CallWindowProc(IntPtr pPrevProc, IntPtr hWnd, Int32 message, IntPtr wParam, IntPtr lParam)<br />
at DevExpress.Utils.Win.Hook.ControlWndHook.WindowProc(IntPtr hWnd, Int32 message, IntPtr wParam, IntPtr lParam)<br />
at System.Windows.Forms.UnsafeNativeMethods.IntCreateWindowEx(Int32 dwExStyle, String lpszClassName, String lpszWindowName, Int32 style, Int32 x, Int32 y, Int32 width, Int32 height, HandleRef hWndParent, HandleRef hMenu, HandleRef hInst, Object pvParam)<br />
at System.Windows.Forms.UnsafeNativeMethods.CreateWindowEx(Int32 dwExStyle, String lpszClassName, String lpszWindowName, Int32 style, Int32 x, Int32 y, Int32 width, Int32 height, HandleRef hWndParent, HandleRef hMenu, HandleRef hInst, Object pvParam)<br />
at System.Windows.Forms.NativeWindow.CreateHandle(CreateParams cp)<br />
InnerException:
-- Modified Tuesday, April 20, 2010 7:01 PM
|
|
|
|
|
Done too much VB coding?
MessageBox.Show(public_var._sysem_parameters_hash["Name"].ToString());
FYI: instead of Hashtable, use Dictionary<string, string> and you get rid of all those (string) castings and ToString() conversions.
|
|
|
|
|
jrahma wrote: unresolved hashtable problem
Are't all problems unresolved? once they are resolved, they become references
|
|
|
|
|
|
Ok. I went through the whole thing. So far, someone else hasn't been able to repeat your error. Everytime, binarycoder is answering your specific questions that you ask.
Could you post your complete code that shows error? If it shows error then it can be solved. May be some mistake is happening somewhere.
|
|
|
|
|