|
Oh, I forgot to mention. A mp3 file will be played where the text is read out.
But do you have any ideas on what the easiest way to do this would be?
|
|
|
|
|
Use character arrays for the strings and check each character. You need to decide if you give points for a correct word with different length and handle that scenario.
correct answer: hyperbole
user enetered: hyperboole
The lengths are different so a straight char comparison won't work. You should probably search the rest of the entered text for the char.
Good luck as there's plenty of ways you can give points.
|
|
|
|
|
why would you do a char by char comparison instead of just comparing the strings?
I misunderstood... I didn't realize this was more than a "right" or "wrong" problem...
<br />
if (string.Equals(sUserAnswer, sCorrectAnswer, StringComparison.OrdinalIgnoreCase))<br />
{<br />
}<br />
else<br />
{<br />
}<br />
I suggest that you create an XML file that specifies the word to spell along with the location of the media file that corresponds to the spoken word. Something like:
<words>
<word media="C:\Words\Hello.mp3">Hello</word>
<word media="C:\Words\Hyperbole.mp3">Hyperbole</word>
...
</words>
The application should then allow you to load the XML file that corresponds to the test you want to take.
modified on Thursday, April 17, 2008 4:37 PM
|
|
|
|
|
My idea was to have a test where the student or who ever is taking the test, would listen to a mp3 file. I was thinking about having the mp3 played on an external player.
It is a block of text, so I´m thinking is it possible to compare two sentences?
Could any of you guys show me some example of how this is done?
modified on Thursday, April 17, 2008 3:49 PM
|
|
|
|
|
Of course it's possible to compare two sentences. A sentence is just a string, right? But how will comparing sentences solve your problem? The user will be spelling words, not sentences, right? Don't start solving the wrong problem!
I think you need to take a step back and think about what you're trying to do. Spend some time with paper and pencil and sketch out some use-cases. This will help you conceptualize the problem. For example, what do you want the user experience to be? Pretend that you are going to take a spelling test. How would you expect the application to behave? Once you jot down the basic use case, start considering edge cases. For example, what if I decide to change my answer after I've already typed it in? Will the words be checked immediately after they are entered? Or will they be checked all at once when the user "finishes" the test? If the audio is not associated with the words in your program, how will you know which word the user was trying to spell? What if the user spells the words in the wrong order (the application expected them to spell "Hello" then "Hyperbole" but they spelled "Hyperbole" then "Hello")?
Going through the use cases will help you conceptualize the problem and prevent you from being short-sighted in your solution.
Good luck!
|
|
|
|
|
I have some use cases.
How would you do this?
|
|
|
|
|
Show me one of your use-cases and I'll be glad to help you think through this.
|
|
|
|
|
I'd use the Levensthtein distance[^] to count the number of different characters between the correct and given answer.
regards
modified 12-Sep-18 21:01pm.
|
|
|
|
|
Hi,
seems to me you need to:
- split both texts into words (split on spaces and puctuation);
- match the words (resync when a word is missing in one of the texts);
- count the differences (each pair of matching words that are not identical count as one mistake).
Why match words: the sucker under test may connect two words, split a word in two,
just forget one, etc.
remaining problems:
- punctuation: do you check those chars too? can you hear the difference between
say a semi-colon and a period?
- capitals: are the rules strict in your language? is it the same for the first letter
following a semi-colon and a period?
Luc Pattyn [Forum Guidelines] [My Articles]
This month's tips:
- before you ask a question here, search CodeProject, then Google;
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get;
- use PRE tags to preserve formatting when showing multi-line code snippets.
|
|
|
|
|
Hi everyone,
I have created two applications which both do similar jobs but i want to merge them together into one. I can't extract the forms from one and put them into the other because one of them was created in visual basic. I have tried to get the exe fle from the vb project into the c# project and have succeded in putting it into the resources folder. Problem is running it. HOW????
Please help.
thanks,
Ashley Staggs
|
|
|
|
|
Are you trying to make the two applications behave like a single application? You can't simply "combine" two applications like that...
Are you simply wanting to reuse some of the functionality from the VB application? If so, what you really want to do is figure out what bits of functionality you want from the VB project and convert those pieces into user controls. You can then reference the VB user controls in you C# project.
|
|
|
|
|
Basically i want the c# app to load the exe file from the resources folder
|
|
|
|
|
You can get the C# application to "start" the VB application, but the VB application will still be a separate application. It will still have its own UI and it will run in its own process -- just as it would if the user started it manually.
Are you really simply trying to start the other application programatically? Or are you trying to get the two applications to behave as a single app?
|
|
|
|
|
A single app. The vb app has been created in the 2008 edition whereas the c# is 2005
|
|
|
|
|
You can't add an executable as a resource and simply have another application "run" it as though it was part of the "host" application. What you want is a library (dll) not an executable. This means you will need to figure out what parts of the VB application you would like to re-use and re-create those pieces as classes or user-controls in a dynamic link library. Once you have those components in a library, you can add a reference to that assembly and start using the components.
|
|
|
|
|
if you have two .NET apps you can turn one (or both) of them into a DLL, and make
the remaining one (or a new one) the master controlling the other (or both).
The one (or two) that demotes to a DLL looses its static main function (C#) or the
VB equivalent, so it basically becomes a class library; to call it, instantiate
its main form and show it (as the static main does in a regular C# Windows app).
You must do it with a single version of .NET (hence the same Visual Studio);
having a non-Express edition probably makes it much easier, since now you can load
all relevant projects in a single IDE.
With VS2008VB Express + VS2008CS Express, you should also be able to do it, have one
create the DLL, then add that to the references of the other.
Luc Pattyn [Forum Guidelines] [My Articles]
This month's tips:
- before you ask a question here, search CodeProject, then Google;
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get;
- use PRE tags to preserve formatting when showing multi-line code snippets.
|
|
|
|
|
how do i change the vb project into a dll and then in th c# app how do i get it to start.
|
|
|
|
|
Ashley Staggs wrote: how do i change the vb project into a dll
when you create a new project you are given a choice between many possibilities, one
of them is a "class library" or something like that. So create one of those, copy/paste
almost all your code in there, and just leave an almost empty program in your original exe
project.
Ashley Staggs wrote: how do i get it to start.
if the dll basically holds a Form derivative, you instantiate and show it.
Luc Pattyn [Forum Guidelines] [My Articles]
This month's tips:
- before you ask a question here, search CodeProject, then Google;
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get;
- use PRE tags to preserve formatting when showing multi-line code snippets.
|
|
|
|
|
I dont know how to control ports of serial of my computer with programming.
I want to know the code of it and exactly how to tell the computer that i want it to turn on the outputs of the ports.
I am very thankful if you give me the code in c# and tell me how to wark with it.
|
|
|
|
|
Hi,
you want the SerialPort class (available since .NET 2.0)
open the port, then write data to operate the TxD line, and/or use the appropriate
properties (such as DtrEnable) to control the control lines.
Warning: turn off hardware handshaking if you want to be in charge of some of those lines!
Advice: read all the MSDN pages on SerialPort, AND search CodeProject for SerialPort articles
and read some of those as well.
Luc Pattyn [Forum Guidelines] [My Articles]
This month's tips:
- before you ask a question here, search CodeProject, then Google;
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get;
- use PRE tags to preserve formatting when showing multi-line code snippets.
|
|
|
|
|
Hi,
Can anyone tell me how the normal parameter in C# are passed? is it by Ref? or just value?
Cuz i'm getting a bit problem with my code. I have this code that calculates statistics and for that i need to sort() my array. but this method also (somehow) is being applied to the array that i passed into the function...
for i.e.
<br />
private int iAnswer(ArrayList arData)<br />
{<br />
arData.Sort();<br />
}<br />
<br />
text1.Text = iAnswer(arNum).ToString();<br />
So what i'm trying to say is that when i do arData.Sort() it also sorts arNum somehow??!!
- Stop thinking in terms of limitations and start thinking in terms of possibilities -
|
|
|
|
|
C# parameters are passed by value. But there are some sutle things here. C# has reference-base objects and value-based objects. For the reference-based object, you can think it as an object holding an address. So, when you pass them to a function, only the address will be copied. For your code, the last line passed arNum to iAnswer. iAnswer copy the address holded by arNum to it's own parameter, arData. When you sort arData, the real object that is pointed by arData and arNum will be changed.
|
|
|
|
|
|
Bert delaVega wrote: The ArrayList is a object, so it's allocated to the heap (a reference type). So in your case it is by ref.
That is not correct. It's a reference that is passed as a parameter, but it's not passed by reference. The reference itself is copied and sent as a parameter, it's not a reference to the reference that is sent as a parameter.
Despite everything, the person most likely to be fooling you next is yourself.
|
|
|
|
|
Hi,
if you are familiar with older languages such as C, it is very similar:
1. simple things (int, double) get copied (pass by value);
2. for complex things (strings, class instances) a pointer is passed (so there is no object
copied, it is the same object you get). Whether you call this by value or by ref however
is a bit confusing (you can optionally add a ref keyword to increase the level of indirection
by one)
Luc Pattyn [Forum Guidelines] [My Articles]
This month's tips:
- before you ask a question here, search CodeProject, then Google;
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get;
- use PRE tags to preserve formatting when showing multi-line code snippets.
|
|
|
|