|
hi,
i have made a service wich loads a another program ,my codes are correct but when i use these codes in my service,they dont work.
here is my codes:
<br />
System.IO.Directory.SetCurrentDirectory(myappPath);<br />
Process.Start("MyApplication" );<br />
i want to know why it happens?
|
|
|
|
|
What does not work?
Does the application not start? Have you checked with the TaskManager if it really does not start or is it started and you can't just see it?
Normally, a service application cannot interact with the desktop. Because of that, if you start an application from a service, the application will not be visible to the user.
To allow a service to interact with the desktop open the Service Control Manager. Select your service and open the properties.
- Select the "Log On" tab
- Select "Log on as: Local System account" and enter a valid account and password
- Check "Allow service to interact with desktop.
hth
Claudio
Claudio's Website
Hommingberger Gepardenforelle
|
|
|
|
|
Hi folks,
I need to write a piece of code that will list all the files in a folder in another machine.
Could you guys give me a hint?
Thanks.
|
|
|
|
|
you can set up the sharing on the another computer and access the directory directly using System.IO.Directory or make some sort of simple service which will send the data on request via tcp/ip protocol.
|
|
|
|
|
1.Value types are allocated on stack and Reference types are allocated on heap,managed by garbage collector.
if reference type contains value type as a member,where does meomory allocated for value types?
eg: class employee
{
int i; //stack or heap? or some boxing?
}
2.Value types are initialized to zero or null. does reference type member variables are initialized to zero or null?
Thanks
Viny.
|
|
|
|
|
vchedalla wrote:
if reference type contains value type as a member,where does meomory allocated for value types?
On the heap with the rest of the reference type.
The idea that value types are always created on the stack is not correct. If you have a method that creates a value type as part of its operation then it will be created on the stack, when the method ends it will be removed from the stack, along with everything else that was created on the stack during the method - and that includes any references to objects (NOTE: not the actual object - that will be done by the garbage collector if there are no other references to the object)
When a value type is a member variable of an object then it will be placed on the heap as it would not be logical to put it on the stack. A stack, as the name suggests, is built up as values are placed on it, and brought down as they are removed. You cannot remove a value from the middle of the stack.
vchedalla wrote:
Value types are initialized to zero or null. does reference type member variables are initialized to zero or null?
Value types cannot be initialised to null, but they can be initialised to some default value (like 0). Reference types are initialised to null.
My: Blog | Photos | Next SQL Presentation
WDevs.com - Open Source Code Hosting, Blogs, FTP, Mail and More
|
|
|
|
|
i have a remote control, whose sensor is attached to the serial port. I would like to know how to use the serial port in .NET so i can create custom applications for the remote....
|
|
|
|
|
|
myCommand = new SqlCommand("INSERT INTO CES VALUES('"+(textBox1.Text)+"',"+
(textBox2.Text)+",'"+
(textBox3.Text)+"',"+
(textBox4.Text)+",'"+
(textBox5.Text)+
"','"+(textBox6.Text)+"','"+
(comboBox1.Text)+"',"+
(comboBox2.Text)+","+
(comboBox3.Text)+","+
(comboBox4.Text)+")"
,Form1.myConnection);
The problem is when I executed it , sometimes it throws an exception because of parameter missmatch...What I want is , I want to know which part of the command throws that exception.. Does anyone has any idea how to locate it?
Why I want is :
for example , if textBox1 has the problem the user can correct the wrong value of the field without entering all the values the other fields has..
|
|
|
|
|
The way you do it is just plain bad.
What if the user types in a value that contains an '??? It will crash right away. You need some validation. You should also make use of SqlParameter.
|
|
|
|
|
I have some validations...It is not the problem for me.. The code is just an example..
|
|
|
|
|
Ok.
Use SqlParameter, it is much more efficient than adding all the values to a string. It should solve your problem.
|
|
|
|
|
Then demonstrate how to do it the right way. Use the SqlParameter class. It'll take care of escaping the things that need to be, defend against a good number of SQL injection attacks and also makes it easier to find out where your problem is.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Tuğbay wrote:
I have some validations...It is not the problem for me..
You should use parameterised queries as a matter of course. Injecting values into a SQL String like this is not acceptable in today's security aware world.
See this article[^] which explains the security issues with the way you are doing this and gives an example of moving from this injection based way to using parameterised queries.
As a general bit of advice. If you are getting a syntax error and you need help on a forum you need to post the exact code that caused the syntax error and the syntax error itself. In this case you need to post the result of the string concatenations as it is quite difficult to tell from just the C# code alone.
My: Blog | Photos | Next SQL Presentation
WDevs.com - Open Source Code Hosting, Blogs, FTP, Mail and More
|
|
|
|
|
Ok , this time I think it is a logic error r smth... her eis the full code:
private void Tamam_Click(object sender, System.EventArgs e)
{
SqlCommand myCommand = null;
myCommand = new SqlCommand("INSERT INTO CES VALUES(@i_cesit,@i_uzunluk,@i_capı,@i_uzunlugu,@i_kavisi,@arayuz,@kod,@stok,@g_fiyat,@s_fiyat)",Form1.myConnection);
try
{
myCommand.Parameters.Add("@i_cesit",SqlDbType.VarChar);
myCommand.Parameters["@i_cesit"].Value = ıplık_cesıtı.Text;
myCommand.Parameters.Add("@i_uzunluk",SqlDbType.Int);
myCommand.Parameters["@i_uzunluk"].Value = ıplık_capı.Text;
myCommand.Parameters.Add("@i_capı",SqlDbType.VarChar);
myCommand.Parameters["@i_capı"].Value = ıplık_capı.Text;
myCommand.Parameters.Add("@i_uzunlugu",SqlDbType.Int);
myCommand.Parameters["@i_uzunlugu"].Value = (ıgne_uzunlugu.Text);
myCommand.Parameters.Add("@i_kavisi",SqlDbType.VarChar);
myCommand.Parameters["@i_kavisi"].Value = ıgne_kavısı.Text;
myCommand.Parameters.Add("@arayuz",SqlDbType.VarChar);
myCommand.Parameters["@arayuz"].Value = ara_yuzu.Text;
myCommand.Parameters.Add("@kod",SqlDbType.VarChar);
myCommand.Parameters["@kod"].Value = urun_kodu.Text;
myCommand.Parameters.Add("@stok",SqlDbType.Int);
myCommand.Parameters["@stok"].Value = (stok_mıktarı.Text).ToString();
myCommand.Parameters.Add("@g_fiyat",SqlDbType.Float);
myCommand.Parameters["@g_fiyat"].Value = (bırım_fıyatı.Text);
myCommand.Parameters.Add("@s_fiyat",SqlDbType.Float);
myCommand.Parameters["@s_fiyat"].Value =(bırım_fıyatı.Text); myCommand.ExecuteNonQuery();
}
catch (Exception a)
{
MessageBox.Show(a.ToString());
}
}
It keeps giving an error like :
"System.FormatException: Input string was not in a correct format.
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream)
at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
at CES.urun.Tamam_Click(Object sender, EventArgs e) in c:\documents and settings\şirin baba.aikanaro.002\desktop\ces\urun.cs:line 587"
o.k , what can be the problem , according to the articles found in net , there is nor mistake.. Has any one any idea?
Thanks a lot..
|
|
|
|
|
While I've never come across that error inside ExecuteNonQuery, I'm going to guess that the reason is because you have declared a parameter as one type and then passed a value of a different type. For example:
myCommand.Parameters.Add("@s_fiyat",SqlDbType.Float);
myCommand.Parameters["@s_fiyat"].Value =(bırım_fıyatı.Text);
Here you have declared the parameter @s_fiyat as a float, but then you pass a string as the actual value. You need to pass a float or double in that case.
My: Blog | Photos | Next SQL Presentation
WDevs.com - Open Source Code Hosting, Blogs, FTP, Mail and More
|
|
|
|
|
You're trying to assign a Text (String) value to an Sql Int type several times. Your bad lines are in bold:
myCommand.Parameters.Add("@i_cesit",SqlDbType.VarChar);
myCommand.Parameters["@i_cesit"].Value = ıplık_cesıtı.Text;
myCommand.Parameters.Add("@i_uzunluk",SqlDbType.Int);
myCommand.Parameters["@i_uzunluk"].Value = ıplık_capı.Text;
myCommand.Parameters.Add("@i_capı",SqlDbType.VarChar);
myCommand.Parameters["@i_capı"].Value = ıplık_capı.Text;
myCommand.Parameters.Add("@i_uzunlugu",SqlDbType.Int);
myCommand.Parameters["@i_uzunlugu"].Value = (ıgne_uzunlugu.Text);
myCommand.Parameters.Add("@i_kavisi",SqlDbType.VarChar);
myCommand.Parameters["@i_kavisi"].Value = ıgne_kavısı.Text;
myCommand.Parameters.Add("@arayuz",SqlDbType.VarChar);
myCommand.Parameters["@arayuz"].Value = ara_yuzu.Text;
myCommand.Parameters.Add("@kod",SqlDbType.VarChar);
myCommand.Parameters["@kod"].Value = urun_kodu.Text;
myCommand.Parameters.Add("@stok",SqlDbType.Int);
myCommand.Parameters["@stok"].Value = (stok_mıktarı.Text).ToString();
myCommand.Parameters.Add("@g_fiyat",SqlDbType.Float);
myCommand.Parameters["@g_fiyat"].Value = (bırım_fıyatı.Text);
myCommand.Parameters.Add("@s_fiyat",SqlDbType.Float);
myCommand.Parameters["@s_fiyat"].Value =(bırım_fıyatı.Text);
myCommand.ExecuteNonQuery();
You also don't need parenthesis arounf any of these identifiers either. How can you assign .Text values to Integer and Float values? You'll have to convert these strings to their numeric data types as dictated by your parameter requirements before you assign them.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Thank you very much for your help..
|
|
|
|
|
Hi, I wanto to show an datarow in PropertyGrid to edit aplication parameters in database. But this parameters can change in time, so I need to create a class dinamically at runtime an make its intance to show it in PropertyGrid Control, and then pass the chages to the row an then edit to the database.
It this possible? How can I do this?
Thak you!
La realidad no es más que impulsos eléctricos del cerebro - Morpheus
|
|
|
|
|
I find the way:
<br />
private string CreaClase(System.Data.DataRow row)<br />
{<br />
string codigo = @"<br />
using System;<br />
using System.Data;<br />
<br />
namespace miNamespace {<br />
public class miClase {<br />
<br />
public miClase(System.Data.DataRow row)<br />
{<br />
m_Row = row;<br />
";<br />
foreach(System.Data.DataColumn col in row.Table.Columns)<br />
{<br />
codigo += "\t\tif(row[\"" + col.ColumnName + "\"] != DBNull.Value)\n";<br />
codigo += "\t\t{\n";<br />
codigo += "\t\t\tthis." + col.ColumnName + " = (" + col.DataType.UnderlyingSystemType.ToString() + ")row[\"" + col.ColumnName + "\"];\n";<br />
codigo += "\t\t}\n";<br />
}<br />
codigo += "}\n";<br />
foreach(System.Data.DataColumn col in row.Table.Columns)<br />
{<br />
string campo = col.DataType.UnderlyingSystemType.ToString() + " m_" + col.ColumnName;<br />
string propiedad = col.DataType.UnderlyingSystemType.ToString() + " " + col.ColumnName;<br />
codigo += "private " + campo + ";\n";<br />
codigo += @"<br />
public " + propiedad + @"<br />
{<br />
get { return m_" + col.ColumnName + @"; }<br />
set { <br />
m_" + col.ColumnName + @" = value;";<br />
codigo += "m_Row[\"" + col.ColumnName + "\"] = value;";<br />
codigo += @"<br />
}<br />
}<br />
<br />
";<br />
}<br />
<br />
codigo += @"<br />
private System.Data.DataRow m_Row;<br />
public System.Data.DataRow miMethod()<br />
{<br />
return m_Row;<br />
}<br />
<br />
";<br />
codigo +="} }";<br />
<br />
return codigo;<br />
}<br />
<br />
private void CreaObjeto(string codigo)<br />
{<br />
ICodeCompiler compilador = new CSharpCodeProvider().CreateCompiler();<br />
CompilerParameters parametros = new CompilerParameters();<br />
<br />
parametros.ReferencedAssemblies.Add("System.dll");<br />
parametros.ReferencedAssemblies.Add("System.Data.dll");<br />
<br />
parametros.GenerateInMemory = true;<br />
<br />
CompilerResults compilado = compilador.CompileAssemblyFromSource(parametros,codigo);<br />
<br />
if (compilado.Errors.HasErrors) <br />
{<br />
string mensaje = "";<br />
<br />
mensaje = compilado.Errors.Count.ToString() + " Errores:";<br />
for (int x=0;x<compilado.Errors.Count;x++) <br />
mensaje = mensaje + "\r\nLine: " + compilado.Errors[x].Line.ToString() + " - " + <br />
compilado.Errors[x].ErrorText; <br />
<br />
MessageBox.Show(mensaje + "\r\n\r\n" + codigo,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);<br />
<br />
return;<br />
}<br />
<br />
Assembly ensambaldo = compilado.CompiledAssembly;<br />
<br />
this.Objeto = ensambaldo.CreateInstance("miNamespace.miClase",true,BindingFlags.CreateInstance,null,new object[]{this.DS.Tables[0].Rows[0]},System.Globalization.CultureInfo.CurrentCulture,null);<br />
if (this.Objeto == null) <br />
{<br />
MessageBox.Show("No se pudo cargar la clase!.");<br />
return;<br />
}<br />
}<br />
private void frmParametro_Load(object sender, System.EventArgs e)<br />
{<br />
CreaObjeto(CreaClase(this.DS.Tables[0].Rows[0]));<br />
this.propertyGrid1.SelectedObject = this.Objeto;<br />
}<br />
La realidad no es más que impulsos eléctricos del cerebro - Morpheus
|
|
|
|
|
I'm trying to write a multiplayer Pocket PC 2003 game and want to know if anybody knows any good articles or has anything that could help me. I want to be able to build and test using the emulators in visual studio 2003 becuase i don't have easy access to two pocket pcs. is this possible?
i want to get a very simple test ruunning asap. something like being able to pass a value or a text file between two version of a program running on seperate emulators, that would be really handy.
Any help or advice totally welcomed.
Thanks loads,
MH.
|
|
|
|
|
How to get the assembly version in C#? I mean it is easy to get it for the assembly from which the code is executing by using the GetExecutingAssembly(), but how to get it for any other assembly?
Thanks.
|
|
|
|
|
Is the assembly loaded? If so, the current AppDomain should be able to retrieve it using GetAssemblies , in which case you could just check the version property. Otherwise, you could load it using Assembly.Load or Assembly.LoadFrom .
The most exciting phrase to hear in science, the one that heralds the most discoveries, is not 'Eureka!' ('I found it!') but 'That's funny...’
|
|
|
|
|
Exactly my point. Now why in the Earth I need to load the whole assembly to get it version? Seems little bit clumsy, doesn't it?
|
|
|
|
|
|