|
Haha thanks man - maybe "pun" means "get stuffed" in a language I'm yet to hear of? =P
|
|
|
|
|
Have a look at the Graphics.TranslateTransform() method, it will apply a translation (i.e. a shift) to everything you draw later on. Warning: calling it again on the same Graphics works cumulatively.
BTW: for objects that have a Dispose() method you should call that method when you don't need them any more; this is often forgotten for drawing objects such as Pens and Fonts. Alternatively, and better, is not to allocate new objects all the time inside a method that gets called a lot (such as OnPaint). Instead allocate the objects once and keep them around as class members.
Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
|
|
|
|
|
Hello Sir,
How can i use to shift polygon to left side with the help of TranslateTransform.
my polygon program is describe in previous post.
If you can think then I Can.
|
|
|
|
|
Hello,
I am trying to make and c# application using sessions to control the app access, somebady knows how to do it?
Regards.
|
|
|
|
|
Are you sure? Sessions are normally web related, apps are normally PC related.
What are you actually trying to do?
Real men don't use instructions. They are only the manufacturers opinion on how to put the thing together.
Manfred R. Bihy: "Looks as if OP is learning resistant."
|
|
|
|
|
I mean Roles, I want that some users can see an especific window and someone diferente can not do it.
|
|
|
|
|
What ur trying to do?????
If you can think then I Can.
|
|
|
|
|
If it is a web application, take a look at ASP.Net Role provider and Session management.
If this is a windows based application, you will have to do it on your own.
1. Set up the Role table in the database or configuration file (not recommended) as desired.
2. Then set up a Rights table. This table should essentially have the list of operations that can be performed.
3. Now, create a Role_Right_Map table. This will be 1 to many relation table between Role and Rights. This will define which Role can do what.
4. Now set up a user table. This table will have your user credentials and other details.
5. Next, make a Role_User_map. This can be a one to may relation based table between user and role.
Now, you have your setup ready. Next, when the user logs in, check for the role and corresponding rights. Based on that the available functionality will be decided.
As far as session goes, keep track of the login time in some static variable. You will also need one more static variable say activity tracker. If there is no activity done for certain amount of time, log the user out.
Possible problems in doing this:
1. If it is a desktop application with database on the client computer, anyone can make changes to the Roles and Rights. Suggested resolution can be to encrypt data in those tables.
2. User can change the system datetime which will negate all the session management rules you put in. Suggested resolution can be like this: When the user logs in, start a timer in a different thread. Now, reset the timer on every activity. If the timer has ticked for your session value (say 10 mins), log out the user.
|
|
|
|
|
Tell me what you want to do exactly?
Generally sessions are related ASP.NET
Tell me exactly what type of application you wanna create.
|
|
|
|
|
I have the following code (I am learning sockets for the first time):
static void Main()
{
var listener = new TcpListener(IPAddress.Parse("127.0.0.1"), 80);
listener.Start();
bool serverIsOnline = true;
while (serverIsOnline)
{
Console.WriteLine("Polling for a client");
TcpClient client = listener.AcceptTcpClient();
Console.WriteLine("Client {0} has connected", client.Client.RemoteEndPoint);
Console.WriteLine("Handling client");
serverIsOnline = HandleClient(client);
Console.WriteLine("Finished handling client");
Console.WriteLine("Closing client");
client.Close();
}
listener.Stop();
}
private static bool HandleClient(TcpClient client)
{
using(var writer = new StreamWriter(client.GetStream()))
{
writer.WriteLine("Welcome to the system...");
writer.Flush();
}
return true;
}
When I open the browser (firefox and IE) and enter 127.0.0.1 it sometimes displays the welcome message, but it mostly just displays "The connection was reset".
What could be causing this and how would I resolve this issue?
Thanks
modified on Friday, April 8, 2011 10:50 PM
|
|
|
|
|
The reason is that you're closing the connection before all the bytes have been transmitted.
It takes time to transmit the bytes, but you go straight from calling HandleClient to calling client.Close().
Don't explicitly close client connections until you terminate the server program.
The difficult we do right away...
...the impossible takes slightly longer.
|
|
|
|
|
Richard Andrew x64 wrote: calling HandleClient to calling client.Close().
You are completly right, thank you
|
|
|
|
|
Your server isn't a HTTP server, and what you're sending back isn't a valid HTTP header. 'The connection was reset' means that it was closed before a valid header was received (roughly speaking). You need a lower level test client than a browser if you are writing a custom server.
Alternatively, get yourself some HTTP server code (for example, mine[^] ).
|
|
|
|
|
Hi,
I am having issues for a project for work and was wondering if anybody can help me. I am trying to calculate The percentage for refurb for the day. The formula is Refurb_Rate = (totalRefurb / totalUnits * 100) The program is supposed to supposed count the refurb in the db and return a value in a textbox. I initialized my values to 0, but my problem is how do I get it to calculate each time a user scans in a unit to be refurbed. Anything I try to do gives me an error in my program. Right now it's returning a value of of 1 because I added RefurbRate++. Can anyone help me? Thanks.
Justin
Here is what I've done with my code:
private int GetRefurbRate()
{
string sql = "";
int Refurb_Rate = 0;
int totalRefurb = 0;
int totalUnits = 0;
string error_msg = "";
sql = "SELECT COUNT(*) " +
"FROM " + schema + ".repair_part rp " +
"WHERE rp.repair_ord = '" + txtRO.Text + "' ";
while (true)
{
if (!myDb.RunSql(sql, true))
{
error_msg = "DBError for getting Refurb Rate";
break;
}
if (myDb.dbRdr.HasRows)
{
if (myDb.dbRdr.Read())
{
try
{
Refurb_Rate = (totalRefurb / totalUnits * 100);
}
catch (Exception e)
{
Console.WriteLine(e);
}
}
Refurb_Rate++;
}
break;
}
myDb.dbRdr.Close();
if (error_msg != String.Empty)
{
MessageBox.Show(error_msg, "Get Refurb Rate",
MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
return Refurb_Rate;
|
|
|
|
|
|
Anytime I try to make the variables double,, its giving me an error of can't convert int to dbl which I know, but I did not put a stipulation of only int on it; so I do not know why it is telling me that. I'm assuming another programmer put that stipulation somewhere else in the program, but Idk where, and I also do not want to mess up any coding they did.
|
|
|
|
|
please edit your message and use PRE tags for code snippets; it is too hard to read as is.
Justiin1265 wrote: how do I get it to calculate each time a user scans in a unit
what do you mean by scan? is there a bar code reader involved? if so what data is it providing? should that be added to the database too? the situation isn't clear to me at all.
Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
|
|
|
|
|
Yes, a barcode reader is involved, but does not need to be in the db. It is just a tool for users to process units faster. A user would scan in a unit(cable box) and if a part is damaged then it would be refurbed(replaced) and if not a user would enter None(no parts replaced). My formula calculates the toal units refurbed / total units that had a value of none* 100 to get a percentage. My problem is idk how to make the formula constantly change values as the total refurb and total units changes constantly.
|
|
|
|
|
OK. It is a bit clearer now. Still not sure what it is that gets scanned (a serial number? a repair cost label?)
Here is a simple scheme that is bound to work:
- have a class member "int countAccepted", initially zero.
- have a class member "int countRejected", initially zero.
- have an "Accept" button, when clicked it increments countAccepted and calls method Calc().
- have a "Reject" button, when clicked it increments countRejected and calls method Calc().
public void btnAccepted_Clicked(object sender, EventArgs e) {
countAccepted++;
Calc();
}
public void btnRejected_Clicked(object sender, EventArgs e) {
countRejected++;
Calc();
}
public void Calc() {
int totalCount=countAccepted+countRejected;
if (totalCount!=0) {
int rejectedRate=100*countRejected/totalCount;
textBoxAccepted.Text=countAccepted.ToString();
textBoxRejected.Text=countRejected.ToString();
textBoxRejectedRate.Text=rejectedRate.ToString()+" %";
}
}
So the trick here is I'm using two buttons.
If there were a TextBox that accepts the barcode reader's input, then the TextBox.TextChanged event handler would have to update the counters appropriately, then call Calc().
public void BarcodeReaderTextBox_TextChanged(object sender, EventArgs e) {
...
Calc();
}
HTH
Suggestion: if you manage to clearly state your problem in plain English, it will also be easier for yourself to turn it into working code.
Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
|
|
|
|
|
Justin, there are multiple things that mnake no sense to me about this, for example you seem to be doing the same query again and again in a loop and also performing what should be a final calculation within that loop without setting the variables, which I would think (quite apart from being illogical) immediately throws a divide by zero error.
I'm sure we could provide a solution quickly if we could understand what you are trying to do more clearly. Which, in pseudocode, might be something like...
foreach repair_part record where repair_ord = value scanned in by user
increment totalRefurb and totalUnits (based on some fields in repair_part record)
endforeach
Refurb_Rate = totalRefurb / totalUnits
Is that on the right track?
|
|
|
|
|
I'm confused about how to make total units and total refurb values change constantly. That seems to be on the right track I was thinking about putting the formula in a for loop to see if that would work.
|
|
|
|
|
More clarity about how the "change" happens in the figures would be helpful.
For example:
1. Are you tring to update the figures whenever a new item is scanned?, If so you need to catch the scanning event (typically this would be an OnKeyDown or OnTextChanged event in a TextBox somewhere?
2. Are there lots of different places where the figures may change (e.g. the are lots of different people scanning in refurbs in different places) and you want to constantly check the database. If so a solution where you check the database at regular intervals might be better (e.g. use a Timer control and put the code in there).
Without knowing exactly what you are trying to achieve and the thought process behind it, it's difficult to work out the best solution.
|
|
|
|
|
nd am having a problem in my application that ive been able to replicate using the code below.
I want the function TestTimeout to run only at certain times so im using Thread.Sleep(Timeout.Infinite); to stop it.
I'm interrupting the thread using the button below it works once however has no effect afterwards ? What should happen is it should display the message then sleep again until interpreted
private static Thread TimeoutThread;
private void Form1Load(object sender, EventArgs e)
{
var Job = new ThreadStart(TestTimeout);
TimeoutThread = new Thread(Job) { IsBackground = true };
TimeoutThread.Start();
}
private static void TestTimeout()
{
MessageBox.Show("Run");
try
{
Thread.Sleep(Timeout.Infinite);
}
catch (ThreadInterruptedException)
{
TestTimeout();
}
}
private void button1_Click(object sender, EventArgs e)
{
TimeoutThread.Interrupt();
}
Can anyone tell me how to resolve this issue
|
|
|
|
|
I think that recursive call to TestTimeout is causing some problems. Does something like this do what you want (I have added a spinwait to simulate some work being done).
private static Thread TimeoutThread;
private void Form1_Load(object sender, EventArgs e)
{
ThreadStart Job = new ThreadStart(TestTimeout);
TimeoutThread = new Thread(Job) { IsBackground = true };
TimeoutThread.Start();
}
private static void TestTimeout()
{
while (true)
{
MessageBox.Show("Starting Work");
try
{
Thread.SpinWait(100000000);
MessageBox.Show("Finished Work");
Thread.Sleep(Timeout.Infinite);
}
catch (ThreadInterruptedException)
{
}
}
}
private void button1_Click(object sender, EventArgs e)
{
TimeoutThread.Interrupt();
}
<pre>
|
|
|
|
|
check out once that may be your form_load event called many times..
|
|
|
|