Question

23 digit number in numeric variable

Asked by: miltonrodrigueza

Hi,

I need to store a 23 digit number in a 'numeric' variable. e.g. 20041010050500013402606
At the moment i have the string stored in a 'String' variable, However i need to convert it to a numeric type variable in order to apply a modulus 97.
I have tried with an integer variable using StrToInt(), I have tried with an Int64 variable using StrToInt64() but unfortunately it always come back with a compilation error "Integer constant too long". If i continue the execution of the program the the system throws an error message that reads "20041010050500013402606 is not a valid integer value"
I am currently using Delphi 6 enterprise edition.

I appreciate any help you can provide me with on this matter.

Cheers.

This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.

Subscribe now for full access to Experts Exchange and get

Instant Access to this Solution

  • Plus...
  • 30 Day FREE access, no risk, no obligation
  • Collaborate with the world's top tech experts
  • Unlimited access to our exclusive solution database
  • Never be left without tech help again

Subscribe Now

Asked On
2006-04-25 at 08:07:25ID21826554
Tags

numbers

Topic

Delphi Programming

Participating Experts
6
Points
350
Comments
15

Trusted by hundreds of thousands everyday for fast, accurate and reliable tech support.

  • "The time we save is the biggest benefit of Experts Exchange to Warner Bros. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange." Mike Kapnisakis, Warner Bros.
  • "Our team likes having a resource that is more secure than just using Google and most experts using this service really know their stuff. It's nice to look here first versus using Google." Dayna Sellner, Lockheed Martin
  • "Anytime that I've been stumped with a problem, 9 out of 10 times Experts Exchange has either the accepted solution or an open discussion of the potential solution to the problem." Kenny Red, eBay Inc.

See what Experts Exchange can do for you.

Got a question?

We've got the answer.

Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.

Screenshot of Experts Exchange Knowledgebase

Need individual assistance?

Our experts are ready to help.

If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.

Screenshot of Experts Exchange Knowledgebase

Want to learn from the best?

Read articles from industry experts.

Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.

Screenshot of an Article

Working on a long term project?

Store your work and research.

Save solutions to your questions, answers you’ve discovered through searching plus helpful articles in your personal knowledgebase for easy future access.

Screenshot of Experts Exchange Knowledgebase

Access the answers to your technology questions today.

Subscribe Now

30-day free trial. Register in 60 seconds.

What Makes Experts Exchange Unique?

Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Trusted by the world's most respected brands.

image of each brand's logo

Faithfully serving IT professionals since 1996.

Experts Exchange Logo

Try it out and discover for yourself.

Subscribe Now

30-day free trial. Register in 60 seconds.

Related Solutions

  1. constant in set and a case statement
    I have a number of constants defined ranging from integer values from 10 to 600, initially I left the conatants untyped. I then include the constants in a set of the form "if x in [const1, const2, const3] then". I get a compiler message on one of the constants (520)...
  2. a question about strtoint
    i want convert some string to LongWord, i use strtoint, if the string like '123456', it works, but, my string often contain some hex char, that is, it looks like '12AC98D', how can i do? the string length is 8. in c/c++, i can use this: unsigned long value; char data[9]=&quo...
  3. Int64 question
    I am looking for information about the Int64 datatype, mainly I'd like to know how its implemented by delphi. is it safe to use Int64 to optimize a routine like so: procedure Invert(Bmp:TFastDIB); var s: Integer; pc: PInt64; begin s:=Bmp.Size shr 3; pc:=Pointer(Bmp...
  4. Int64 Constants Range
    I wonder why Delphi will not allow me to input this number in my source code (as a constant): i := -9223372036854775808; "i" is defined as a Int64 and should actually be able to hold this value! Most remarkable is that this works though: i := -922337203685477580...
  5. Using Int64 as a bit container
    Hi there, I've recently written a DES (cryptography) in Delphi which uses a record to store each block (this record contains a BitCount field and an array of Bytes for the actual data). This record-method is really slow because I access these bits ALOT in sevral nested loop...
  6. c++ integer constant for the smallest integer?
    i was wondering what's the c++ constant for the smallest integer. just like Math.PI, is there a constant that represents the smallest integer value in c++? please help me if you know. thanks!

Free Tech Articles

  1. WARNING: 5 Reasons why you should NEVER fix a computer for free.
    It is in our nature to love the puzzle. We are obsessed. The lot of us. We love puzzles. We love the challenge. We thrive on finding the answer. We hate disarray. It bothers us deep in our soul. W...
  2. SCCM OSD Basic troubleshooting
    SCCM 2007 OSD is a fantastic way to deploy operating systems, however, like most things SCCM issues can sometimes be difficult to resolve due to the sheer volume of logs to sift through and the dispe...
  3. Migrate Small Business Server 2003 to Exchange 2010 and Windows 2008 R2
    This guide is intended to provide step by step instructions on how to migrate from Small Business Server 2003 to Windows 2008 R2 with Exchange 2010. For this migration to work you will need the fo...
  4. Create a Win7 Gadget
    This article shows you how to create a simple "Gadget" -- a sort of mini-application supported by Windows 7 and Vista. Gadgets can be dropped anywhere on the desktop to provide instant information, ...
  5. Outlook continually prompting for username and password
    There have been a lot of questions recently regarding Outlook prompting for a username and password whilst using Exchange 2007. There are a few reasons why this would happen and I will try to cover t...
  6. Backup Exchange 2010 Information Store using Windows Backup
    There seems to be quite a lot of confusion around the ability to backup Exchange 2010 using the built in Windows Backup feature. This stems from the omission of this feature prior to Exchange 2007 s...

Cloud Class Webinars

  1. Avoiding Bugs in Microsoft Access
    Alison Balter takes and in-depth look at avoiding bugs in Access. In this webinar you will learn about using the immediate window to debug your applications, invoking the debugger, using breakpoints to troubleshoot, stepping through code, setting the next statement to execute, ...
  2. Top 10 Best New Features in Visio 2010
    Scott Helmers gives live demonstrations of the top 10 new features in Visio 2010. This webinar will teach you how to create compelling diagrams by adding shapes to the page with a single click, linking the shapes in a diagram to data in Excel (or SQL Server, or SharePoint), ...
  3. IT Consultant Business Secrets Revealed
    Michael Munger, Experts Exchange tech pro and IT consultant, pulls back the curtain on his very successful businesses and answers question on every IT consultant and business owner should know about. He shares secrets on what he did to solve the 5 most common problems in IT, ...
  4. Disaster Recovery and Business Continuity
    Quest CTO, Mike Billon, gives an overview of the steps involved in building a dunamic disaster recovery plan. Through case studies and an examination of software/hardware tooles for monitoring and testing, you'll gain a better understandin of where you are, where you want ...
  5. Organize Your Visio Diagrams with Containers and Lists
    Scott Helmers uses cross functional flowcharts, wireframe diagrams, data graphic legends and seating charts to teach you: how to ustilize all three new structured diagram components in Visio 2010, the best practices for organizeing shapes in previous version of Visio, how to organize ...
  6. How to Us Objects, Properties, Events and Methods in Microsoft Access
    Alison Dalter gives an in-depbth look at objects, properties, events and methods in Microsoft Access. In this webinar you will learn about using the object browser, referring to objects, working with properties and methods, working with object variables, understanding the ...

Join the Community

Give a Little. Get a Lot.

Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.

Join the Community

Answers

 

by: mokulePosted on 2006-04-25 at 08:23:33ID: 16535173


do the calculation on a string data

 

by: PierreCPosted on 2006-04-25 at 08:48:01ID: 16535389

Int64 is insufficient for your needs as it ranges from
-9223372036854775808 .. 9223372036854775807

i.e. max of 19 digits, you need 23

Regards
Pierre

 

by: miltonrodriguezaPosted on 2006-04-25 at 08:57:39ID: 16535473

Hi Mokule,

I need to apply a Modulus 97 to that value and as far as i understand the function MOD requires 2 integer input parameters so i do not know how to do that calculation with a string parameter, could you please instruct me how to do that?


Many thanks.

 

by: miltonrodriguezaPosted on 2006-04-25 at 08:58:43ID: 16535489

Hi PierreC,

Thanks for the info. Do you have any ideas how can i work around this issue... maybe a user defined type or something like that.

Regards,

 

by: ciulyPosted on 2006-04-25 at 09:30:57ID: 16535725

for a string library on big integers, see my post with the code from here: http://www.experts-exchange.com/Programming/Programming_Languages/Delphi/Q_21812621.html

 

by: mokulePosted on 2006-04-25 at 09:37:05ID: 16535785

get the two highest order digits convert to integer.
if it is greater or equal 97 subtract 97 from it
The difference multiply by 10 add next digit and continue.

 

by: nou68Posted on 2006-04-25 at 09:38:34ID: 16535792

Search for representation of large integers in Pascal, you will find many implementaion

 

by: DavidBirch2dotComPosted on 2006-04-25 at 09:57:02ID: 16535923

Hi, I think this is what you are looking for

http://delphiforfun.org/Programs/Library/big_integers.htm

Operations supported are: Assign,  Add, Subtract, Multiply, Divide, Modulo, Compare, Factorial, and ConvertToDecimalString.  

It will support integers far larger than your needs

David

 

by: CodedKPosted on 2006-04-25 at 10:15:57ID: 16536107

I was just about to post the above link :)

 

by: mokulePosted on 2006-04-25 at 12:08:37ID: 16537156

By no means it's efficient.
But is it worth to install those libraries for a few lines of code?

function Modulo97(s: string): integer;
var
  val: integer;
  i: integer;
begin
  val := 0;
  if Length(s) > 0 then
    begin
    val := Ord(s[1])-Ord('0');
    i := 2;
    while i <= Length(s) do
      begin
      val := 10*val+Ord(s[i])-Ord('0');
      val := val mod 97;
      Inc(i);
      end;
    end;
  Result := val;
end;

 

by: mokulePosted on 2006-04-25 at 12:13:13ID: 16537221

A little bit simpler version.
I've assumed it's positive and I don't check for valid chars.

function Modulo97(s: string): integer;
var
  val: integer;
  i: integer;
begin
  val := 0;
  if Length(s) > 0 then
    begin
    i := 1;
    while i <= Length(s) do
      begin
      val := 10*val+Ord(s[i])-Ord('0');
      val := val mod 97;
      Inc(i);
      end;
    end;
  Result := val;
end;

 

by: mokulePosted on 2006-04-25 at 12:22:44ID: 16537321

ok. my final version

function Modulo97(s: string): integer;
var
  val: integer;
  i: integer;
begin
  val := 0;
  for i := 1 to Length(s) do
    begin
    val := 10*val+Ord(s[i])-Ord('0');
    val := val mod 97;
    end;
  Result := val;
end;

 

by: ciulyPosted on 2006-04-25 at 13:13:13ID: 16537933

>But is it worth to install those libraries for a few lines of code?

there is nothing to install for my code, for example (I didn't look at the others) It's just a copy paste in a unit and that's that :)

 

by: mokulePosted on 2006-04-25 at 14:08:52ID: 16538640

> ciuly
sorry to be awkward :(
I appreciate a lot of work, but Your solution makes no real sens.
It's so slow You can't calculate modulo on 9 digit numbers. not speaking of 23.

 

by: ciulyPosted on 2006-04-26 at 01:16:45ID: 16541829

hm... you have a point here :) I actually designed it for big numbers (a AND b being big numbers) in which case it works pretty good.
well, my bad. never mind my code, it's not for this particular issue :D

20120131-EE-VQP-002

3 Ways to Join

30-Day Free Trial

The Experts

98% positive feedback on 31,087 answers since March 2000. angeliii is a Microsoft Most Valuable Professional for his work with MS SQL Server & Develoment.

He has also proven his knowledge of Visual Basic Programming, PHP Scripting and Oracle Databases.

The Experts

97% positive feedback on 10,752 answers since July 2000. lrmoore has more than 18 years experience in the networking industry.

The six-time Mircosoft MVPs specialties include firewalls, virtual private networking, and network management.

Testimonials

"...and excellent source for support... Kind of like having your very own IT dept." Electriciansnet

Testimonials

"I was apprehensive at signing up at first. However... it has already made my life as an IT administrator much easier." JaCrews

Testimonials

"WOW! You guys have great, active, and knowledgeable people on here." moore50

Business Clients

Business Clients

In the Press

"If you’ve got a question... Experts Exchange can supply an answer.”

In the Press

"...an invaluable aid for both IT professionals and those who require tech support."

In the Press

"where IT professionals provide quick answers on just about any topic"

Business Account Plans

Loading Advertisement...