C# EAN Code Programmieren

pitey

Lt. Junior Grade
Dabei seit
Juli 2008
Beiträge
280
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

Zuletzt bearbeitet:

JWebR

Newbie
Dabei seit
Dez. 2009
Beiträge
3
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:

pitey

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Juli 2008
Beiträge
280
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?
 

HaGGi.13

Ensign
Dabei seit
März 2008
Beiträge
215
Einfach das eingelesene zu Int convertieren...

Convert.ToInt32(deineCharZahl);
 

awaiK

Cadet 3rd Year
Dabei seit
Feb. 2009
Beiträge
39
[...]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.
 

pitey

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Juli 2008
Beiträge
280
Top