|
You show no attempt to solve the problem yourself, you have no question, your main effort is pasting the requirement, you just want us to do your HomeWork.
We do not do your HomeWork.
HomeWork is not set to test your skills at begging other people to do your work, it is set to make you think and to help your teacher to check your understanding of the courses you have taken and also the problems you have at applying them.
Any failure of you will help your teacher spot your weaknesses and set remedial actions.
Any failure of you will help you to learn what works and what don't, it is called 'trial and error' learning.
So, give it a try, reread your lessons and start working. If you are stuck on a specific problem, show your code and explain this exact problem, we might help.
Patrice
“Everything should be made as simple as possible, but no simpler.” Albert Einstein
|
|
|
|
|
Question: 1
Suppose using controls in Visual Studio you have developed the layout for a calculator in design mode as shown
below, and given names of button Add, Subtract, Multiply and divide as Plusbtn, Subbtn, Mulbtn and Divbtn
respectively. Names for TextBox labeled First Number, Second Number and Result are textBox1, textBox2 and
textBox3 respectively. If a number is entered in TextBox1 and TextBox2, clicking the buttons should produce result
of respective operation in TextBox3. Complete the code
|
|
|
|
|
No, we are NOT going to do your homework for you.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
We are more than willing to help those that are stuck: but that doesn't mean that we are here to do it all for you! We can't do all the work, you are either getting paid for this, or it's part of your grades and it wouldn't be at all fair for us to do it all for you.
So we need you to do the work, and we will help you when you get stuck. That doesn't mean we will give you a step by step solution you can hand in!
Start by explaining where you are at the moment, and what the next step in the process is. Then tell us what you have tried to get that next step working, and what happened when you did.
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
Okay, I've completed the code in my head. That was fun. Now what?
|
|
|
|
|
Write an article on it?
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
If I was doing a course that asked me to create text boxes called textBox1, textBox2 etc, I would find a better course.
|
|
|
|
|
You show no attempt to solve the problem yourself, you have no question, your main effort is pasting the requirement, you just want us to do your HomeWork.
We do not do your HomeWork.
HomeWork is not set to test your skills at begging other people to do your work, it is set to make you think and to help your teacher to check your understanding of the courses you have taken and also the problems you have at applying them.
Any failure of you will help your teacher spot your weaknesses and set remedial actions.
Any failure of you will help you to learn what works and what don't, it is called 'trial and error' learning.
So, give it a try, reread your lessons and start working. If you are stuck on a specific problem, show your code and explain this exact problem, we might help.
Patrice
“Everything should be made as simple as possible, but no simpler.” Albert Einstein
|
|
|
|
|
I have been having trouble finding a good compiler for my iPad.
|
|
|
|
|
You won't find a compiler for C# on iPad - Apple are rather restrictive, and use ObjectiveC for apps.
You can use C# to write for Apple devices, but you will need Xamarin to do it - it's included in the last couple of versions of Visual Studio.
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
I need to parse numerical expressions, e.g. (UInt32)(512 * 1024) that we can assume comes from a WinForm TextBox during runtime. I tried using the following:
DataTable loDataTable = new DataTable();
DataColumn loDataColumn = new DataColumn("Eval", typeof(double), expression);
loDataTable.Columns.Add(loDataColumn);
loDataTable.Rows.Add(0);
return (UInt32)(double)(loDataTable.Rows[0]["Eval"]);
but this doesn't work because of the cast. So instead I tried the following, which is based on possible to execute code contained in a string ? - C# / C Sharp[^] :
public static bool parseDifficultExpression(string difficultExpression, out UInt32 parsedValue)
{
try
{
string[] usingList = new string[] { "System",
"System.Text",
"System.Diagnostics" };
string methodAsString = " returnValue = " + difficultExpression + ";";
string notUsed = "";
parsedValue = (UInt32)Utilities.executeMethodAsString(usingList, methodAsString, notUsed, typeof(UInt32));
return true;
}
catch (Exception)
{
parsedValue = 0xFFFFFFFF;
return false;
}
}
public static object executeMethodAsString(string[] usingList, string methodAsString, object args, Type returnType)
{
string[] importList = new string[] { "System.dll" };
string namespaceName = "myNameSpace";
string className = "myClass";
string methodName = "myMethod";
CodeMemberMethod pMethod = new CodeMemberMethod();
pMethod.Name = methodName;
pMethod.Attributes = MemberAttributes.Public;
pMethod.Parameters.Add(new CodeParameterDeclarationExpression(args.GetType(), "args"));
pMethod.ReturnType = new CodeTypeReference(typeof(UInt32));
string completeMethod =
returnType + " returnValue = new " + returnType + "();" + "\r\n" +
"try {" + "\r\n" +
methodAsString + "\r\n" +
"} catch {" + "\r\n" +
" returnValue = new " + returnType + "();" + "\r\n" +
"}" + "\r\n" +
"return returnValue;";
pMethod.Statements.Add(new CodeSnippetExpression(completeMethod));
CodeTypeDeclaration pClass = new CodeTypeDeclaration(className);
pClass.Attributes = MemberAttributes.Public;
pClass.Members.Add(pMethod);
CodeNamespace pNamespace = new CodeNamespace(namespaceName);
pNamespace.Types.Add(pClass);
for (int i = 0; i < usingList.Length; i++)
{
pNamespace.Imports.Add(new CodeNamespaceImport(usingList[i]));
}
CodeCompileUnit pUnit = new CodeCompileUnit();
pUnit.Namespaces.Add(pNamespace);
CompilerParameters pParams = new CompilerParameters(importList);
pParams.GenerateInMemory = true;
CompilerResults pResults = (new CSharpCodeProvider()).CreateCompiler().CompileAssemblyFromDom(pParams, pUnit);
if ((pResults.Errors != null) && (0 < pResults.Errors.Count))
{
foreach (CompilerError pError in pResults.Errors)
{
Debug.WriteLine(pError.ToString());
}
return null;
}
else
{
object typeInstance = pResults.CompiledAssembly.CreateInstance(namespaceName + "." + className);
MethodInfo methodInfo = typeInstance.GetType().GetMethod(methodName);
return methodInfo.Invoke(typeInstance, new object[] { args });
}
} This works fine, except that the line
CompilerResults pResults = (new CSharpCodeProvider()).CreateCompiler().CompileAssemblyFromDom(pParams, pUnit); is extremely slow (about 80 ms) to execute. Does anybody know a workaround to achieve what I want in fast execution time?
|
|
|
|
|
Have you considered using an expression evaluator? A Tiny Expression Evaluator[^] for example.
Might be quicker than loading a whole compiler each time you want an expression ...
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
It doesn't seem to be able to handle casts either, whenever I cast something in the "command prompt" (started by double-clicking TinyExe.exe) it gives me "Unexpected token '' found. Expected EOF".
|
|
|
|
|
I tried to speed it up by doing all (several hundred) my conversions in the same method, so that instead of compiling several hundred times I compile just once but the method will be a lot larger. Well, this works fine until there's an illegally formatted string which creates a compile error... It is really so impossible to interpret casts in a fast way?
|
|
|
|
|
I also tried the following, which is based on .net assembly - C# CompilerResults GenerateInMemory? - Stack Overflow[^], but it appears to compile even slower (I measured 208 ms):
public static class MyClass
{
public static void Example()
{
Stopwatch watch = System.Diagnostics.Stopwatch.StartNew();
dynamic instance = CompileSource(
"namespace Test" +
"{" +
" public class DynamicCompile" +
" { " +
" public void logHelloThere()" +
" {" +
" System.Diagnostics.Debug.WriteLine(\"Hello there\");" +
" }" +
" }" +
"}").TryLoadCompiledType("Test.DynamicCompile");
instance.logHelloThere();
long elapsedMs = watch.ElapsedMilliseconds;
Debug.WriteLine("Elapsed: " + elapsedMs);
}
public static CompilerResults CompileSource(string sourceCode)
{
var csc = new CSharpCodeProvider(
new Dictionary<string, string>() { { "CompilerVersion", "v4.0" } });
var referencedAssemblies =
AppDomain.CurrentDomain.GetAssemblies()
.Where(a => !a.FullName.StartsWith("mscorlib", StringComparison.InvariantCultureIgnoreCase))
.Where(a => !a.IsDynamic)
.Select(a => a.Location)
.ToArray();
var parameters = new CompilerParameters(referencedAssemblies);
return csc.CompileAssemblyFromSource(parameters, sourceCode);
}
public static object TryLoadCompiledType(this CompilerResults compilerResults, string typeName, params object[] constructorArgs)
{
if (compilerResults.Errors.HasErrors)
{
Debug.WriteLine("Can not TryLoadCompiledType because CompilerResults.HasErrors");
return null;
}
var type = compilerResults.CompiledAssembly.GetType(typeName);
if (null == type)
{
Debug.WriteLine("Compiled Assembly does not contain a type [" + typeName + "]");
return null;
}
return Activator.CreateInstance(type, constructorArgs);
}
}
|
|
|
|
|
You're creating a rather poor interpreter; it's not going to run like a compiler. I think you need a "calculator" class.
It was only in wine that he laid down no limit for himself, but he did not allow himself to be confused by it.
― Confucian Analects: Rules of Confucius about his food
|
|
|
|
|
There are several different ways to evaluate arithmetic expressions (just google), but all the ones I've tried have not been able to handle a simple cast, e.g.:
1 + (int)1
|
|
|
|
|
None of the calculators I have had over the last 40 years have handled casts. Have you tried simply strip off the casts? Maybe a calculator library would work then.
|
|
|
|
|
Yes, the casts can be stripped off unless they are there for a reason.
|
|
|
|
|
Hello Guys,
I have create a Android application in Xamarin and i would like to also have in on Amazon store.
It uses in App purchases
Currently im implementing those purchases with this code:
public async Task<bool> WasItemPurchased(string productId)
{
var billing = CrossInAppBilling.Current;
var result = false;
try
{
var connected = await billing.ConnectAsync(ItemType.InAppPurchase);
if (!connected)
{
return false;
}
var verify = new InAppBillingVerify();
var purchases = await billing.GetPurchasesAsync(ItemType.InAppPurchase, verify);
if (purchases?.Any(p => p.ProductId == productId) ?? false)
{
Preferences.Set(productId, true);
return true;
}
else
{
return false;
}
}
catch (InAppBillingPurchaseException purchaseEx)
{
var message = string.Empty;
switch (purchaseEx.PurchaseError)
{
case PurchaseError.AppStoreUnavailable:
RestorePurchasesStatusMessage = GetString(Resource.String.Options_PaidFunctions_ErrorAppStoreUnavailable);
break;
case PurchaseError.BillingUnavailable:
RestorePurchasesStatusMessage = GetString(Resource.String.Options_PaidFunctions_ErrorBillingUnavailable);
break;
case PurchaseError.PaymentInvalid:
RestorePurchasesStatusMessage = GetString(Resource.String.Options_PaidFunctions_ErrorPaymentInvalid);
break;
case PurchaseError.PaymentNotAllowed:
RestorePurchasesStatusMessage = GetString(Resource.String.Options_PaidFunctions_ErrorPaymentNotAllowed);
break;
case PurchaseError.AlreadyOwned:
RestorePurchasesStatusMessage = GetString(Resource.String.Options_PaidFunctions_ErrorAlreadyOwned);
Preferences.Set(productId, true);
result = true;
break;
}
if (string.IsNullOrWhiteSpace(message))
return false;
}
catch (Exception exception)
{
Crashes.TrackError(exception);
RestorePurchasesStatusMessage = GetString(Resource.String.Options_PaidFunctions_ErrorAppStoreUnavailable);
}
finally
{
await billing.DisconnectAsync();
}
return result;
}
public async Task<bool> PurchaseItem(string productId, string payload)
{
var billing = CrossInAppBilling.Current;
try
{
var connected = await billing.ConnectAsync(ItemType.InAppPurchase);
if (!connected)
{
return false;
}
var verify = new InAppBillingVerify();
var purchase = await billing.PurchaseAsync(productId, ItemType.InAppPurchase, payload, verify);
if (purchase == null)
{
}
else if (purchase.State == PurchaseState.Purchased)
{
Preferences.Set(productId, true);
}
}
catch (InAppBillingPurchaseException purchaseEx)
{
var message = string.Empty;
switch (purchaseEx.PurchaseError)
{
case PurchaseError.AppStoreUnavailable:
message = GetString(Resource.String.Options_PaidFunctions_ErrorAppStoreUnavailable);
break;
case PurchaseError.BillingUnavailable:
message = GetString(Resource.String.Options_PaidFunctions_ErrorBillingUnavailable);
break;
case PurchaseError.PaymentInvalid:
message = GetString(Resource.String.Options_PaidFunctions_ErrorPaymentInvalid);
break;
case PurchaseError.PaymentNotAllowed:
message = GetString(Resource.String.Options_PaidFunctions_ErrorPaymentNotAllowed);
break;
case PurchaseError.AlreadyOwned:
message = GetString(Resource.String.Options_PaidFunctions_ErrorAlreadyOwned);
Preferences.Set(productId, true);
EnableOrDisableProFeatures();
break;
}
if (string.IsNullOrWhiteSpace(message))
return false;
DisplayToast(message, ToastLength.Long);
}
catch (Exception exception)
{
Crashes.TrackError(exception);
DisplayToast(GetString(Resource.String.Options_PaidFunctions_ErrorAppStoreUnavailable), ToastLength.Long);
}
finally
{
await billing.DisconnectAsync();
}
return false;
}
private async Task RestorePurchases()
{
var currentConnectivity = Connectivity.NetworkAccess;
var restorePurchasesResults = new List<bool>();
if (currentConnectivity == NetworkAccess.Internet)
{
restorePurchasesResults.Add(await WasItemPurchased(GetString(Resource.String.Options_PaidFunctions_PurchaseTemplatesAndMoreButtons)));
restorePurchasesResults.Add(await WasItemPurchased(GetString(Resource.String.Options_PaidFunctions_PurchaseCustomResources)));
restorePurchasesResults.Add(await WasItemPurchased(GetString(Resource.String.Options_PaidFunctions_PurchaseDisplayWebpageAfterVote)));
if (restorePurchasesResults.Contains(true))
{
DisplayToast(GetString(Resource.String.Options_PaidFunctions_PurchasesRestored), ToastLength.Long);
EnableOrDisableProFeatures();
}
else
{
if (string.IsNullOrEmpty(RestorePurchasesStatusMessage))
RestorePurchasesStatusMessage = GetString(Resource.String.Options_PaidFunctions_PurchasesNotFound);
DisplayToast(RestorePurchasesStatusMessage, ToastLength.Long);
}
}
else
{
DisplayToast(GetString(Resource.String.Options_InternetUnavailable), ToastLength.Long);
}
}
private async Task<string> GetProductPrice(string productId)
{
var billing = CrossInAppBilling.Current;
try
{
var connected = await billing.ConnectAsync(ItemType.InAppPurchase);
if (!connected)
{
return string.Empty;
}
var item = await billing.GetProductInfoAsync(ItemType.InAppPurchase, productId);
if (item != null)
return item.ToList()[0].LocalizedPrice;
}
catch (InAppBillingPurchaseException purchaseEx)
{
var message = string.Empty;
switch (purchaseEx.PurchaseError)
{
case PurchaseError.AppStoreUnavailable:
message = GetString(Resource.String.Options_PaidFunctions_ErrorAppStoreUnavailable);
break;
case PurchaseError.BillingUnavailable:
message = GetString(Resource.String.Options_PaidFunctions_ErrorBillingUnavailable);
break;
case PurchaseError.PaymentInvalid:
message = GetString(Resource.String.Options_PaidFunctions_ErrorPaymentInvalid);
break;
case PurchaseError.PaymentNotAllowed:
message = GetString(Resource.String.Options_PaidFunctions_ErrorPaymentNotAllowed);
break;
}
if (string.IsNullOrWhiteSpace(message))
return string.Empty;
DisplayToast(message, ToastLength.Long);
}
catch (Exception exception)
{
Crashes.TrackError(exception);
}
finally
{
await billing.DisconnectAsync();
}
return string.Empty;
}
And i have to do similar function for the Amazon store like the API details here:
https://developer.amazon.com/docs/cross-platform-plugins/cpp-use-the-iap-plugin-for-xamarin.html
However i dont even know where to start to convert those functions, Amazon API confuse me, can someone help me?
|
|
|
|
|
We are more than willing to help those that are stuck: but that doesn't mean that we are here to do it all for you! We can't do all the work, you are either getting paid for this, or it's part of your grades and it wouldn't be at all fair for us to do it all for you.
So we need you to do the work, and we will help you when you get stuck. That doesn't mean we will give you a step by step solution you can hand in!
Start by explaining where you are at the moment, and what the next step in the process is. Then tell us what you have tried to get that next step working, and what happened when you did.
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
Well i cant understand the API, at all and that is why i dont have code to demonstrate. Can you give me an example of a successful purchase and a check if a purchase exist already?
What is this function: GetPurchaseUpdates? Update to what?
What is the Response of the Purchase function? How i can know of a purchase was successful? Where i can find a list will all possible responses?
|
|
|
|
|
If you are trying to handle anything to do with real money - and you are - then you shouldn't be getting code (or anything else) from a "random website"!
Never, ever, accept code from a insecure website to handle anything to do with real money.
You do not know who is giving you the code, you do not know what it does, you do not know that it places the monies correctly into the appropriate account, without passing the details to any third parties.
Only get such code from Amazon themselves - the scope for fraud otherwise is far too large. And remember, you personally could be liable for any monies lost if your action is seen to be negligent - which getting your code from a public forum would most certainly be!
So start looking for API tutorials which explain how to do it, and then check that against the official API documentation. You need to understand this stuff if you are going to use it - or you could well end up coding from a cell ...
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
I ask for an example of an API i dont know where this danger that will put you in a cell come from :P
|
|
|
|
|
|