You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

74 lines
2.3 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
namespace BarcodeLib
{
abstract class BarcodeCommon
{
protected string Raw_Data = "";
protected List<string> _Errors = new List<string>();
public string RawData
{
get { return this.Raw_Data; }
}
public List<string> Errors
{
get { return this._Errors; }
}
public void Error(string ErrorMessage)
{
this._Errors.Add(ErrorMessage);
throw new Exception(ErrorMessage);
}
internal static bool CheckNumericOnly(string Data)
{
//This function takes a string of data and breaks it into parts and trys to do Int64.TryParse
//This will verify that only numeric data is contained in the string passed in. The complexity below
//was done to ensure that the minimum number of interations and checks could be performed.
//early check to see if the whole number can be parsed to improve efficency of this method
long value = 0;
if (Data != null)
{
if (Int64.TryParse(Data, out value))
return true;
}
else
{
return false;
}
//9223372036854775808 is the largest number a 64bit number(signed) can hold so ... make sure its less than that by one place
int STRING_LENGTHS = 18;
string temp = Data;
string[] strings = new string[(Data.Length / STRING_LENGTHS) + ((Data.Length % STRING_LENGTHS == 0) ? 0 : 1)];
int i = 0;
while (i < strings.Length)
{
if (temp.Length >= STRING_LENGTHS)
{
strings[i++] = temp.Substring(0, STRING_LENGTHS);
temp = temp.Substring(STRING_LENGTHS);
}//if
else
strings[i++] = temp.Substring(0);
}
foreach (string s in strings)
{
if (!Int64.TryParse(s, out value))
return false;
}//foreach
return true;
}//CheckNumericOnly
}//BarcodeVariables abstract class
}//namespace