AGB  ·  Datenschutz  ·  Impressum  







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

Effizienteste Datenverarbeitung eines Strings

Ein Thema von hedie · begonnen am 19. Okt 2011 · letzter Beitrag vom 21. Okt 2011
 
Furtbichler
(Gast)

n/a Beiträge
 
#12

AW: Effizienteste Datenverarbeitung eines Strings

  Alt 20. Okt 2011, 21:22
Eine gelungene Umsetzung des ersten Vorschlags, nur das auf das Prüfen von 'G' verzichtet wird.
Ne.Das "G" wurde nicht vergessen.
Lesen müsste man können. "nur auf DAS PRÜFEN von 'G'..." PRÜFEN! PRÜFEN!
Auf das ---> PRÜFEN <--- wurde verzichtet.

Nix 'vergessen'. hab ich nicht geschrieben und auch nicht gemeint. Klar soweit

Delphi-Quellcode:
Procedure ProcessInputString (const s: String);
Var
  state : TParserStates; // stWaitForTagOpen, stWaitForGee, stEatFirstNumber stEatSecondNumber;
  number1, number2 : String;
  i : Integer;
  
  
begin
  state := stWaitForTagOpen;
  number1 := '';
  number2 := '';

  For i:=1 to length (s) do
    case state of
      stWaitForTagOpen :
        if s[i] = '<Then
          state := stWaitForGee
        else
          Raise EParserException.Create('"<" expected');
       stWaitForGee :
        case s[i] of
          'G' : state := stEatFirstNumber;
          '>' : state := stEndOfInput;
          else Raise EParserException.CreateF('">" or "G" expected');
        end;
      stEatFirstNumber :
        if s[i] = ',Then
          state := stEatSecondNumber
        else
          number1 := number1 + s[i];
      stEatSecondNumber :
        if s[i] = ';then begin
           state := stWaitForGee;
           ProcessNumbers (number1, number2);
           number1 := '';
           number2 := '';
         end
         else
            number2 := number2 + s[i];
     end;

  if state <>stEndOfInput Then
    Raise EParserError ('Unexpected EOF');
end;
Getippt und nicht getestet.

Sollte eigentlich am Schnellsten sein (ok, mit PChar vielleicht noch schneller), denn es gibt nur eine Schleife und man geht nur 1x von vorne nach hinten.

Geändert von Furtbichler (20. Okt 2011 um 21:29 Uhr)
  Mit Zitat antworten Zitat
 


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 08:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz