|
Not sure about the first question but regarding the company name I'd say just give them your full name. They need to put something into the company field, I don't think they actually care whether you have a company or not.
|
|
|
|
|
Super Lloyd wrote: I want a .pfx that can sign my .msi file! Would it be a "Microsoft Authenticode"? It may be all of them, simply different suppliers and different prices.
Super Lloyd wrote: (what would be the 'division' anyway?) Just one of the things that is shown on the certificate. Shows roughly the same things as an internet-certificate. Go to GMail, click on the lock next to the URL and check it out.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
Hi,
My instructor and I disagree on a mark that she gave me an assignment on generics. According to the requirements stated below, could someone tell me if my could meets these requirements.
Here is the requirements:
Write a generic method, Search, that implements the linear-search algorithm. Method Search
should compare the search key with each element in its array parameter until the search key is
found or until the end of the array is reached. If the search key is found, return its location in the
array; otherwise, return -1. Write a test app that inputs and searches an int array and a double array.
And here is my code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GenericsTest
{
class MyArrayList
{
int CountInt2 { get; set;}
int CountInt1 { get; set;}
int CountDouble2 { get; set; }
int CountDouble1 { get; set; }
int[] integerArray;
double[] doubleArray;
public MyArrayList()
{
CountInt1 = 0;
CountInt2 = 0;
CountDouble1 = 0;
CountDouble2 = 0;
integerArray = new int[5];
doubleArray = new double[5];
}
public void SetArrayInfo(int number)
{
integerArray[CountInt1] = number;
++CountInt1;
}
public void SetArrayInfo(double number)
{
doubleArray[CountDouble1] = number;
++CountDouble1;
}
public int Search<T>(T number)
{
if (number.GetType() == typeof(int))
{
while (CountInt2 <= integerArray.Length)
{
if (CountInt2 < integerArray.Length)
if (integerArray[CountInt2].Equals(number))
{
Console.Clear();
Console.WriteLine("The number " + integerArray[CountInt2] + " was found in array index number: " + CountInt2);
Console.WriteLine();
CountInt2 = 0;
return -2;
}
++CountInt2;
}
return -1;
}
else if (number.GetType() == typeof(double))
{
while (CountDouble2 <= doubleArray.Length)
{
if (CountDouble2 < doubleArray.Length)
if (doubleArray[CountDouble2].Equals(number))
{
Console.Clear();
Console.WriteLine("The double " + doubleArray[CountDouble2] + " was found in array index number: {0}", CountDouble2);
Console.WriteLine();
CountDouble2 = 0;
return -2;
}
++CountDouble2;
}
}
return -1;
}
}
class DriverProgram
{
static void Main(string[] args)
{
int numberInt;
double numberDouble;
int choice = 0;
MyArrayList myArrayList = new MyArrayList();
myArrayList.SetArrayInfo(8);
myArrayList.SetArrayInfo(9);
myArrayList.SetArrayInfo(5);
myArrayList.SetArrayInfo(10);
myArrayList.SetArrayInfo(21);
myArrayList.SetArrayInfo(7.7);
myArrayList.SetArrayInfo(3.30);
myArrayList.SetArrayInfo(9.80);
myArrayList.SetArrayInfo(12.3);
myArrayList.SetArrayInfo(21.58);
do
{
Console.WriteLine("1 Get Integer Array Index");
Console.WriteLine("2 Get Double Array Index");
Console.WriteLine("3 Exit");
try
{
Console.Write("Choose one: ");
choice = Convert.ToInt32(Console.ReadLine());
}
catch (FormatException e)
{
Console.WriteLine("You have entered an invalid type");
Console.WriteLine("Error: " + e);
}
if (choice == 1)
{
try
{
Console.Clear();
Console.Write("Enter integere number: ");
numberInt = Convert.ToInt32(Console.ReadLine());
int answer = myArrayList.Search<int>(numberInt);
if (answer == -1)
Console.WriteLine("The ID number entered was not found.");
}
catch (FormatException e)
{
Console.WriteLine("You have entered an invalid type");
Console.WriteLine("Error: " + e);
}
}
else if (choice == 2)
{
try
{
Console.Clear();
Console.Write("Enter double number: ");
numberDouble = Convert.ToDouble(Console.ReadLine());
int answer = myArrayList.Search<double>(numberDouble);
if (answer == -1)
Console.WriteLine("The ID number entered was not found.");
}
catch (FormatException e)
{
Console.WriteLine("You have entered an invalid type");
Console.WriteLine("Error: " + e);
}
}
else if (choice == 3) { Console.Clear(); }
else
{
Console.Clear();
Console.WriteLine("The choice you made is Invalid");
}
Console.WriteLine("Press any key to continue....");
Console.ReadKey();
Console.Clear();
} while (choice != 3);
}
}
}
</<pre lang="c#"> pre>
According to my instructor's feed back, my work was among some of the worst work submitted in class. I think my program meets my instructors requirements stated above.
Any feedback would be welcome.
If I do not thank you right away it is because I'm busy in school
Thanks,
Truck53
|
|
|
|
|
Your search function isn't generic at all. You are specifically testing for int and double inside the function. What happens if you call
SearchArray<long>(5L) or
SearchArray<String>("Test") ?
I think you were supposed to write a function with a signature like this:
int SearchArray<T>(T[] Array, T itemSearched)
You could have coded this function as member of the DriverProgramClass. Or if you insisted on creating an extra class MyArrayList for encapsulation, it should have been Generic (i.e. with a T[] member, instead of int[] and double[]) as well.
Besides, what does this comment about the student array mean? Did you just copy this somewhere else and slightly change it?
The good thing about pessimism is, that you are always either right or pleasently surprised.
|
|
|
|
|
|
Hello,
Thank you for answering my question. I was particularly interested with your commit. You said that my method was not generic at all and that I should have used a generic array of type T. Does the generic array create two types of arrays and access them at run time? If this is true, I could understand why people might be a little edgy with my code. But, if you look at the requirements, the instructor says that two arrays are to be used, one for double and one for integer; At least that is what I interpreted when I read "an integer and a double"The sentence she uses does not explicitly imply the use of a generic array. In fact, the only time the word generic is used is when the instructor refers to the Search method. And, the only way I could think of using two arrays of the type specified by my instructor is to compare the type passed by the my generic method at run time then traverse through the array and compare the key to the value in the array. I learned in college that a lot of projects fail because developers fail to meet the user’s requirements. I think assuming that a generic array was to be used when according to what the instructor wrote, the use of two array of the primitive type integer and double was implied. I would encourage you to take a good look at what my instructor wrote in the requirements and not just go by what you think is the best way to code. Hit me up and let me know what you think. If I’m wrong then I’m wrong.
And, about the student commented out code. I originally had a class with properties that held information like student ID and Student name etc. But, I took a second look at the instructor’s requirements and decided to keep it simple. I hope this answers your question.
Peace,
Truck53
Peace.
|
|
|
|
|
The instructor is right, by definition: and arguing with him / her will not help in the future.
Remember: the same person will be marking your next effort, so annoying them is not a good idea.
And that is poor: it doesn't look like you understood the concept of generics at all - or indeed even tried particularly hard. I can't comment on if it's absolutely the worst: I've only seen two examples from your class (the other is here[^] and at least the other tried to use generics a little.
I suggest that you have a close look at all the comments on the other example, and the rather more mature way in which your classmate handled it...
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
OriginalGriff wrote: The instructor is right, by definition So, everything coming from an instructor (let us not even go into whether it is a qualified instructor) is the absolute truth?
I advocate the oppsite; you should question everything.
OriginalGriff wrote: Remember: the same person will be marking your next effort, so annoying them is not a good idea. Never understood how people accept that; the one that is teaching cannot be the one judging. That's why exams are checked by other people.
OriginalGriff wrote: it doesn't look like you understood the concept of generics at all That is a nice obeservation. How much would he learn from his instructors' code review?
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
When it comes to marking the assignment, the instructor is always right - simply because they are doing the marking and nothing you can say or do will alter the mark they will give you (except to move it downward)
If you want to pass the course, you have to pander to the tutor's beliefs and submit work that agrees with that - or you will receive a failing grade. It may not be nice; it may not be helpful in the real world; but that is the politics of the situation, and challenging that is not going to help in real terms.
Teachers are wrong - frequently very, very wrong - but there is nothing to be gained by pointing that out to them, any more than there is with the Police!
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
OriginalGriff wrote: When it comes to marking the assignment, the instructor is always right No one holds the absolute truth.
OriginalGriff wrote: you have to pander to the tutor's beliefs and submit work that agrees with that That's how it works, yes. You be nice to the idiot and you pass. Sorry, but I'm paying for knowledge, not for someone to grade how kind I am. And yes, I made some "teachers" leave
OriginalGriff wrote: but that is the politics of the situation, and challenging that is not going to help in real terms. Accepting that as a reality is morally wrong.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
|
Dude, look. Asking this question is just stupid. If you think our opinion is ever going to sway your instructors is ridiculous.
Again, your code doesn't meet the requirements, not even close.
You've asked this question twice now and come on on the losing end every time. The problem is not with the instructor. It's with you.
|
|
|
|
|
|
Your instructor is right. You could implement this in a dozen lines, using a generic. I'd award you extra credit if you catered for doubles not being 100% accurate in comparisons (there are ways to do this in a generic fashion).
|
|
|
|
|
|
Urgent assist required. Can someone help pls, i have scanned wifi data in C# that i have split into required form MAC,SSID and RSSi . i want when i push a button the results are inserted into an sql table that i already created. and if i push the buton again it stops inserting. I have tried several methods and could not get it to work, Will appreciate assist
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports;
namespace WICED_SERIALPORT_TEST
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string[] ports = SerialPort.GetPortNames();
foreach (string port in ports)
{
comboBox1.Items.Add(port);
}
}
string t;
private void button2_Click(object sender, EventArgs e)
{
t = comboBox1.Text.ToString();
sErial(t);
}
SerialPort sp;
void sErial(string Port_name)
{
sp = new SerialPort(Port_name, 115200, Parity.None, 8, StopBits.One);
sp.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
sp.Open();
}
private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
string msg = string.Empty;
bool canCont = false;
while (!canCont)
{
msg += sp.ReadLine();
if (msg.Contains("Scan complete "))
{
canCont = true;
}
}
string[] msgArr = msg.Split('\r');
Invoke(new Action(() => listBox1.Items.Clear()));
List<string[]> list = new List<string[]>();
List<Networks> Scan = new List<Networks>();
for (int i = 0; i < msgArr.Length; i++)
{
list.Add(msgArr[i].Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries));
}
for (int i = 0; i < list.Count; i++)
{
if (i > 2)
{
if (list[i].Length > 4)
{
int numOfSplits = 0;
List<string> tempList = new List<string>();
for (int ii = 0; ii < list[i].Length; ii++)
{
if (numOfSplits < 6)
{
string[] temp1 = list[i][ii].Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
numOfSplits += temp1.Length;
for (int iii = 0; iii < temp1.Length; iii++)
{
tempList.Add(temp1[iii]);
}
}
else
{
tempList.Add(list[i][ii]);
}
}
Scan.Add(new Networks()
{
ID = Convert.ToInt32(tempList[0]),
NetworkType = tempList[1],
MAC = tempList[2],
RSSi = Convert.ToInt32(tempList[3]),
Rate = Convert.ToDouble(tempList[4]),
Channel = Convert.ToInt32(tempList[5]),
Security = tempList[6],
SSID = tempList[7],
});
}
}
}
if (msg != String.Empty)
{
Invoke(new Action(() => richTextBox1.AppendText(msg)));
}
for (int i = 0; i < Scan.Count; i++)
{
Invoke(new Action(() => listBox1.Items.Add(Scan[i].MAC)));
Invoke(new Action(() => listBox2.Items.Add(Scan[i].RSSi)));
Invoke(new Action(() => listBox3.Items.Add(Scan[i].SSID)));
msg = string.Empty;
list.Clear();
}
}
private void richTextBox1_TextChanged(object sender, EventArgs e)
{
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void richTextBox2_TextChanged(object sender, EventArgs e)
{
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void Form1_Load(object sender, EventArgs e)
{
}
public SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\AP_SCAN_DATA.mdf;Integrated Security=True");
private void button3_Click(object sender, EventArgs e)
{
using (SqlConnection connection = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\AP_SCAN_DATA.mdf;Integrated Security=True"))
{
using (SqlCommand command = new SqlCommand())
{
command.Connection = connection;
command.CommandType = CommandType.Text;
command.CommandText = "INSERT into LOCATIONSCAN ((Scan[i].SSID),(Scan[i].MAC), (Scan[i].RSSi)) VALUES (@SSID, @MAC, @RSSi)";
command.Parameters.AddWithValue("@SSID", listBox1);
command.Parameters.AddWithValue("@MAC", listBox2);
command.Parameters.AddWithValue("@RSSi",listBox3);
try
{
connection.Open();
int recordsAffected = command.ExecuteNonQuery();
}
catch(SqlException)
{
}
finally
{
connection.Close();
}
}
}
}
}
}
|
|
|
|
|
If I understood your question correctly, you should execute the insert statement inside the DataReceivedHandler method. Currently the user needs to push a button in order for a single insert to happen.
So remodel the logic so that the insert happens whenever you have new data ready AND you have a permission to insert (from a boolean variable). The button then again should just toggle the permission. So for this you need a single boolean variable and the button click will change it's value.
|
|
|
|
|
Sorry if i was not clear with my question .
The WIFI AP scan data is been received every 1500 millicesonds i want to push the button once to insert data into rows this could be upto 20 rows. and i want to then push the button to stop inserting data
i hope this made it a little clearer
|
|
|
|
|
Thanks for the additional explanation but again, shouldn't you use the button to toggle the saving on and off and let the data gathering insert the data whenever new data arrives?
|
|
|
|
|
|
Have the button toggle a Boolean value (i.e. On/Off), and at the end of the routine that reads the data, put a conditional call that calls the Add routine only if the Boolean value is set to on.
=========================================================
I'm an optoholic - my glass is always half full of vodka.
=========================================================
|
|
|
|
|
|
Olumide Adebayo wrote: command.CommandText = "INSERT into LOCATIONSCAN ((Scan[i].SSID),(Scan[i].MAC), (Scan[i].RSSi)) VALUES (@SSID, @MAC, @RSSi)";
That doesn't look like a valid SQL query. What are the column names in your LOCATIONSCAN table?
I would expect to see something more like:
INSERT into LOCATIONSCAN (SSID, MAC, RSSi) VALUES (@SSID, @MAC, @RSSi)
INSERT (Transact-SQL)[^]
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
thanks for the correction, i will try INSERT (Transact-SQL)
|
|
|
|
|
using UnityEngine;
using System.Collections;
namespace InaneGames {
public class HangMan : MonoBehaviour
{
public char str;
public GUISkin guiskin;
public enum State
{
IDLE,
NEXT_WORD
};
public static bool check;
public static bool FW=true;
public bool rc;
private State m_state;
public float nextWordTime = 1;
private float m_nextWordTime;
public TextAsset[] fileTexts;
public int scoreBonusPerLetter = 15;
public int scorePunishPerWrongLetter = 20;
public char mysteryLetter = '!';
private bool resetLivesOnCorrectWord = true;
public int lives;
public int maxQuestions = 8;
public string freeLetters = " ";
public AudioClip onCorrectAC;
public AudioClip onIncorrectAC;
public AudioClip onRightWordAC;
public AudioClip onLoseAC;
private string[] m_words;
private bool[] m_gotLetter;
private string m_currentWord;
private int m_wordIndex=0;
private string m_word = "";
private int m_lives;
private int m_score = 0;
public int highScore;
private HangManGUI m_hangManGUI;
public bool chooseRandomCategory = true;
public void OnGUI () {
GUI.skin = guiskin;
GUI.Label ( new Rect (0, 0, 300, 40), " High Scores:" + highScore);
}
public void Awake()
{
highScore = PlayerPrefs.GetInt ("High Score", 0);
m_lives = lives;
int r = Misc.getIntValue("CATEGORY_INDEX");
if(chooseRandomCategory)
{
r = Random.Range(0,fileTexts.Length-1);
}
TextAsset ta = fileTexts[r];
string str = ta.text.ToUpper();
m_words = str.Split('\n');
m_words = randomizeArray(m_words);
m_hangManGUI = gameObject.GetComponent<HangManGUI>();
setNextWord();
if(m_hangManGUI)
{
m_hangManGUI.init( ta.name, m_word,m_lives);
}
}
public bool checkIfWordContainsLetter(string str)
{
rc = false;
for(int i=0; i<m_currentWord.Length; i++)
{
string tmp = m_currentWord[i].ToString();
if(tmp.Equals(str))
{
m_gotLetter[i]=true;
rc=true;
}
}
return rc;
}
public void fillWord()
{
m_word = "";
for(int i=0; i<m_currentWord.Length; i++)
{
if(m_gotLetter[i])
{
m_word += m_currentWord[i];
}else{
m_word += mysteryLetter.ToString();
}
}
}
void Update()
{
if(m_score > highScore){
highScore = m_score;
PlayerPrefs.SetInt("High Score", highScore);
PlayerPrefs.Save();
}
if(m_state == State.NEXT_WORD)
{
handleNextWord();
}
}
void handleNextWord()
{
m_nextWordTime-=Time.deltaTime;
if(m_nextWordTime<0)
{
m_state = State.IDLE;
setNextWord();
if(resetLivesOnCorrectWord)
{
m_lives = lives;
}
m_hangManGUI.setLives(m_lives);
}
}
void onCorrectLetter()
{
fillWord ();
m_hangManGUI.setWord( m_word );
if(m_word.Equals(m_currentWord))
{
if(audio)
{
audio.PlayOneShot(onRightWordAC);
}
m_score += m_currentWord.Length * scoreBonusPerLetter;
m_hangManGUI.setScore (m_score);
m_nextWordTime = nextWordTime;
m_state = State.NEXT_WORD;
}else{
if(audio)
{
audio.PlayOneShot(onCorrectAC);
}
}
}
void onIncorretLetter()
{
m_lives--;
m_hangManGUI.setLives ( m_lives );
m_score -= scorePunishPerWrongLetter;
m_hangManGUI.setScore(m_score);
if (m_lives > 0) {
if (audio) {
audio.PlayOneShot (onIncorrectAC);
}
} else {
if (audio) {
audio.PlayOneShot (onLoseAC);
}
m_hangManGUI.setGameOver (false);
}
}
public void selectLetter(string str)
{
if(checkIfWordContainsLetter(str))
{
onCorrectLetter();
}else{
onIncorretLetter();
}
}
void setNextWord()
{
if(m_wordIndex+1 <= m_words.Length)
{
m_currentWord = m_words[m_wordIndex++];
m_word = "";
m_gotLetter = new bool[m_currentWord.Length];
for(int i=0; i<m_currentWord.Length; i++)
{
m_gotLetter[i]=false;
if(isFreeLetter(m_currentWord[i]))
{
m_word += m_currentWord[i].ToString();
m_gotLetter[i]=true;
}else{
m_word += mysteryLetter.ToString();
}
}
m_hangManGUI.clearButtons();
m_hangManGUI.setWord(m_word);
}else{
m_hangManGUI.setGameOver(true);
}
}
public bool isFreeLetter(char str)
{
rc = false;
for (int i=0; i<freeLetters.Length; i++) {
if (str == freeLetters [i]) {
rc = true;
}
}
return rc;
}
public bool wholeword(){
rc = true;
for (int j=0; j<freeLetters.Length; j++) {
if (str == freeLetters[j]){
rc=true;
}}
return rc;}
string[] randomizeArray(string[] arr)
{
for (int i = arr.Length - 1; i > 0; i--)
{
int r = Random.Range(0,i);
var tmp = arr[i];
arr[i] = arr[r];
arr[r] = tmp;
}
return arr;
}
}
}
|
|
|
|
|