|
Ya that article sounds intersting!!!
How should be your app working ? Like the user can change the language at any point of time is it ??
Sathy
|
|
|
|
|
I have two options.
1. Read the users current culture options at program startup.
2. Let the user choose culture and reboot the program.
_____________________________
...and justice for all
APe
|
|
|
|
|
the easiest way is using resource files and then option 1 will be handled automagically if you set it up right.
I worked on a project nearly 10 years ago which used VB6 and we created a table in the application database that stored the language the labelname, the formname and the translation.
In the form load event we called a TranslateLabels function and passed me (this) as a parameter. As we were doing this to every form i think we kept the recordset of data for the current country in memory. If the user switched languages while the app was running we reloaded the data for the new language, looped through the collection of open forms and passed them back into the TranslateLabels function. Messageboxes etc were translated by a translatestring function that was also on the object.
Russ
|
|
|
|
|
So I have to create one resource file for each language?
I have a lot of assamblies. Do I have to create multiple .resx files in each assembly?
_____________________________
...and justice for all
APe
|
|
|
|
|
http://msdn2.microsoft.com/en-us/library/1021kkz0(VS.80).aspx[^]
That's got a lot of info from MS on how to go about things.
AFAIK you would have to have multiple resx files per assembly but if the output of an assembly is never going to be displayed to the user then the default would be all that was required.
Russ
|
|
|
|
|
I am sure I am missing something basic about how remoting works.
For starters I just wanted to see if I can share some data, but for some reason, the client only sees its own changes, and the server accordingly. With this code, the server always gets the output "Server", and the Client first "Start" and then "Client"
The connection is there, if I close the server, the client produces a socket error, and the Write method is printed on the server window.
//------------------------------------
//Remote Object:
//------------------------------------
using System;
namespace RemoteTestObj
{
public class cRemotableObject : MarshalByRefObject
{
public string test = "Start";
public void Write(string pText)
{
Console.WriteLine(pText);
}
}
}
//------------------------------------
//Server:
//------------------------------------
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
using RemoteTestObj;
namespace RemoteTestServer
{
class Program
{
static void Main(string[] args)
{
cRemotableObject remoteObject = new cRemotableObject();
TcpChannel channel = new TcpChannel(8080);
ChannelServices.RegisterChannel(channel, false);
RemotingConfiguration.RegisterWellKnownServiceType(typeof(cRemotableObject), "Test1", WellKnownObjectMode.Singleton);
remoteObject.test = "Server";
Console.WriteLine(remoteObject.test);
Console.ReadLine();
Console.WriteLine(remoteObject.test);
Console.ReadLine();
}
}
}
//------------------------------------
//Client
//------------------------------------
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
using RemoteTestObj;
namespace RemoteTestClient
{
class Program
{
static void Main(string[] args)
{
TcpChannel Channel = new TcpChannel();
ChannelServices.RegisterChannel(Channel, false);
cRemotableObject remoteObject = (cRemotableObject)Activator.GetObject(typeof(cRemotableObject), "tcp://localhost:8080/Test1");
Console.WriteLine(remoteObject.test);
remoteObject.Write("test");
Console.ReadLine();
remoteObject.test = "Client";
Console.WriteLine(remoteObject.test);
Console.ReadLine();
}
}
}
Does anyone know how to change it, so that both client and server always have the same data in the string test ?
Thanks, Eike
|
|
|
|
|
What book or tutorial are you using for learning remoting? What previous experience do you have with other forms if interprocess communications?
You don't make the singleton object in your server, the remoting framework controls that. Therefore in your server code you are creating a different instance than the one the client code is communicating with since it uses the framework to access the remote object. Your server code bypasses the framework and creates it's own instance that the framework knows nothing about.
namespace RemoteTestServer
{
class Program
{
static void Main(string[] args)
{
cRemotableObject remoteObject = new cRemotableObject();
led mike
|
|
|
|
|
Thanks, so then I need a reference to the instance that the client connects to, but how do I get that ?
|
|
|
|
|
Eike Mueller wrote: but how do I get that ?
The same way the client does of course.
"All other things being equal, the simplest solution is the best." - Occam's razor[^]
led mike
|
|
|
|
|
Ahh, ok thanks, that works, I changed this in the server
static void Main(string[] args)
{
TcpChannel channel = new TcpChannel(8080);
ChannelServices.RegisterChannel(channel, false);
RemotingConfiguration.RegisterWellKnownServiceType(typeof(cRemotableObject), "Test1", WellKnownObjectMode.Singleton);
cRemotableObject remoteObject = (cRemotableObject)Activator.GetObject(typeof(cRemotableObject), "tcp://localhost:8080/Test1");
And in the remote object I increased the lease time, so it doesn't lose the values every few minutes.
//100min lease time
public override Object InitializeLifetimeService()
{
System.Runtime.Remoting.Lifetime.ILease lease = (System.Runtime.Remoting.Lifetime.ILease)base.InitializeLifetimeService();
if (lease.CurrentState == System.Runtime.Remoting.Lifetime.LeaseState.Initial)
{
lease.InitialLeaseTime = TimeSpan.FromMinutes(100);
lease.SponsorshipTimeout = TimeSpan.FromMinutes(2);
lease.RenewOnCallTime = TimeSpan.FromSeconds(100);
}
return lease;
}
btw. would there be any problem with using unlimited lease time ?
//unlimited lease time
//public override Object InitializeLifetimeService()
//{
// return null;
//}
|
|
|
|
|
Eike Mueller wrote: btw. would there be any problem with using unlimited lease time ?
I don't know but if there is I would expect the documentation to address that.
led mike
|
|
|
|
|
I have a WinForm program.
it's "main" method has a parameter(string[]).
I want to startup it by another program.
I code
"Process.Start(@"D:\Program Files\Tencent\QQ\BugReport.exe", "message");",
but failed.
|
|
|
|
|
Hello!
Try this:
"Process.Start(@"D:\Program Files\Tencent\QQ\BugReport.exe message1 message2);"
or
"Process.Start(@"D:\Program Files\Tencent\QQ\BugReport.exe message1,message2);"
And what is the type of "message", it should be string[] as well!
Regards,
Adeel
Do rate the reply, if it helps or even if it doesnot, because it helps the members to know, what solved the issue. Thanks.
|
|
|
|
|
Report Win32Exception:"System not find appointed file"
|
|
|
|
|
Is the exe file present at the path??
Do rate the reply, if it helps or even if it doesnot, because it helps the members to know, what solved the issue. Thanks.
|
|
|
|
|
"Process.Start(@"D:\Program Files\Tencent\QQ\BugReport.exe message1,message2);"
and
"Process.Start(@"D:\Program Files\Tencent\QQ\BugReport message1,message2);"
is same Exception.
the path is right.
|
|
|
|
|
do you have the code of BugReport?
Do rate the reply, if it helps or even if it doesnot, because it helps the members to know, what solved the issue. Thanks.
|
|
|
|
|
yes.
method1:
string msg = "message";
Process.Start(@"E:\Projects\BugReport\BugReport\bin\Debug\BugReport.exe", msg);
method2:
Process.Start(@"E:\Projects\BugReport\BugReport\bin\Debug\BugReport.exe", "message");
method3:
StringBuilder sb = new StirngBuilder();
foreach(string msg in messages)
{
sb.AppendLine(msg);
}
Process.Start(@"E:\Projects\BugReport\BugReport\bin\Debug\BugReport.exe", sb.toString());
method1 and method2 are right,but mehtod3 is failed.
why?
|
|
|
|
|
I suppose, you do have the code for that!
in BugReport's main function, remove the string[] parameter:
use this to get the parameters, and args will get aal the stuff you send to it:
string[] args = Environment.GetCommandLineArgs();
after that, do whatever you want to do with it!!
PS: you will definitly like to add some exception handling, you can do that in static main() function(usually in program.cs file), for better manageability.
Hope hat helps!
Regards,
Adeel
Do rate the reply, if it helps or even if it doesnot, because it helps the members to know, what solved the issue. Thanks.
|
|
|
|
|
|
Hi all,
i am trying to generate an ExcelSheet in Asp.net (using C#).
I have declared the excel oblect on server.
My Problem is that the code written do well when i execute web page on file system.
But when on HTTP it does't generate the excel sheet.
Though i have noticed that the TaskManager show there is a process running for Excel every time i run the page but the Excel sheet is never generated.
I have alredy custmized the Launch And Activation Properties of Excel by using Dcom Config using component services.
Any Help will be appreciated
|
|
|
|
|
Provide some code, it is anyone's guess how you are working with the excel object...
"I guess it's what separates the professionals from the drag and drop, girly wirly, namby pamby, wishy washy, can't code for crap types." - Pete O'Hanlon
|
|
|
|
|
has anyone done this before? i have a mdi c# app and each child form has 3 tabs. i would like to embed an ms word doc in one of the tabs. itmfg (i've tried my friend google) but didn't find much. anyone can point me to good resource? tia.
I am a SysAdmin, I battle my own daemons.
|
|
|
|
|
Hello!
I think "tia" is "Thanks In Advance"!
And secondly, you need to know the version of the Word, because it works differently for Word 2003 & Word 2007 (same goes for MS Office 2003 & MS Office 2007).
Lastly, when you know what version you desire, tufg (try your friend google ) with "Office document viewer .net", you will find something to work on!
Regards,
Adeel
Do rate the reply, if it helps or even if it doesnot, because it helps the members to know, what solved the issue. Thanks.
|
|
|
|
|
Finaly, I search a little bit more because i got an error but it was :
System.Diagnostics.Process.Start(@"c:\program files\microsoft office\office11\excel.exe");
Thanks you a lot and its was a pleasure to talk with you!!
Bye, good evening!
Pascal Gosselin
|
|
|
|