|
You already posted this on Sunday:
Resistor color code - C# Discussion Boards[^]
Repeatedly posting the same question to the forums to try to force the unpaid volunteers to answer your question faster will not end well.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
As far as I remember this part you should first select the resistance-row (E6 , E12 , E24 , ...).
According to this selection you get (or calculate) the base-values for the row - for example E12 means 1.0 , 1.2 , 1.5 , 1.8 , 2.2 , and so on.
Now you should calculate the row-multiplier. For example your Input was 1344 Ohm. Now your multiplier for the base-values is 1000.
You take this multiplier, iterate through the row-values and multiply those value with the multiplier and compare if one value is smaler (or equal) than your entered resistor-value.
Now you check, which difference is smaler : to the last value of the row or to the next value of the row. The one with the smalest difference should be your reference-resistor.
With this resistor-value you build your color-table - but remember not each resistance-row has the same count of color-rings.
I think, you should start with this ...
|
|
|
|
|
Can it be made like this for E12:
int i = 0;
for (i = 0; i < E12.Length; i++)
{
p = E12[i] * mul;
if (p <= val)
{
r = Math.Abs(p - val);
}
}
|
|
|
|
|
Hello everyone.
I make application by Android Studio, i want to disable all applications in my mobile except internet Wifi?.
Please anyone knows that. help me.
Thank you
|
|
|
|
|
Dr Kasa, thanks for taking the time to ask a question on Code Project. Unfortunately, you have chosen to ask your question in the C# forum which has nothing to do with developing an Android application in C# (which you would do in Xamarin). Please choose a more appropriate forum; the Android forum would be a better choice.
This space for rent
|
|
|
|
|
Why?
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
To hijack the phone, with or without consent.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
Was my guess - I couldn't think of a non-malicious use for it: but then I'm a Cynical Old Codger!
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
With cynical, you mean 'experienced'?
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
No, just cynical ... my faith in humanity is at a low ebb today.
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
I am getting a long path exception while adding attachments to MailMessage. Our file path exceeds 260, but that's how it is and we want it to work.
Following is what I have done to avoid the exception:
private void CreateAttachments(MailMessage mailMessage, List<string> filesToAdd)
{
foreach (string fileToAdd in filesToAdd)
{
SafeFileHandle fileHandle = null;
try
{
fileHandle = Common.CreateFile(Common.prefixPath(fileToAdd), Common.GENERIC_READ, FileShare.Read, IntPtr.Zero, FileMode.Open, 0, IntPtr.Zero);
if (!fileHandle.IsInvalid)
{
using (FileStream fs = new FileStream(fileHandle, FileAccess.Read))
{
Attachment data = new Attachment(fs, fileToAdd);
mailMessage.Attachments.Add(data);
}
}
}
finally
{
if ((fileHandle != null) || fileHandle.IsInvalid)
fileHandle.Dispose();
}
}
}
Above LOC doesn't throw an exception while adding attachments. But, while sending(smtpClient.Send(mailMessage)) it throws an exception "Failure Sending Mail".
UPDATED CODE
modified 10-Oct-16 10:17am.
|
|
|
|
|
In this line;
Attachment data = new Attachment(fs, fileToAdd, "text/plain");
fileToAdd doesn't have to be the path to the original file, it's just a token so you can drop the path
Attachment data = new Attachment(fs, Path.GetFileName(fileToAdd), "text/plain");
|
|
|
|
|
Can someone please advise? Really appreciate your time and help.
|
|
|
|
|
Did you try the suggestion that was already made?
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
Yes. I was able to fix this issue. The above code was correct, the only exception of "File was closed" was giving me trouble.
Fixed it by keeping the file stream opened while sending(SMPTPClient.send()) the email.
Thanks for the help.
|
|
|
|
|
Note: code examples shown here are created in VS 2015, compiled against FrameWork 4.6.
Big picture: object design best practices
1. Nested Classes in C# .NET:
As you know, C#, unlike Java, has no mechanism for a nested Class to refer to the instance of the "outer class" that wraps/contains it ... well, yes, the inner Class instance will have access to private members of the outer class instance... if it has a valid reference to the outer class instance, a unique feature. So we can write this:
namespace Whatever
{
public class OuterClass
{
private DateTime DateTm { set; get; }
public OuterClass()
{
DateTm = DateTime.Now;
}
public class InnerClass
{
public OuterClass InnerOuter { set; get; }
public InnerClass(OuterClass outer = null)
{
InnerOuter = outer;
}
}
}
} And, yes, if we create a new instance of OuterClass, and then create an instance of InnerClass, passing the instance of OuterClass to the ctor of InnerClass: then, InnerClass has access to the private property 'DateTm in OuterClass ... if the InnerClass has no reference to an OuterClass, then, as expected, it cannot access the private Property. You could also look at the option to define a nested Class as private, in which case, obviously, the outer class can inject a reference to itself into the inner Class. While I have never seen code that gets a big benefit from using nested classes, I assume there is some scenario in which that structure is beneficial, I just haven't come across it.
2. Challenge of object injection into a Class which may "stand alone," or may be a child element of another Class, or, a collection of the same Class (child collection).
2.a. Context
I mention this to establish a context for my real question here, which is about finding a "clean" way to implement a hierarchy where the "child objects" have references to their "parent," and to the overall context ("tree") in which they are elements. At the same time, the challenge includes finding a way to allow the user to create a child element that "stands alone," that does not have a reference to its Parent or Tree ... until the user adds the child element to its "child element collection."
Yes, you can see exactly such a paradigm in the WinForms TreeView, where you can create a new TreeNode that exists "independently" of any TreeView, or TreeNodeCollection. fyi: a WinForm TreeNode contains properties of Type TreeView, and TreeNodeCollection. A WinForm TreeNodeCollection does not contain a 'TreeView Property, and has no ctor ... it's a sealed class.
2.b Code
Here's a code-sketch in which I deliberately avoid using 'TreeView nomenclature to try and keep assumptions being made based on what I/you may know of tree view controls you use now:
using System.Collections.Generic;
namespace Whatever
{
public class OuterClass
{
public List<InnerClass> AllInners { set; get; }
public OuterClass()
{
AllInners = new InnerCollection();
}
}
public class InnerCollection : List<InnerClass>
{
public new void Add(InnerClass inner)
{
if (inner.MyOuter != null) inner.MyOuter.AllInners.Add(inner);
base.Add(inner);
}
}
public class InnerClass
{
public OuterClass MyOuter { set; get; }
public InnerClass Parent { set; get; }
private InnerCollection _childInners;
public InnerCollection ChildInners
{
get
{
if(_childInners == null) _childInners = new InnerCollection();
return _childInners;
}
}
public string Text { set; get; }
public int Level { set; get; }
public InnerClass(string text = "", InnerCollection inners = null, InnerClass parent = null, int level = -1)
{
Text = text;
if (inners != null) _childInners = inners;
Parent = parent;
Level = level;
}
}
} With this code, you can (obviously) create a InnerClass element that "stands alone:"
Whatever.InnerClass testInner = new WhateEver.InnerClass("test1");
Console.WriteLine("inner: {0} parent: {1} tree: {2} innercollection: {3}",
testInner.Text,
testInner.Parent.NullToString(),
testInner.MyOuter.NullToString(),
testInner.ChildInners.NullToString());
So, here's the "unfinished business:"
0. how to get a valid reference to the Outer (tree) into the InnerCollection class when you are adding a new InnerClass to the InnerCollecton class of a InnerClass that has been added to a InnerCollection that has been added to the Outer (tree).
1. how to do this without using reflection.
«There is a spectrum, from "clearly desirable behaviour," to "possibly dodgy behavior that still makes some sense," to "clearly undesirable behavior." We try to make the latter into warnings or, better, errors. But stuff that is in the middle category you don’t want to restrict unless there is a clear way to work around it.» Eric Lippert, May 14, 2008
|
|
|
|
|
How about something like this:
public interface IChild<TParent>
{
void SetParent(TParent parent);
}
public class ChildCollection<TChild, TParent> : System.Collections.ObjectModel.Collection<TChild> where TChild : IChild<TParent>
{
public ChildCollection(TParent parent)
{
Parent = parent;
}
public TParent Parent { get; }
protected override void InsertItem(int index, TChild item)
{
item.SetParent(Parent);
base.InsertItem(index, item);
}
protected override void SetItem(int index, TChild item)
{
Items[index].SetParent(default(TParent));
item.SetParent(Parent);
base.SetItem(index, item);
}
protected override void RemoveItem(int index)
{
Items[index].SetParent(default(TParent));
base.RemoveItem(index);
}
protected override void ClearItems()
{
foreach (TChild child in Items)
{
child.SetParent(default(TParent));
}
base.ClearItems();
}
}
public class OuterClass
{
public OuterClass()
{
AllInners = new ChildCollection<InnerClass, OuterClass>(this);
}
public IList<InnerClass> AllInners { get; }
}
public class InnerClass : IChild<OuterClass>, IChild<InnerClass>
{
public InnerClass()
{
ChildInners = new ChildCollection<InnerClass, InnerClass>(this);
}
public OuterClass MyOuter { get; private set; }
public InnerClass Parent { get; private set; }
public IList<InnerClass> ChildInners { get; }
public string Text { get; set; }
public int Level { get; set; }
protected virtual void SetParent(OuterClass parent, bool fromCollection)
{
if (ReferenceEquals(MyOuter, parent)) return;
var oldOuter = MyOuter;
if (oldOuter != null)
{
MyOuter = null;
oldOuter.AllInners.Remove(this);
}
MyOuter = parent;
if (parent != null && !fromCollection)
{
parent.AllInners.Add(this);
}
foreach (var child in ChildInners)
{
child.SetParent(parent, false);
}
}
void IChild<OuterClass>.SetParent(OuterClass parent)
{
SetParent(parent, true);
}
protected virtual void SetParent(InnerClass parent)
{
if (ReferenceEquals(Parent, parent)) return;
var oldParent = Parent;
if (oldParent != null)
{
Parent = null;
oldParent.ChildInners.Remove(this);
}
Parent = parent;
var newOuter = parent != null ? parent.MyOuter : null;
SetParent(newOuter, false);
}
void IChild<InnerClass>.SetParent(InnerClass parent)
{
SetParent(parent);
}
}
This should then let you compose the tree however you see fit:
var outer = new OuterClass();
var root = new InnerClass { Text = "A", Level = 0 };
var child = new InnerClass { Text = "A.1", Level = 1 };
var grandchild = new InnerClass { Text = "A.1.i", Level = 2 };
child.ChildInners.Add(grandchild);
root.ChildInners.Add(child);
outer.AllInners.Add(root);
root.ChildInners.Add(grandchild);
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
08:49 Tuesday GMT + 7 (DST not used here)
Fascinating code, really appreciated; it's going to take me some time to try and understand your use of interfaces and where constraints here. After a first pass over the code, I think it points me in s direction I was planning to explore, which is to handle setting 'tree and 'nodecollection parameters of an 'innerclass in the 'nodecollection code.
On my list to examine is, possibly, using 'CallerMemberInfo in the 'nodecollection class.
22:49 Monday ... Thanks, Richard, I look forward to studying your code tomorrow (GMT +7) after (hopefully) some too long postponed sleep.
«There is a spectrum, from "clearly desirable behaviour," to "possibly dodgy behavior that still makes some sense," to "clearly undesirable behavior." We try to make the latter into warnings or, better, errors. But stuff that is in the middle category you don’t want to restrict unless there is a clear way to work around it.» Eric Lippert, May 14, 2008
modified 10-Oct-16 21:59pm.
|
|
|
|
|
please help me to read mbr
i can not to read this
|
|
|
|
|
|
Google is your friend: Be nice and visit him often. He can answer questions a lot more quickly than posting them here...
A very quick search using your subject as the search term gave nearly 400,000 hits: Google: "how to read MBR in C#"[^]
The top link is on MSDN: Read MBR Sectors[^]
In future, please try to do at least basic research yourself, and not waste your time or ours.
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
I made app in C# that convert resistor value to color codes.
How to make support for 5 band and 6 band resistor and how to make support for mΩ,uΩ,nΩ,pΩ ?
What should I add? http:
|
|
|
|
|
The sixth band can be ignored like the tolerance band because it is an additional indicator for reliability or temperature coefficient. So handle it like a 5 band code. For 5 bands just enhance the code to support one more digit. With conversions from value to bands you should print out the result for 4 and 5 bands.
The smallest possible value that can be represented by color codes is 1 m / 0.1 m for 4 / 5 band codes. So there is no need for other units then mOhm. Even values smaller than 1 Ohm can be shown in Ohms because values below 0.1 Ohm are rather seldom with band codes. Resistors with small value (shunt resistors) usually have the value printed on the case.
|
|
|
|
|
Do I just need to add something below this:
Color.FromName(colours[res[0] - '0']);
Color.FromName(colours[res[1] - '0']);
Color.FromName(colours[third != 0 ? third : res.Count() - 2]);
|
|
|
|
|
No.
With one more digit you have to adjust the multiplier too.
BTW: You should post code here rather than providing an external link.
I did not checked if your code is working. But if so, you should have no problems to extent it to support one more digit. I would create two different functions to get the colors for 4 and 5 bands which are called after parsing and checking the input.
|
|
|
|
|