Warum wollt ihr ihm denn immer andere Lösungen aufdrängen?
Hier ist gültiger C# Code, der genau das macht was er will.
Zum Laufen lassen braucht man eine Form, einen Button und eine Textbox.
Delphi-Quellcode:
private void button1_Click(object sender, EventArgs e)
{
// Initialisieren
string[][] nummern = new string[4][];
nummern[0] = new string[] { "2345", "3456", "4567", "5678" };
nummern[1] = new string[] { "8568", "7933", "2473", "3839" };
nummern[2] = new string[] { "5648", "2214", "3839", "2847" };
nummern[3] = new string[] { "3738", "6454", "3949", "8394" };
string serial = "";
Random generator = new Random();
// Generieren
for (int i = 0; i < nummern.Length; i++)
{
int r = generator.Next(nummern[i].Length);
serial += nummern[i][r];
if (i != nummern.Length - 1)
{
serial += "-";
}
}
// Ausgeben
textBox1.Text = serial;
}
Noch ein Button und noch eine Textbox, um die Seriennummer auch wieder zu überprüfen:
Delphi-Quellcode:
private void button2_Click(object sender, EventArgs e)
{
// Einlesen
string serial = textBox1.Text;
// Initialisieren
string[][] nummern = new string[4][];
nummern[0] = new string[] { "2345", "3456", "4567", "5678" };
nummern[1] = new string[] { "8568", "7933", "2473", "3839" };
nummern[2] = new string[] { "5648", "2214", "3839", "2847" };
nummern[3] = new string[] { "3738", "6454", "3949", "8394" };
// Überprüfen
bool correct = true;
string[] parts = serial.Split(new char[] { '-' });
for (int i = 0; i < parts.Length; i++)
{
bool partFound = false;
for (int j = 0; j < nummern[i].Length; j++)
{
if (nummern[i][j] == parts[i])
{
partFound = true;
}
}
correct &= partFound;
}
// Ausgeben
if (correct)
{
textBox2.Text = "Die Seriennummer ist ok";
}
else
{
textBox2.Text = "Die Seriennummer ist falsch";
}
}
Ich habe mir erlaubt, das in C# zu schreiben. Immerhin gibt es C# ja auch von Borland
Ich hab das mal absichtlich in zwei völlig unabhängige Funktionen gepackt. Immerhin soll das später jamal in zwei unterschiedlichen Programmen laufen.
Gruß, Thomas
Thomas W.