AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Stimmt diese Vereinfachung?

Ein Thema von Die Muhkuh · begonnen am 14. Mai 2008 · letzter Beitrag vom 14. Mai 2008
Antwort Antwort
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#1

Stimmt diese Vereinfachung?

  Alt 14. Mai 2008, 00:32
Hi,

ich steh grad auf dem Schlauch.

Ich hab folgendes PHP-Code:

Code:
if ($recognize_first_point) {
   if (!is_numeric($this->get_char()) && $this->get_char() != '.') {
      break;
   }
}
else if (!is_numeric($this->get_char())) {
   break;
}
Kann ich diesen hiermit vereinfachen:

Code:
if (!is_numeric($this->get_char()) && ($recognize_first_point && $this->get_char() != '.')) {
   break;
}
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#2

Re: Stimmt diese Vereinfachung?

  Alt 14. Mai 2008, 00:49
Ich glaube, das ist richtig:
Code:
if (!is_numeric($this->get_char()) && (($this->get_char() != '.') || !$recognize_first_point)
  break;
Deine Vereinfachung kann deshalb nicht stimmen, da die Bedingung immer false ist, wenn $recognize_first_point false ist; Das entspricht nicht der Ausgangsbedingung.

greetz
Mike
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Stimmt diese Vereinfachung?

  Alt 14. Mai 2008, 00:56
Hi Mike,

ja, hab's auch gerade gemerkt. Aber die Vereinfachung bringt mir jetzt leider nichts mehr, da noch ein bisschen was dazugekommen und man die Vereinfachung nicht mehr durchführen kann.

Kurze Erklärung was passieren soll. Ich bastel nen kleinen Parser in php. Zuerst mal wird alles in Token zerlegt. Nun kommen im Text folgende Fälle vor (was der Scanner findet):

<Was gefunden wird> <Rückgabe der Funktion>
  • 2 2
  • 2.00 2.00
  • 2. 2.
  • 2..0 2.

Im Moment sieht das ganze so aus:

Code:
private function recognize_number($recognize_first_point) {    
     $tmp = '';
     $point_cnt = 0;
     while (true) {
       if ($recognize_first_point) {
          if (!is_numeric($this->get_char()) && $this->get_char() != '.') {
             break;
          }
          
          if ($this->get_char() == '.') {
             $point_cnt++;
          }
          
          if ($point_cnt > 1) {
             break;
          }
       }
       else if (!is_numeric($this->get_char())) {
          break;
       }
       
         $tmp .= $this->get_char();
        $this->inc_pos();
     }
     
     return $tmp;
  }
Da kann man bestimmt auch noch was vereinfachen. Mal sehen. Noch ist ja nicht aller Tage Abend
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz