1. Converting text to integers
- Posted by James Harris <blackdog at CDC.NET> Dec 14, 1996
- 1564 views
Hello all, I need a little help. I'm trying to parse out a BLASTER environment setting with the getenv function. I am sucessful with that but I can't seem to be able to covert the values from the string to an integer or atom. I.E. "A255 I5 D3". I can parse out the 255, 5 and 3 but I can't convert them to integers (The ouput of the program is in text right now for debug purposes) include get.e global constant TRUE = 1, FALSE= 0, FAIL = -1, ENVIRONOK=1, DMACHANNEL=2, BASEPORT=3, IRQNUMBER=4, DSPVERSION=5 function CheckBlasterEnviron() --See if the Blaster enviroment is set. object environ environ = getenv("BLASTER") if length(environ) = 0 then --trival case, exists but nothing there return FAIL end if return environ end function function GetBlasterInfo() --get the Blaster Information and return a sequence with the information. sequence BlasterInfo, TempVal object env atom BasePort, IRQ integer IsMatch env = CheckBlasterEnviron() BlasterInfo = repeat(0,5) if atom(env) = -1 then return FAIL else IsMatch = 0 IsMatch = match("A",env) if IsMatch > 0 then BlasterInfo[BASEPORT]=env[IsMatch+1..IsMatch+3] IsMatch = 0 end if IsMatch = match("I",env) if IsMatch > 0 then BlasterInfo[IRQNUMBER]=env[IsMatch+1..IsMatch+1] IsMatch = 0 end if IsMatch = match("D",env) if IsMatch > 0 then BlasterInfo[DMACHANNEL]=env[IsMatch+1..IsMatch+1] IsMatch = 0 end if BlasterInfo[ENVIRONOK]=TRUE return BlasterInfo end if end function object a, c a=CheckBlasterEnviron() if atom(a) = FAIL then puts(1,"Blaster not set") else c=GetBlasterInfo() puts(1,"Blaster String is " & a & "\n") puts(1,"DMA Address is " & c[BASEPORT] & "\n") puts(1,"IRQ is " & c[IRQNUMBER] & "\n") puts(1,"DMA Channel is " & c[DMACHANNEL] & "\n") end if abort(1)
2. Re: Converting text to integers
- Posted by Jacques Deschenes <desja at QUEBECTEL.COM> Dec 14, 1996
- 1545 views
--=====================_850605912==_ At 00:05 14-12-96 -0500, you wrote: >---------------------- Information from the mail header ----------------------- >Sender: Euphoria Programming for MS-DOS <EUPHORIA at >MIAMIU.ACS.MUOHIO.EDU> >Poster: James Harris <blackdog at CDC.NET> >Subject: Converting text to integers >------------------------------------------------------------------------------- > >Hello all, > >I need a little help. I'm trying to parse out a BLASTER environment setting >with the getenv function. I am sucessful with that but I can't seem to be >able to covert the values from the string to an integer or atom. >I.E. "A255 I5 D3". I can parse out the 255, 5 and 3 but I can't convert them >to integers (The ouput of the program is in text right now for debug purposes) > > >include get.e >global constant > TRUE = 1, > FALSE= 0, > FAIL = -1, > ENVIRONOK=1, > DMACHANNEL=2, > BASEPORT=3, > IRQNUMBER=4, > DSPVERSION=5 > >function CheckBlasterEnviron() >--See if the Blaster enviroment is set. >object environ > environ = getenv("BLASTER") > if length(environ) = 0 then --trival case, exists but nothing there > return FAIL > end if > return environ >end function > >function GetBlasterInfo() >--get the Blaster Information and return a sequence with the information. >sequence BlasterInfo, TempVal >object env >atom BasePort, IRQ >integer IsMatch > >env = CheckBlasterEnviron() >BlasterInfo = repeat(0,5) >if atom(env) = -1 then > return FAIL >else > IsMatch = 0 > IsMatch = match("A",env) > if IsMatch > 0 then > BlasterInfo[BASEPORT]=env[IsMatch+1..IsMatch+3] > IsMatch = 0 > end if > IsMatch = match("I",env) > if IsMatch > 0 then > BlasterInfo[IRQNUMBER]=env[IsMatch+1..IsMatch+1] > IsMatch = 0 > end if > IsMatch = match("D",env) > if IsMatch > 0 then > BlasterInfo[DMACHANNEL]=env[IsMatch+1..IsMatch+1] > IsMatch = 0 > end if > BlasterInfo[ENVIRONOK]=TRUE > return BlasterInfo >end if >end function > >object a, c >a=CheckBlasterEnviron() >if atom(a) = FAIL then > puts(1,"Blaster not set") >else > c=GetBlasterInfo() > puts(1,"Blaster String is " & a & "\n") > puts(1,"DMA Address is " & c[BASEPORT] & "\n") > puts(1,"IRQ is " & c[IRQNUMBER] & "\n") > puts(1,"DMA Channel is " & c[DMACHANNEL] & "\n") >end if >abort(1) > I did some minor modif to your code and added to functions HexToDec() and AToI() --=====================_850605912==_ include get.e global constant TRUE = 1, FALSE= 0, FAIL = -1, ENVIRONOK=1, DMACHANNEL=2, BASEPORT=3, IRQNUMBER=4, DSPVERSION=5 function CheckBlasterEnviron() --See if the Blaster enviroment is set. object environ environ = getenv("BLASTER") if atom(environ) then return FAIL elsif length(environ) = 0 then --trivial case, exist but nothing there return FAIL else return environ end if end function function GetBlasterInfo() --get the Blaster Information and return a sequence with the information. sequence BlasterInfo, TempVal object env atom BasePort, IRQ integer IsMatch env = CheckBlasterEnviron() BlasterInfo = repeat(0,5) if atom(env) then return FAIL else IsMatch = 0 IsMatch = match("A",env) if IsMatch > 0 then BlasterInfo[BASEPORT]=env[IsMatch+1..IsMatch+3] IsMatch = 0 end if IsMatch = match("I",env) if IsMatch > 0 then BlasterInfo[IRQNUMBER]=env[IsMatch+1..IsMatch+2] -- could be 2 digits if BlasterInfo[IRQNUMBER][2] = ' ' then BlasterInfo[IRQNUMBER] = {BlasterInfo[IRQNUMBER][1]} end if IsMatch = 0 end if IsMatch = match("D",env) if IsMatch > 0 then BlasterInfo[DMACHANNEL]={env[IsMatch+1]} IsMatch = 0 end if BlasterInfo[ENVIRONOK]=TRUE return BlasterInfo end if end function function HexToDec(sequence Hex) -- convert hexadecimal to decimal -- input: Hex is hexadecimal string to convert -- output: decimal number or -1 if Hex is ill formed. integer n n = 0 for i = 1 to length(Hex) do if Hex[i] >= '0' and Hex[i] <= '9' then n = n*16 + Hex[i] - '0' elsif Hex[i] >='A' and Hex[i] <= 'F' then n = n*16 + 10 + Hex[i] - 'A' else return -1 -- ill formed hex string end if end for return n end function --HexToDec() function AToI(sequence NbStr) -- convert string to integer -- input: NbStr numerical string -- output: integer integer n,sign if NbStr[1] = '-' then sign = 1 n = 0 else sign = 0 n = NbStr[1] - '0' end if for i = 2 to length(NbStr) do n = n*10 + NbStr[i] - '0' end for if sign then return (-n) else return n end if end function -- AToI() object a, c a=CheckBlasterEnviron() if atom(a) then puts(1,"Blaster not set") else c=GetBlasterInfo() puts(1,"Blaster String is " & a & "\n") printf(1,"PORT Address is #%s (%d)\n",{c[BASEPORT],HexToDec(c[BASEPORT])}) printf(1,"IRQ is %d\n",{AToI(c[IRQNUMBER])}) printf(1,"DMA Channel is %d\n",{AToI(c[DMACHANNEL])}) end if abort(1) --=====================_850605912==_ Jacques Deschenes Baie-Comeau, Quebec Canada desja at quebectel.com --=====================_850605912==_--
3. Re: Converting text to integers
- Posted by James Harris <blackdog at CDC.NET> Dec 14, 1996
- 1529 views
>>I need a little help. I'm trying to parse out a BLASTER environment setting >>with the getenv function. I am sucessful with that but I can't seem to be >>able to covert the values from the string to an integer or atom. >>I.E. "A255 I5 D3". I can parse out the 255, 5 and 3 but I can't convert them >>to integers (The ouput of the program is in text right now for debug purposes) - snip >I did some minor modif to your code and added to functions HexToDec() and AToI() >Jacques Deschenes >Baie-Comeau, Quebec >Canada >desja at quebectel.com Thanks Jacques! I would have been pulling my hair out for a while on this one.
4. Re: Converting text to integers
- Posted by Robert Craig <72614.1667 at COMPUSERVE.COM> Dec 14, 1996
- 1547 views
- Last edited Dec 15, 1996
James (Greg?) Harris writes: > ... I'm trying to parse out a BLASTER environment setting > with the getenv function. I am sucessful with that but I can't seem to be > able to covert the values from the string to an integer or atom. > I.E. "A255 I5 D3". I can parse out the 255, 5 and 3 but I can't convert them > to integers ... In addition to Jacques conversion routines, you might find the value() function to be useful in some cases. See doc\library.doc. -- Rob Craig Rapid Deployment Software
5. Re: Converting text to integers
- Posted by James Harris <blackdog at CDC.NET> Dec 15, 1996
- 1557 views
At 10:44 PM 12/14/96 EST, you wrote: >---------------------- Information from the mail header ----------------------- >Sender: Euphoria Programming for MS-DOS <EUPHORIA at >MIAMIU.ACS.MUOHIO.EDU> >Poster: Robert Craig <72614.1667 at COMPUSERVE.COM> >Subject: Re: Converting text to integers >------------------------------------------------------------------------------- > >James (Greg?) Harris writes: Greg is my middle name. I usually go by that. >> ... I'm trying to parse out a BLASTER environment setting >> with the getenv function. I am sucessful with that but I can't seem to be >> able to covert the values from the string to an integer or atom. >> I.E. "A255 I5 D3". I can parse out the 255, 5 and 3 but I can't convert them >> to integers ... > >In addition to Jacques conversion routines, you might find >the value() function to be useful in some cases. See doc\library.doc. > >-- Rob Craig > Rapid Deployment Software Thanks. Greg.