|
I don't think there is a name for this, because in your example above, you aren't creating multiple objects named 'a'. In the loop body, you are creating an instance of the object in variable 'a' and adding the object to an ArrayList. When the loop continues, 'a' is out of scope, and the object only exists in the ArrayList. 'a' will be re-used to store another instance of the object, which will be added to the list, and so on...
|
|
|
|
|
So - variable a equals the first instance, then it equals the second instance, and so on. Variable A cannot be used to reference object TestA after the loop is over? Therefore the instances of TestA live on and can be accessed via the ArrayList, but A will not reference them any longer?
|
|
|
|
|
Correct. Because the variable a is no longer in scope after the iteration of the loop completes. A new a comes into scope on every iteration of the loop.
|
|
|
|
|
No, there really isn't a name for it because, in your loop, you only ever have one object instance!
You're not creating "multiple objects with the same identifier". Only one instance of that class is ever alive. On the next iteration of the loop, the object created in the last iteration is already gone.
DSLoginYea wrote: Code: TestA a = new TestA(); TestA a = new TestA();
Result: "A local variable named a is already defined in this
scope"
However, that is allowed in a loop
No, the loop does not get around that limitation. It's still there. You're not understanding what's going on inside the loop!
DSLoginYea wrote: I have modified my code below - the 10 objects of type TestA are all named "a".
They will still remain in scope (and not ready garbage collection) after the
loop that created them has finished.
ArrayList anArrayList =
new ArrayList();
for (int i = 0; i < 10;
i++) { TestA a = new TestA();
anArrayList.Add(a); }
Now you've changed the entire circumstances surrounding the creation of the objects. Now, since you have an array (outside the loop!) holding onto the references of those objects you created inside the loop, the objects are still be references by outside code and do not fall out of scope until the array falls out of scope.
Still, there is no name for this. You're just creating an array, or collection, and filling it with objects created by a loop.
|
|
|
|
|
All instances exist in a scope... In this case, you vars exist just in the loop scope.
You don't get the "already exist" error because they are created on every iteration and then destroyed/collected.
|
|
|
|
|
I can connect my guitar to my computer and use some effects application, but now I would like to implement my own Wah Wah Guitar effect in C#. And other effects later, but this is the most important by now.
Does anyone have any suggestion about a library I could use, or something? I pretend to use a slider as handler of the effect.
As "C#" is the name of a guitar note too, have been quite hard to find something related to this development. Most searches just brings lyrics and tabs!
Thanks!
|
|
|
|
|
This[^] lab manual contains links to a Matlab DSP script for a wah-wah effect. You'll need to implement this from scratch in C# (a daunting task) or use a C# binding to the Bass[^] library. Bass currently supports distortion, flanging, echo, reverb and EQ - you might want to ask the developer if there's an ETA for wah-wah. Good luck!
/ravi
|
|
|
|
|
I'll try the matlab approach, but i'm afraid of having issues regarding the application response speed.
Based on your suggestion, i'll look for some Pure Data integration to achieve this too...
Thanks!
|
|
|
|
|
You are going to face a number of tasks:
1) How to obtain your digital guitar signal. IE you need to read the A/D output from somewhere. Perhaps you have a library or set of routines already to access the data from your sound card. If you don't this is going to be step 1.
2) As the previous answerer posted this is no simple task but it can be fun to experiment. Basically for a wah effect you are looking for a variable filter. Filters can be low-pass, band-pass, high-pass and many others. The Wah effect is usually a variable filter that takes the high end (upper frequency) and as you rock the Wah pedal lowers that high end. This was the simplest form of Wah filter. They are much more complex now days. I built an analog version many years ago and it wasn't too hard. Unfortunately in the digital world it is actually a little harder to do. But once you have the data from step 1 you can write some code or use a library to modify it and get some interesting results.
3) Sending the modified data some where. Again like step one you are going to need to figure out where/how to transmit your modified data back out either to your sound card or perhaps in early stages just write it to a WAV file and then play that file back to see what your filters did.
I think there are signal processing libs in MatLab as mentioned above. There are probably some commercial libs to do this as well. I unfortunately cannot point you to any.
Good luck
|
|
|
|
|
Hello,
I want to send receipt as pdf format (which is generated by crystal report in asp.net) via mail to the end users. I wonder that someone crack the pdf file and send spam mail to end users. But end users dont know the receipt pdf is spam . I want to know how to prevent this type of scenario.
For that i am thinking that whether I add some encrypted jpeg file/text or digital signature in crystal report So we can overcome these issues. But i dont know how to add digital signature in crystal report.
Please do needful.
|
|
|
|
|
Digital Signatures require intelligent users to properly interpret. Maybe instead of a PDF receipt which is associated with virus, malware, spam, and other mischief you can send a plain text email that any one can read on any client and merely provide a link (to your trusted server) to the PDF. Then you save bandwidth for you and your customer, increase confidence in your emails, and give your self a valid way to track follow through on downloading the receipts. Which is important if you want to store the pdf files versus generate them on demand.
|
|
|
|
|
This is one intriguing error that I do not even know whether to call it a bug or not ... It is fairly likely that this thing is already solved somehow by locale of which I am yet to get the precise clue.
OK! all of the contents of this post (rant) revolves around DateTime, something that we, fortunately agree on values but just cannot have uniformity on how we'd like to store, read on screen and pass around.
I am writing one .net application in C# that parses dates and times coming in from a ASCII bytestream. This problem only occurs when date is sent as ASCII string. As a part of early design decision,I had decided that I decided to keep will only keep one dedicated function to parse strings into dates.
At first, this function started with "dd/MM/yyyy HH:mm:ss". In a different record, I discovered "yyyyMMdd". In yet another place, I discovered only date (no time) "dd-MMM-yyyy". Given that I am in India, this is the defacto date format used, so no problems.
All of these were very efficiently handled by DateTime.TryParse no problems, but then I started getting dates being sent as "MM/dd/yyyy HH:mm:ss" which is like a giant monkey spanner at TryParse regardless of the locale setting. If locale is set to American, 07/01 gets read as July 1. If I set locale to British, 07/01 gets read 7 January. At least some of the byte stream format will be read incorrectly if I use same locale setting!!!
At least for first 12 days of all month, this would read date incorrectly!!! Cannot use TryParse. Cannot tell people sending me byte-stream to fix up the mess. I want data, so its my headache on how to read it... Fortunately, I do tag attributes on field on what format date is it going to be in.
All in all, between 50 different byte-streams, I get string dates in formats listed below. List is sorted by frequency of occurrence. Rest of them come either as # of seconds from some epoch or pair of integers.
"MM/dd/yyyy HH:mm:ss",
"dd/MM/yyyy HH:mm:ss",
"yyyy-MM-dd HH:mm:ss.fff",
"yyyy-MM-dd HH:mm:ss.ff",
"yyyy-MM-dd HH:mm:ss.f",
"ddMMMyyyy",
"yyyyMMdd",
"dd-MMM-yyyy"
fff are miliseconds and honestly only one should be needed, but I do get 1, 2 or 3 digits after the decimal!!!
In my function, I've plonked the all format strings into a static String array and then loop over it like this ... try catch inside the loop allows loop to go to next format if current one fails.
for (int i = 0; i < DateFormatStrings.Length; i++)
{
try
{
dt = DateTime.ParseExact(formatDate, DateFormatStrings[i], null);
fInfo.SetValue(this, dt);
if (formatFailed > 0)
Logger.LogLine(String.Format("Field {0} in class {1}, was finally able to parse date [{3}] in pre-defined format {4}",
fInfo.Name, myType, formatDate, DateFormatStrings[i]), LoggingLevel.HighLevelDebugging);
break;
}
catch (FormatException)
{
formatFailed++;
Logger.LogLine(String.Format("Field {0} in class {1}, was unable to parse date [{2}] in pre-defined format {3}",
fInfo.Name, myType.Name, formatDate, DateFormatStrings[i]), LoggingLevel.HighLevelDebugging);
fInfo.SetValue(this, null);
}
}
Now the most funny thing at which I can neither laugh nor cry is.
that this loop ParseExact fails with FormatException whenever date comes in as 2013-07-31 09:34:44.74
The format string to parse it correctly is present in array at index 3 and it does get looped over too throwing exception.
In another function, with following code, this works without format exception...
DateTime dt = DateTime.ParseExact(
"2013-07-31 09:34:44.74", "yyyy-MM-dd HH:mm:ss.ff", null);
In other words, ParseExact fails with exception, when inside try-catch block and works fine when not enclosed.
[REPOSTED!!!]
modified 6-Aug-13 5:30am.
|
|
|
|
|
I just tried
DateTime dt = DateTime.ParseExact(
"2013-07-31 09:34:44.74", "yyyy-MM-dd HH:mm:ss.ff", false);
which will not compile, as the third parameter is invalid.
I changed it to
DateTime dt = DateTime.ParseExact(
"2013-07-31 09:34:44.74", "yyyy-MM-dd HH:mm:ss.ff", null);
and it works fine, whether inside a try {} catch {} or not.
Use the best guess
|
|
|
|
|
Yes ... you are correct. 3rd param is null. It is null in my code too. I guess I made a cut-copy error. Sorry for that!!!
On my machine, it does not parse only when it is within the try catch block.... especially in the function body that I have shown above...
When that failed, I added one line at beginning of Main method where it worked correctly
So, something is happening within the loop... My guess is that it most likely something not being made volatile, but then my log messages should give a clue. Log messages are accurate. After pasting on code project, I tried with zero compile optimizations and will know what happens
|
|
|
|
|
You are testing the value of formatFailed in your try block, but you set it inside the catch block. This is not the way to code a try catch sequence. You should be displaying the failure message in the catch block, and break out of the loop only when the parsing succeeds.
Use the best guess
|
|
|
|
|
Richard MacCutchan wrote: You are testing the value of formatFailed in your try block, but you set it inside the catch block. This is not the way to code a try catch sequence. You should be displaying the failure message in the catch block, and break out of the loop only when the parsing succeeds.
Richard
Actual code of the function is 150-200 lines with lots of Reflection and stuff. I had only posted tail portion of code which was the problem area. What happens is as follows. For each field, I have custom attribute that spells out what format is going to be present which I call tryFirstFormat. So, there is one another parseexact before code enters loop. If it enters the loop, it is 100% certain that formatFailed will be set to 1. Fortunately, C# will not let me compile without initialized variable antway.
Lastly, Message that gets logged inside try block is actually to report a successful parse after blah-blah number of attempts. Message in catch block is when parsing fails where attempt count increases
Tonight, I spent time thumbing thru few other sites and decided to change the loop index (i) to be a volatile member of class Will discover how this performs tomorrow.
|
|
|
|
|
You will also have a problem with the first two of your format strings when the month and day are both less than 13.
Use the best guess
|
|
|
|
|
Richard MacCutchan wrote: You will also have a problem with the first two of your format strings when the month and day are both less than 13.
Actually, I did have that problem when I was using TryParse and using locale.
What I've done is following. For each datetime field, I've added custom attribute that spells out which format is most likely to be most appropriate for that particular field. This way, on some fields, I do instruct it to read it as dd/mm and on others I do ask it to read mm/dd.
|
|
|
|
|
I would address this a different way, assuming each stream is identifiable and is internally consistent, I would register a format for each source.
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
Mycroft Holmes wrote: I would address this a different way, assuming each stream is identifiable and is internally consistent, I would register a format for each source.
They are consistent in a sense that if mm was before dd, it does seem to remain that way ... but I'd be in trouble if I assume that it will always be slash / between characters. Sometimes it is dash or space too. So, I weed out all unwanted characters using String.Replace and replace them with what slashes as I have
'em on my format string before even attempting to parse the date.
Further, I do have custom attribute defined for each and every date/time field which essentially leads to one of the eight format strings as "tryFirstFormat". So, yes! I do have one format registered for each field although I know that expecting it to remain consistent is a bit-too-much at this point in time....
In the code, before the loop, I use parseExact to parse the date. Naturally that too is in its own try-catch block. Only if that fails, code will enter the loop.
I did not post all of the above code assuming that more code will confuse people and felt that it was not relevant to problem. But it seems from the early responses that partial code is confusing ppl more.
modified 7-Aug-13 1:02am.
|
|
|
|
|
Will it help if I publish entire parsing code? ... Certainly there is little bit of refactoring that can reduce the lines which I've postponed until it works correctly?
I had omitted code above the for loop because (a) it is working fine (as I coded it). (b) I did not want to post too big code here
|
|
|
|
|
Hi,
I'm developing window application ...
My question is simple, i'm getting form name in a string...
now i want to open the form using string name
how to convert string to form object in c# window application
please reply me.........
modified 6-Aug-13 3:44am.
|
|
|
|
|
Some variation of this
Assembly assembly = System.Reflection.Assembly.GetAssembly();
classAsType = assembly.GetType(classNameAsString);
|
|
|
|
|
Have you created your form object already? where you want to open that form, can you tell how you want to do, i hope can help you with that
|
|
|
|
|
susanna.floora wrote: My question is simple, i'm getting form name in a string...
The name of a form-object (name property) or the name of the forms' class? In other words, does the form already exist that you're looking for, or are you showing a new instance of that form?
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|