C# EAN Code Programmieren

pitey

Lt. Junior Grade
Registriert
Juli 2008
Beiträge
284
Hallo,

habe ein kleines Problem. Ich versuche einen EAN Code Leser zu programmieren und weiß einfach nicht mehr weiter.

Es soll eine 12 stellige zahl eingegeben werden. Diese wird dann in einem String abgespeichert und wie ein array jede einzelne zahl aus dem string ausgelesen. doch bei mir liest er die zahlen falsch aus und ich weiß nicht warum? vielleicht weiß es einer von euch. Habe auch mal ein Bild hochgeladen, da liest er anstatt die '1' ein eine 49!

hier mal der code:

string eingabe;
int[] arr1 = new int[11];
int[] arr2 = new int[12];
int summe1 = 0;
int summe2 = 0;
int summe3 = 0;
int rest = 0;
int ziffer = 0;

private void bt_rechnen_Click(object sender, EventArgs e)
{
eingabe = tx_eingabe.Text;
for (int i = 0; i < eingabe.Length; i = i + 2)
{
arr1 = eingabe * 1;
summe1 = summe1 + arr1;
}
for (int i = 1; i < eingabe.Length; i = i + 2)
{
arr2 = eingabe * 3;
summe2 = summe2 + arr2;
}
summe3 = summe2 + summe1;
rest = summe3 % 10;
if (rest == 0)
{
ziffer = 0;
tx_ausgabe.Text=Convert.ToString(ziffer);
}
else
{
ziffer = rest;
tx_ausgabe.Text = Convert.ToString(ziffer);
}
 

Anhänge

  • bild1.jpg
    bild1.jpg
    163,4 KB · Aufrufe: 375
Zuletzt bearbeitet:
Das Problem liegt daran, dass deine "Zahlen" keine echten Zahlen sind. In Wirklichkeit sind es Zeichen, die nach ASCII-Tabelle kodiert sind. D.h. um die tatsächliche nummerrische Zahl, die eingegeben wurde zu erhalten, musst du jedes mal 48 abziehen.

->

arr1 = (eingabe -48) * 1;

und

arr2 = (eingabe - 48) * 3;


PS.: zur Verdeutlichung noch mal die ASCII-Tabelle:
http://www.tcp-ip-info.de/tcp_ip_und_internet/ascii.htm
 
Zuletzt bearbeitet:
danke für die schnelle antwort. habe ich ja gar net mal dran gedacht.
werde ich gleich mal so ausprobieren.

nur aus neugier: wie könnte ich es so einlesen das er die 1 einliest und nicht die ascii code?
 
Einfach das eingelesene zu Int convertieren...

Convert.ToInt32(deineCharZahl);
 
pitey schrieb:
[...]nur aus neugier: wie könnte ich es so einlesen das er die 1 einliest und nicht die ascii code?
Du musst den String "Parsen".
int eingabe = int.Parse(tx_eingabe.Text);
Die Methode int.Parse() bekommt eine Stringübergeben und versucht diesen in eine Integer Zahl umzuwandeln (parsen). Solltest du aber einen String wie z.B "ABC" übergeben, schlägt das parsen natürlich fehl.
 

Ähnliche Themen

Antworten
10
Aufrufe
747
Antworten
10
Aufrufe
886
A
Antworten
39
Aufrufe
2.179
array123
A
Zurück
Oben