Einzelnen Beitrag anzeigen

Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#1

Probleme mit der Umgekerten Polnischen Notation...

  Alt 6. Jul 2009, 18:24
Hallo!
Ich habe ein Problem mit dieser procedure:
Delphi-Quellcode:
procedure SortTokensToUPN;
var tmp:array of string;
    i:integer;
begin
  // gleiche Länge wie Tokens:
  SetLength(tmp,Length(Tokens));
  // ersten beiden übernemen:
  tmp[0]:=Tokens[0];
  tmp[1]:=Tokens[1];
  // rest durchgehen und Sortieren:
  for i:=2 to High(Tokens) do
  begin
    // Steht i am Ende der Funktion?
    if i<High(Tokens) then
    // Ist es eine Zahl und steht links vom Operator?
      if TryStrToInt(Tokens[i],hallo) and (not TryStrToInt(Tokens[i+1],hallo)) then
        tmp[i]:=Tokens[i] else
      // steht i am Anfang der Funktion?
      if i>2 then
      begin
        if TryStrToInt(Tokens[i],hallo) and TryStrToInt(Tokens[i-1],hallo) then
          tmp[i-1]:=Tokens[i];
      end else
      // Ist es ein Operrator?
      if not TryStrToInt(Tokens[i],hallo) then
        if i=High(Tokens) then
        begin
        // Ein Operrator ist am ende der Funktion => Syntax Error!
          Writeln('Unerwarteter Opperator: "'+Tokens[i]+'" => Syntax Error!');
          exit;
        end else
        tmp[i+1]:=Tokens[i];
  end;
  for i:=0 to High(Tokens) do
    Tokens[i]:=tmp[i];
end;
Das Ziel dieser Procedure ist es das ein array in dem z.b. folgendes steht:
tst
=
1
+
2

( jede Zeile ein Eintrag)
Es in das hier umzuwandeln:
tst
=
1
2
+

Doch unerklärlicherweise steht in dem array danach anscheinend nur folgendes:
tst
=
1

Hat einer von euch eine ahnung warum das so ist???

gruß Teekeks
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat