Einzelnen Beitrag anzeigen

Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.164 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: wie kann man globale Flags in eine Rechenoperation wande

  Alt 13. Jan 2008, 16:25
Hallo zusammen,

vielen Dank euch beiden, es scheint zu funktionieren...


Hier mein Testcode für alle interessierten:
Delphi-Quellcode:
unit Test_Pseudo_Parse_Add_or_Sub;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

type
  TOperation = (opUnknown, opAdd, opSub);
  TMyRec = record
    Zahl: Integer; //Zahlenwert
    Calc_Operation: TOperation; // undefiniert, Addition oder Subtraktion
  end;

function doCalc(const Arr: array of TMyRec; var Ergebnis: Integer): Boolean;
var
  i: Integer;
begin
  Result := false;
  Ergebnis := 0;
  if Length(Arr) < 1 then
    Exit;
  //Operator des 1. Elements wird ignoriert
  Ergebnis := Arr[Low(Arr)].Zahl;
  //die folgenden Elemente werden je nach Wert von Calc_Operation addiert oder subtrahiert
  for i := Succ(Low(Arr)) to High(Arr) do
  begin
    if Arr[i].Calc_Operation = opAdd then
      Inc(Ergebnis, Arr[i].Zahl)
    else if Arr[i].Calc_Operation = opSub then
      Dec(Ergebnis, Arr[i].Zahl)
  end;
  Result := True;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  MyArray: array[0..4] of TMyRec;
  Erg: Integer;
begin
  FillChar(MyArray, SizeOf(MyArray), 0);
  MyArray[0].Zahl := 15;
  MyArray[1].Zahl := 10;
  MyArray[2].Zahl := 24;
  MyArray[3].Zahl := 51;
  MyArray[4].Zahl := 20;
  MyArray[1].Calc_Operation := opAdd;
  MyArray[2].Calc_Operation := opSub;
  MyArray[3].Calc_Operation := opAdd;
  MyArray[4].Calc_Operation := opAdd;
  doCalc(MyArray, Erg);
  ShowMessage(IntToStr(Erg));
  // Ergebnis ist in diesem Beispiel 21 (15+10-24+"nichts"+20)
end;

end.
Ich hoffe ich habe alles richtig umgesetzt.


Allen noch einen schönen Sonntag!
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat