| 
					
							
        
    
        
						
			 | 
			
			
					    
					
        
         
          
         
	
            | Konverter bestemt char i array Fra : Tomas . | 
  Dato :  07-02-07 18:45 |  
  |   
            Hejsa
 
 Jeg har brug for at konvertere en værdi i en streng til et kommatal,
 hvordan gør man det lettest?
 Bør man bruge et array i stedet og så søge efter et komma i strengen
 for at finde ud af, om tallet er et kommatal?
 Hvis jeg finder det, hvordan får jeg så hele tallet ud af strengen, så
 det kan bruges beregningsmæssigt?
 Har prøvet med atoi(), men kan ikke få den til at virke.
 
 -- 
 Mvh.
 
 Tomas
 
  
            
             |   |   
            
        
 
            
         
           Bertel Brander (07-02-2007) 
         
	
            | Kommentar Fra : Bertel Brander | 
  Dato :  07-02-07 20:02 |  
  |  
 
            Tomas . skrev:
 > Hejsa
 > 
 > Jeg har brug for at konvertere en værdi i en streng til et kommatal,
 > hvordan gør man det lettest?
 Jeg er ikke sikker på at jeg forstår.
 > Bør man bruge et array i stedet og så søge efter et komma i strengen
 > for at finde ud af, om tallet er et kommatal?
 Det er (sandsynligvis) bedre at bruge end std::string
 > Hvis jeg finder det, hvordan får jeg så hele tallet ud af strengen, så
 > det kan bruges beregningsmæssigt?
 > Har prøvet med atoi(), men kan ikke få den til at virke.
 Måske:
 #include <string>
 #include <sstream>
 #include <iostream>
 template <typename T>
 bool FromString(T &aValue, const std::string &aStr)
 {
     std::stringstream ss(aStr);
     return ss >> aValue;
 }
 int main()
 {
     std::string S = "123.321";
     double D;
     if(FromString(D, S))
        std::cout << "Det var et validt komma tal: " << D << std::endl;
     else
        std::cout << "Det var ikke et tal" << std::endl;
 }
 -- 
 Just another homepage:
 http://damb.dk
But it's mine - Bertel
            
              |   |   
            
        
 
            
         
           Tomas . (07-02-2007) 
         
	
            | Kommentar Fra : Tomas . | 
  Dato :  07-02-07 21:03 |  
  |   
            Bertel Brander <bertel@post4.tele.dk> skrev:
 >Tomas . skrev:
 >> Hejsa
 >> 
 >> Jeg har brug for at konvertere en
 >>værdi i en streng til et kommatal,
 >> hvordan gør man det lettest?
 >
 >Jeg er ikke sikker på at jeg forstår.
 
 Jeg modtager en streng, som visse steder indeholder nogle tal. 
 Jeg har således forsøgt mig med et array af chars, hvori der 
 både indgår tal og bogstaver. Her har jeg lavet en forløkke, der 
 gennemstepper hver celle i arrayet. Hvis den så finder '+' 
 eller '-' er den efterfølgende karakter altså et tal. Her opstår 
 der så samtidigt et andet problem, da jeg har svært ved at få 
 fortegnet med - Jeg har forsøgt blot at gange min int med -1, 
 men det ville den heller ikke acceptere, så jeg er lidt på 
 herrens mark.
 
 >
 >> Bør man bruge et array i stedet
 >>og så søge efter et komma i strengen
 >> for at finde ud af, om tallet er
 >>et kommatal?
 >
 >Det er (sandsynligvis) bedre at
 >bruge end std::string
 
 Det er også min sparsomme erfaring
 >
 >> Hvis jeg finder det, hvordan får
 >>jeg så hele tallet ud af strengen, så
 >> det kan bruges beregningsmæssigt?
 >> Har prøvet med atoi(), men kan
 >>ikke få den til at virke.
 >
 >
 -- 
 Mvh.
 
 Tomas
 
  
            
             |   |   
            
        
 
            
         
           Tomas . (07-02-2007) 
         
	
            | Kommentar Fra : Tomas . | 
  Dato :  07-02-07 21:54 |  
  |  
 
            >Måske:
 >#include <string>
 >#include <sstream>
 >#include <iostream>
 >
 >template <typename T>
 >bool FromString(T &aValue, const std::string &aStr)
 >{
 >    std::stringstream ss(aStr);
 >    return ss >> aValue;
 >}
 >
 >int main()
 >{
 >    std::string S = "123.321";
 >    double D;
 >    if(FromString(D, S))
 >       std::cout << "Det var et validt komma tal: " << D << 
 >    std::endl;
 >    else
 >       std::cout << "Det var ikke et tal" << std::endl;
 >}
 Jeg forstår desværre ikke helt programmet - Det kan så heller 
 ikke compile   
-- 
 Mvh.
 Tomas
            
              |   |   
            
        
 
            
         
            Kent Friis (07-02-2007) 
         
	
            | Kommentar Fra : Kent Friis | 
  Dato :  07-02-07 22:04 |  
  |  
 
            Den 07 Feb 2007 20:54:23 GMT skrev Tomas .:
 >>Måske:
 >>#include <string>
 >>#include <sstream>
 >>#include <iostream>
 >>
 >>template <typename T>
 >>bool FromString(T &aValue, const std::string &aStr)
 >>{
 >>    std::stringstream ss(aStr);
 >>    return ss >> aValue;
 >>}
 >>
 >>int main()
 >>{
 >>    std::string S = "123.321";
 >>    double D;
 >>    if(FromString(D, S))
 >>       std::cout << "Det var et validt komma tal: " << D << 
 >>    std::endl;
 >>    else
 >>       std::cout << "Det var ikke et tal" << std::endl;
 >>}
 >
 > Jeg forstår desværre ikke helt programmet - Det kan så heller 
 > ikke compile   
Det har nok noget at gøre med at selvom gruppen hedder
 dk.edb.programmering.c, er der nogen der tror at spørgsmål automatisk
 drejer sig om C++ hvis ikke man nævner at det er C det drejer sig om.
 Mvh
 Kent
 -- 
 "So there I was surrounded by all these scary creatures
 They were even scarier than what Microsoft call features"
 - C64Mafia: Forbidden Forest (Don't Go Walking Slow).
            
              |   |   
            
        
 
            
         
             Tomas . (07-02-2007) 
         
	
            | Kommentar Fra : Tomas . | 
  Dato :  07-02-07 22:34 |  
  |  
 
            Kent Friis <nospam@nospam.invalid> skrev:
 >Den 07 Feb 2007 20:54:23 GMT skrev Tomas .:
 >>>Måske:
 >>>#include <string>
 >>>#include <sstream>
 >>>#include <iostream>
 >>>
 >>>template <typename T>
 >>>bool FromString(T &aValue, const std::string &aStr)
 >>>{
 >>>    std::stringstream ss(aStr);
 >>>    return ss >> aValue;
 >>>}
 >>>
 >>>int main()
 >>>{
 >>>    std::string S = "123.321";
 >>>    double D;
 >>>    if(FromString(D, S))
 >>>       std::cout << "Det var et validt komma tal: " << D << 
 >>>    std::endl;
 >>>    else
 >>>       std::cout << "Det var ikke et tal" << std::endl;
 >>>}
 >>
 >> Jeg forstår desværre ikke helt programmet - Det kan så heller 
 >> ikke compile   
>
 >Det har nok noget at gøre med at selvom gruppen hedder
 >dk.edb.programmering.c, er der nogen der tror at spørgsmål 
 automatisk
 >drejer sig om C++ hvis ikke man nævner at det er C det drejer 
 sig om.
 >
 Det er nu ellers en C++ compiler, jeg anvender; men det er i 
 linkeren, den går galt, kan jeg se, men det hjælper mig desværre 
 ikke til at få hentet tal ud af en streng og konvertere disse 
 til reelle tal, der kan behandles   
-- 
 Mvh.
 Tomas
            
              |   |   
            
        
 
            
         
              Bertel Brander (07-02-2007) 
         
	
            | Kommentar Fra : Bertel Brander | 
  Dato :  07-02-07 22:40 |  
  |  
 
            Tomas . skrev:
 > Det er nu ellers en C++ compiler, jeg anvender; men det er i 
 > linkeren, den går galt, kan jeg se, men det hjælper mig desværre 
 > ikke til at få hentet tal ud af en streng og konvertere disse 
 > til reelle tal, der kan behandles   
Hvordan oversætter du?
 Hvilke fejl får du?
 Og hvad er det helt nøjagtigt du vil?
 -- 
 Just another homepage:
 http://damb.dk
But it's mine - Bertel
            
              |   |   
            
        
 
            
         
               Tomas . (07-02-2007) 
         
	
            | Kommentar Fra : Tomas . | 
  Dato :  07-02-07 22:56 |  
  |  
 
            Bertel Brander <bertel@post4.tele.dk> skrev:
 >Tomas . skrev:
 >> Det er nu ellers en C++ compiler, jeg anvender; men det er i 
 >> linkeren, den går galt, kan jeg se, men det hjælper mig 
 desværre 
 >> ikke til at få hentet tal ud af en streng og konvertere disse 
 >> til reelle tal, der kan behandles   
>
 >Hvordan oversætter du?
 Jeg ved ikke, hvad der var galt før, nu virker det 
 selvfølgelig   
>
 >Og hvad er det helt nøjagtigt du vil?
 Jeg vil bare gennemsøge en streng af tal og bogstaver og så 
 hente de forskellige tal ud til forskellige variabler, så 
 tallene kan bruges til beregninger.
 Eks.
 "I denne tekst indgår tallene 4 og -8,3 som variabler."
 Så vil jeg i en forløkke fra 0 til max karakterer checke hver 
 karakter, om denne er et tal. Findes et tal, skal næste karakter 
 testes for at se, om dette også er et tal - så skal det forrige 
 tal ganges med 10 og det netop fundne tal lægges til osv. Hvis 
 man i stedet får et komma skal de efterfølgende decimaler ganges 
 med 0,1 og så lægges til det tidligere resultat. 
 Endelig, hvis der findes et minus, skal tallet være negativt.
 Håber, det hjalp på forståelsen af de tanker, jeg har i 
 hovedet   
-- 
 Mvh.
 Tomas
            
              |   |   
            
        
 
            
         
                Bertel Brander (07-02-2007) 
         
	
            | Kommentar Fra : Bertel Brander | 
  Dato :  07-02-07 23:23 |  
  |  
 
            Tomas . skrev:
 > Eks.
 > 
 > "I denne tekst indgår tallene 4 og -8,3 som variabler."
 > 
 > Så vil jeg i en forløkke fra 0 til max karakterer checke hver 
 > karakter, om denne er et tal. Findes et tal, skal næste karakter 
 > testes for at se, om dette også er et tal - så skal det forrige 
 > tal ganges med 10 og det netop fundne tal lægges til osv. Hvis 
 > man i stedet får et komma skal de efterfølgende decimaler ganges 
 > med 0,1 og så lægges til det tidligere resultat. 
 > Endelig, hvis der findes et minus, skal tallet være negativt.
 Man kunne starte med:
 #include <string>
 #include <sstream>
 #include <iostream>
 template <typename T>
 bool FromString(T &aValue, const std::string &aStr)
 {
     std::stringstream ss(aStr);
     return (ss >> aValue) && ss.eof();
 }
 int main()
 {
     std::string Inp = "I denne tekst indgår tallene 4 og -8.3 som 
 variabler.";
     std::string::size_type n, p = 0;
     while((n = Inp.find_first_of("0123456789-", p)) != std::string::npos)
     {
        std::string::size_type e = Inp.find_first_not_of("0123456789-.", n);
        double Number;
        FromString(Number, Inp.substr(n, e - n));
        std::cout << "Found: " << Number << std::endl;
        p = e + 1;
     }
 }
 Jeg tillod mig at bruge . i stedet for ,
 -- 
 Just another homepage:
 http://damb.dk
But it's mine - Bertel
            
              |   |   
            
        
 
            
         
                Mogens Hansen (08-02-2007) 
         
	
            | Kommentar Fra : Mogens Hansen | 
  Dato :  08-02-07 10:08 |  
  |   
            
"Tomas ." <huttelbuttel@hotmail.com> wrote in message 
 news:11708856570.933563906048438@dtext.news.tele.dk...
 [8<8<8<]
 > Jeg vil bare gennemsøge en streng af tal og bogstaver og så
 > hente de forskellige tal ud til forskellige variabler, så
 > tallene kan bruges til beregninger.
 > Eks.
 >
 > "I denne tekst indgår tallene 4 og -8,3 som variabler."
 >
 > Så vil jeg i en forløkke fra 0 til max karakterer checke hver
 > karakter, om denne er et tal. Findes et tal, skal næste karakter
 > testes for at se, om dette også er et tal - så skal det forrige
 > tal ganges med 10 og det netop fundne tal lægges til osv. Hvis
 > man i stedet får et komma skal de efterfølgende decimaler ganges
 > med 0,1 og så lægges til det tidligere resultat.
 > Endelig, hvis der findes et minus, skal tallet være negativt.
 Hvorfor ikke bruge de indbyggede funktioner til at konvertere en ascii 
 streng til et tal ?
 Det er typisk mere bøvlet end man forstiller sig, at få lavet sådan noget 
 parsing rigtigt.
 >
 > Håber, det hjalp på forståelsen af de tanker, jeg har i
 > hovedet   
I C++ kan man skrive:
 #include <locale>
 #include <strstream>
 int main()
 {
    using namespace std;
    const char*   text = "I denne tekst indgår tallene 4 og -8,3 som 
 variabler.";
    locale      loc("dan");   // Danish locale - platform specific
    for(const char* p =text; p && *p;)   {
       istrstream   is(p);
       is.imbue(loc);
       double   value;
       is >> value;
       if(is)   {
          // a floating point value has been extracted from the stream
          p += static_cast<int>(is.tellg());
       }
       else   {
          ++p;
       }
    }
 }
 tilsvarende i C kan man skrive
 #include <locale.h>
 #include <stdlib.h>
 int main()
 {
    const char*      text = "I denne tekst indgår tallene 4 og -8,3 som 
 variabler.";
    const char*      p = text;
    setlocale(LC_ALL, "dan"); // Danish locale - platform specific
    while(p && *p)   {
       char*      end;
       double      value = strtod(p, &end);
       if(p != end)   {
          // a floating point value has been read
          p = end;
       }
       else   {
          ++p;
       }
    }
    return 0;
 }
 Venlig hilsen
 Mogens Hansen 
            
              |   |   
            
        
 
            
         
                 Tomas . (08-02-2007) 
         
	
            | Kommentar Fra : Tomas . | 
  Dato :  08-02-07 13:27 |  
  |  
 
            Hej Alle
 Jeg vil gerne takke jer alle for den store hjælp, I har ydet 
 mig. Jeg er kommet godt afsted, og kan hente dele ud af 
 strengene nu - Mangler at afprøve doubleværdier, men det burde 
 være en formsag - håber jeg   
-- 
 Mvh.
 Tomas
            
              |   |   
            
        
 
            
         
           Ukendt (07-02-2007) 
         
	
            | Kommentar Fra : Ukendt | 
  Dato :  07-02-07 20:10 |  
  |   
            On 07 Feb 2007 17:44:53 GMT, Tomas . <huttelbuttel@hotmail.com> wrote:
 
 >Jeg har brug for at konvertere en værdi i en streng til et kommatal,
 >hvordan gør man det lettest?
 Prøv med  atof(), den konverterer til "floating point" = kommatal.
 
 >Har prøvet med atoi(), men kan ikke få den til at virke.
 Ja, den konverterer til "integers" = heltal.
 
 /Thomas
  
            
             |   |   
            
        
 
            
         
           Tomas . (07-02-2007) 
         
	
            | Kommentar Fra : Tomas . | 
  Dato :  07-02-07 20:53 |  
  |  
 
            Thomas Lykkeberg <noway> skrev:
 >On 07 Feb 2007 17:44:53 GMT, Tomas
 >. <huttelbuttel@hotmail.com> wrote:
 >
 >>Jeg har brug for at konvertere en
 >>værdi i en streng til et kommatal,
 >>hvordan gør man det lettest?
 >Prøv med  atof(), den konverterer
 >til "floating point" = kommatal.
 Problemet er stadig det samme som ved atoi() - jeg prøvede med 
 atoi((char*) streng[i]), men det fik blot programmet til at gå 
 ned, idet atoi blev kaldt i funktionen   
>
 >>Har prøvet med atoi(), men kan
 >>ikke få den til at virke.
 >Ja, den konverterer til "integers" = heltal.
 Jo jo, det ved jeg, men det var bare for at prøve med integers 
 inden jeg gav mig i lag med floating point.
 -- 
 Mvh.
 Tomas
            
              |   |   
            
        
 
            
         
            Kent Friis (07-02-2007) 
         
	
            | Kommentar Fra : Kent Friis | 
  Dato :  07-02-07 21:02 |  
  |  
 
            Den 07 Feb 2007 19:53:03 GMT skrev Tomas .:
 > Thomas Lykkeberg <noway> skrev:
 >>On 07 Feb 2007 17:44:53 GMT, Tomas
 >>. <huttelbuttel@hotmail.com> wrote:
 >>
 >>>Jeg har brug for at konvertere en
 >>>værdi i en streng til et kommatal,
 >>>hvordan gør man det lettest?
 >>Prøv med  atof(), den konverterer
 >>til "floating point" = kommatal.
 >
 > Problemet er stadig det samme som ved atoi() - jeg prøvede med 
 > atoi((char*) streng[i]), men det fik blot programmet til at gå 
 > ned, idet atoi blev kaldt i funktionen   
Hov stop lige en halv, du kan da ikke cast'e en char til en char
 pointer. Kort fortalt ville det gøre at 'A' bliver til 65 (ascii-værdi),
 og din pointer ville dermed pege på adresse 65 i RAM. Når du så
 forsøger at lave det der ligger på adresse 65 om til et kommatal,
 crasher dit program fordi adresse 65 er langt uden for programmets
 adresse-område. (For simplicitetens skyld ser jeg lige bort fra
 at det nok er en 32-bit CPU og ikke en 8-bit CPU vi snakker om).
 Hvad er det præcist du vil? Lave et ciffer om til et kommatal?
 Hvorfor så kommatal og ikke integer, i et ciffer kan der ikke være
 plads til både tal og komma. Så prøv lige at forklare lidt mere
 præcist hvad du egentlig forsøger på.
 Mvh
 Kent
 -- 
 "So there I was surrounded by all these scary creatures
 They were even scarier than what Microsoft call features"
 - C64Mafia: Forbidden Forest (Don't Go Walking Slow).
            
              |   |   
            
        
 
            
         
             Tomas . (07-02-2007) 
         
	
            | Kommentar Fra : Tomas . | 
  Dato :  07-02-07 21:07 |  
  |  
 
            Kent Friis <nospam@nospam.invalid> skrev:
 >Den 07 Feb 2007 19:53:03 GMT skrev Tomas .:
 >> Thomas Lykkeberg <noway> skrev:
 >>>On 07 Feb 2007 17:44:53 GMT, Tomas
 >>>. <huttelbuttel@hotmail.com> wrote:
 >>>
 >>>>Jeg har brug for at konvertere en
 >>>>værdi i en streng til et kommatal,
 >>>>hvordan gør man det lettest?
 >>>Prøv med  atof(), den konverterer
 >>>til "floating point" = kommatal.
 >>
 >> Problemet er stadig det samme som
 >>ved atoi() - jeg prøvede med 
 >> atoi((char*) streng[i]), men det
 >>fik blot programmet til at gå 
 >> ned, idet atoi blev kaldt i
 >>funktionen   
>
 >Hov stop lige en halv, du kan da
 >ikke cast'e en char til en char
 >pointer. Kort fortalt ville det
 >gøre at 'A' bliver til 65
 >(ascii-værdi),
 >og din pointer ville dermed pege på
 >adresse 65 i RAM. Når du så
 >forsøger at lave det der ligger på
 >adresse 65 om til et kommatal,
 >crasher dit program fordi adresse
 >65 er langt uden for programmets
 >adresse-område. (For simplicitetens
 >skyld ser jeg lige bort fra
 >at det nok er en 32-bit CPU og ikke
 >en 8-bit CPU vi snakker om).
 Jeps - lige min opservation, som også forklaret længere oppe.
 Adresse 65... Vil det så ikke blive i ROM? - Vil især forklare 
 crashet!
 >
 >Hvad er det præcist du vil? Lave et
 >ciffer om til et kommatal?
 >Hvorfor så kommatal og ikke
 >integer, i et ciffer kan der ikke være
 >plads til både tal og komma. Så
 >prøv lige at forklare lidt mere
 >præcist hvad du egentlig forsøger på.
 Se svar længere oppe   
-- 
 Mvh.
 Tomas
            
              |   |   
            
        
 
            
         
              Kent Friis (07-02-2007) 
         
	
            | Kommentar Fra : Kent Friis | 
  Dato :  07-02-07 21:35 |  
  |  
 
            Den 07 Feb 2007 20:06:48 GMT skrev Tomas .:
 > Kent Friis <nospam@nospam.invalid> skrev:
 >>Den 07 Feb 2007 19:53:03 GMT skrev Tomas .:
 >>> Thomas Lykkeberg <noway> skrev:
 >>>>On 07 Feb 2007 17:44:53 GMT, Tomas
 >>>>. <huttelbuttel@hotmail.com> wrote:
 >>>>
 >>>>>Jeg har brug for at konvertere en
 >>>>>værdi i en streng til et kommatal,
 >>>>>hvordan gør man det lettest?
 >>>>Prøv med  atof(), den konverterer
 >>>>til "floating point" = kommatal.
 >>>
 >>> Problemet er stadig det samme som
 >>>ved atoi() - jeg prøvede med 
 >>> atoi((char*) streng[i]), men det
 >>>fik blot programmet til at gå 
 >>> ned, idet atoi blev kaldt i
 >>>funktionen   
>>
 >>Hov stop lige en halv, du kan da
 >>ikke cast'e en char til en char
 >>pointer. Kort fortalt ville det
 >>gøre at 'A' bliver til 65
 >>(ascii-værdi),
 >>og din pointer ville dermed pege på
 >>adresse 65 i RAM. Når du så
 >>forsøger at lave det der ligger på
 >>adresse 65 om til et kommatal,
 >>crasher dit program fordi adresse
 >>65 er langt uden for programmets
 >>adresse-område. (For simplicitetens
 >>skyld ser jeg lige bort fra
 >>at det nok er en 32-bit CPU og ikke
 >>en 8-bit CPU vi snakker om).
 >
 > Jeps - lige min opservation, som også forklaret længere oppe.
 > Adresse 65... Vil det så ikke blive i ROM? - Vil især forklare 
 > crashet!
 De 65 gælder kun for en 8-bit CPU. Den vil reelt tage fire bytes
 (4 bytes a 8 bit = 32 bit) og læse som en adresse, så det vil være
 en helt anden adresse.
 ROM gør ikke at tingene crasher, en ROM-chip ignorerer bare skrivning.
 Men på en moderne CPU (80386, 68020,...) har man noget der hedder en
 MMU, som styrer bl.a. hvilket program der må skrive hvor, så de ikke
 overskriver hinanden. Når den siger stop, resulterer det i en
 segmentation fault eller General Protection Fault.
 MMU'en gør også at OS'et kan placere tingene som det har lyst til i
 programmets adresse-område, så selvom adresse 65 rent fysisk er nede
 midt i interrupt-tabellen (og altså ikke ROM), kan tingene sagtens
 være mappet rundt så det faktisk er RAM. Det ville dog være smartere
 at lade den første page (de første 4 kilobyte (på x86)) være enten
 unmapped eller read-only, for at fange null-pointer fejl.
 Mvh
 Kent
 -- 
 "So there I was surrounded by all these scary creatures
 They were even scarier than what Microsoft call features"
 - C64Mafia: Forbidden Forest (Don't Go Walking Slow).
            
              |   |   
            
        
 
            
         
               Arne Vajhøj (08-02-2007) 
         
	
            | Kommentar Fra : Arne Vajhøj | 
  Dato :  08-02-07 03:27 |  
  |  
 
            Kent Friis wrote:
 > Den 07 Feb 2007 20:06:48 GMT skrev Tomas .:
 >> Kent Friis <nospam@nospam.invalid> skrev:
 >>> Den 07 Feb 2007 19:53:03 GMT skrev Tomas .:
 >>>> Problemet er stadig det samme som
 >>>> ved atoi() - jeg prøvede med 
 >>>> atoi((char*) streng[i]), men det
 >>>> fik blot programmet til at gå 
 >>>> ned, idet atoi blev kaldt i
 >>>> funktionen   
>>> Hov stop lige en halv, du kan da
 >>> ikke cast'e en char til en char
 >>> pointer. Kort fortalt ville det
 >>> gøre at 'A' bliver til 65
 >>> (ascii-værdi),
 >>> og din pointer ville dermed pege på
 >>> adresse 65 i RAM. Når du så
 >>> forsøger at lave det der ligger på
 >>> adresse 65 om til et kommatal,
 >>> crasher dit program fordi adresse
 >>> 65 er langt uden for programmets
 >>> adresse-område. (For simplicitetens
 >>> skyld ser jeg lige bort fra
 >>> at det nok er en 32-bit CPU og ikke
 >>> en 8-bit CPU vi snakker om).
 >> Jeps - lige min opservation, som også forklaret længere oppe.
 >> Adresse 65... Vil det så ikke blive i ROM? - Vil især forklare 
 >> crashet!
 > 
 > De 65 gælder kun for en 8-bit CPU. Den vil reelt tage fire bytes
 > (4 bytes a 8 bit = 32 bit) og læse som en adresse, så det vil være
 > en helt anden adresse.
 Umiddelbart vil jeg da mene at hvis streng[i] er 'A' så
 vil (char*)streng[i] give adressen 65 på 8,16,32 og 64 bit
 CPU'er - forudsat at computeren bruger ASCII således at 'A' er 65.
 Arne
            
              |   |   
            
        
 
            
         
                Kent Friis (08-02-2007) 
         
	
            | Kommentar Fra : Kent Friis | 
  Dato :  08-02-07 17:28 |  
  |  
 
            Den Wed, 07 Feb 2007 21:27:28 -0500 skrev Arne Vajhøj:
 > Kent Friis wrote:
 >> Den 07 Feb 2007 20:06:48 GMT skrev Tomas .:
 >>> Kent Friis <nospam@nospam.invalid> skrev:
 >>>> Den 07 Feb 2007 19:53:03 GMT skrev Tomas .:
 >>>>> Problemet er stadig det samme som
 >>>>> ved atoi() - jeg prøvede med 
 >>>>> atoi((char*) streng[i]), men det
 >>>>> fik blot programmet til at gå 
 >>>>> ned, idet atoi blev kaldt i
 >>>>> funktionen   
>>>> Hov stop lige en halv, du kan da
 >>>> ikke cast'e en char til en char
 >>>> pointer. Kort fortalt ville det
 >>>> gøre at 'A' bliver til 65
 >>>> (ascii-værdi),
 >>>> og din pointer ville dermed pege på
 >>>> adresse 65 i RAM. Når du så
 >>>> forsøger at lave det der ligger på
 >>>> adresse 65 om til et kommatal,
 >>>> crasher dit program fordi adresse
 >>>> 65 er langt uden for programmets
 >>>> adresse-område. (For simplicitetens
 >>>> skyld ser jeg lige bort fra
 >>>> at det nok er en 32-bit CPU og ikke
 >>>> en 8-bit CPU vi snakker om).
 >>> Jeps - lige min opservation, som også forklaret længere oppe.
 >>> Adresse 65... Vil det så ikke blive i ROM? - Vil især forklare 
 >>> crashet!
 >> 
 >> De 65 gælder kun for en 8-bit CPU. Den vil reelt tage fire bytes
 >> (4 bytes a 8 bit = 32 bit) og læse som en adresse, så det vil være
 >> en helt anden adresse.
 >
 > Umiddelbart vil jeg da mene at hvis streng[i] er 'A' så
 > vil (char*)streng[i] give adressen 65 på 8,16,32 og 64 bit
 > CPU'er - forudsat at computeren bruger ASCII således at 'A' er 65.
 Det har du da vist ret i, det andet kræver lige et par stjerner mere.
 Mvh
 Kent
 -- 
 "So there I was surrounded by all these scary creatures
 They were even scarier than what Microsoft call features"
 - C64Mafia: Forbidden Forest (Don't Go Walking Slow).
            
              |   |   
            
        
 
            
         
           Michael Rasmussen (07-02-2007) 
         
	
            | Kommentar Fra : Michael Rasmussen | 
  Dato :  07-02-07 20:11 |  
  |   
            
  
            
             |   |   
            
        
 
            
         
           Michael Rasmussen (07-02-2007) 
         
	
            | Kommentar Fra : Michael Rasmussen | 
  Dato :  07-02-07 21:26 |  
  |   |   |   
            
        
 
    
 
					
					 
			 | 
			
				
        
			 |